使用clang libtooling获取多个宏定义的完整源代码

时间:2016-05-05 21:17:43

标签: clang libtooling

最终,我试图从数千个现有的c和c ++头文件中提取相关结构。我已经能够使用libtooling来提取一个结构以及它依赖于各种不同头文件的所有结构/枚举/ typedef等。不幸的是,当我得到支持Decls的源时,它仍然引用那里定义的宏。我目前正试图找到一种方法来访问和打印这些宏的来源,但是当定义了多个宏时没有太多运气。< / p>

例如:

#define INT int
#define UNSIGNED unsigned
#define NAME name

typedef struct {
   UNSIGNED long INT NAME;
} test;

当我得到对应于name的FieldDecl并获取SourceRange时,我看到拼写位置指向&#34; #define UNSIGNED unsigned&#34;。我想知道如何访问其他宏定义的源位置。我知道当我改变&#34; UNSIGNED长INT名称时;&#34; to&#34; unsigned long INT NAME;&#34;拼写位置将指向&#34; #define INT int&#34;。看起来好像名称被改为&#34; unsigned long int NAME;&#34;让我没有拼写位置。

有没有办法在给定SourceRange的情况下获得多个拼写位置?我是否需要以其他方式缩小源范围?我已经尝试了下一个令牌,但是没有给我留下新的拼写位置。我还必须考虑数组中的宏,例如&#34; int bob [MAX_WIDTH] [MAX_HEIGHT]&#34;但我希望一旦我弄明白我的问题就会变得清晰。提前感谢您提供的任何帮助。

0 个答案:

没有答案