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

标签 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. typedefs.

一种方法是使用 lex 和 yacc 编写解析器。但是,这项任务似乎要简单得多。有没有一种方法可以使用诸如“cpp”之类的工具遍历头文件中的所有常量宏?

请提出任何更好的方法。

最佳答案

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

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

关于c - 解析 C 头文件以确定所有定义的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974921/

相关文章:

c++ - 如何在行尾添加问号?

C语言编程 printf

c++ - token 的类层次结构并在解析器中检查它们的类型

c++ - cpp 中的宏编译错误 (Visual Studio 2012)

clojure - 为什么这个 clojure 宏需要 `' ~?

c - 使用 execvp 将 md5sum 重定向到文件?

parsing - 示例解析器以学习如何编写它们

javascript - Google map API 页面未加载 - 解析 XML 错误

clojure - 需要完全限定符号的 Cljs 宏

c - 三环复杂度