Can`t parse attributes defined by macro
还没有人认领这个 Issue。
评估
调研方向
打开 src/CppAst.Tests/TestAttributes.cs 中的 TestStructAttributes,并使用提供的 MIDL_INTERFACE 输入,在启用 ParseAttributes 和 ParseMacros 的情况下运行它。跟踪 ParseMacros 和 ParseAttributes 如何处理宏展开后的 uuid;当测试解析该 struct 并返回预期的 uuid 属性(如 regex workaround 之后一样)时,即完成。
由索引模型根据 Issue 内容生成。
描述
I try to parse DirectX headers and parser doesn't handle uuid attribute if it is defined by macro:
MIDL_INTERFACE("9d06dffa-d1e5-4d07-83a8-1bb123f2f841")
ID3D11Device2 : public ID3D11Device1
As a workaround, replacing MIDL_INTERFACE by regex works and parser returns correct attributes
struct __declspec(uuid("9d06dffa-d1e5-4d07-83a8-1bb123f2f841")) __declspec(novtable)
ID3D11Device2 : public ID3D11Device1
Both ParseAttributes and ParseMacros are set to true
You can reproduce it if you replace input text in TestStructAttributes and enable macros parsing.
@"
#ifndef DECLSPEC_NOVTABLE
#if (_MSC_VER >= 1100) && defined(__cplusplus)
#define DECLSPEC_NOVTABLE __declspec(novtable)
#else
#define DECLSPEC_NOVTABLE
#endif
#endif
#ifndef DECLSPEC_UUID
#if (_MSC_VER >= 1100) && defined(__cplusplus)
#define DECLSPEC_UUID(x) __declspec(uuid(x))
#else
#define DECLSPEC_UUID(x)
#endif
#endif
#define MIDL_INTERFACE(x) struct DECLSPEC_UUID(x) DECLSPEC_NOVTABLE
MIDL_INTERFACE(""9d06dffa-d1e5-4d07-83a8-1bb123f2f841"") Test{
int a;
int b;
};"
- 主要语言
- C#
- 星标
- 623
- 派生
- 79
- 平均合并
- 2 天 2 小时
- 30 天内合并 PR
- 1
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
xoofx/CppAst.NET 的其他 Issue
-
CppContainerList throws "The item belongs already to a container" when parsing VTK 9.5 headers Body未关闭
难度 3/5 1-2 天 新手友好度 55/100
xoofx/CppAst.NET#122 ·
-
难度 2/5 1-3 小时 新手友好度 35/100
xoofx/CppAst.NET#117 ·
-
question
难度 5/5 一周以上 新手友好度 25/100
xoofx/CppAst.NET#115 · 3 条评论 ·
-
question
难度 4/5 3-5 天 新手友好度 38/100
xoofx/CppAst.NET#95 · 4 条评论 ·
-
NullReferenceException when parsing instantiation of a previously partially specialised template未关闭bug
难度 2/5 1-3 小时 新手友好度 35/100
xoofx/CppAst.NET#77 · 6 条评论 ·
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 88/100
microsoft/vscode-docs#10499 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
python triage
难度 2/5 1-3 小时 新手友好度 72/100
microsoft/semantic-kernel#14615 ·
维护者通常 3 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
vzeol/DeployCraft#125 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
apache/arrow-adbc#4915 · 1 条评论 ·
维护者通常 1 天内回复