我想解析头文件以获取所有常量宏,如:
#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.
所以,我想忽略以下内容:
- 所有评论。
- 结构(C
struct
)声明。 extern
函数声明。typedef
s.
一种方法是使用 lex 和 yacc 编写解析器。但是,这项任务似乎要简单得多。有没有一种方法可以使用诸如“cpp”之类的工具遍历头文件中的所有常量宏?
请提出任何更好的方法。
最佳答案
如果您真的只想要一个宏列表:
awk '/#define/{ print $2 }' <source.h
关于c - 解析 C 头文件以确定所有定义的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974921/