解析C头文件以确定所有已定义的宏

时间:2012-04-02 10:42:25

标签: c parsing macros header include

我想解析头文件以获取所有常量宏,如:

#define ARRSIZE 10
#define WORDSIZE 32
#define TOTALSIZE (ARRSIZE * WORDSIZE)

创建一个列表和一个数组,例如:

# define XARRSIZE 0
# define XWORDSIZE 1
# define XTOTALSIZE 2

int table[] = {ARRSIZE, WORDSIZE, TOTALSIZE}
// Now, table[XWORDSIZE] will fetch value of WORDSIZE.

所以,我想忽略以下内容:

  1. 所有评论。
  2. 结构(C struct)声明。
  3. extern函数声明。
  4. typedef秒。
  5. 一种方法是使用lex和yacc编写解析器。但是,这项任务似乎更简单。有没有办法使用'cpp'等工具迭代头文件中的所有常量宏?

    请建议任何更好的方法。

1 个答案:

答案 0 :(得分:2)

如果你真的只想要一个宏列表:

awk '/#define/{ print $2 }' <source.h