有没有办法使GNU C 预处理器, cpp (或其他一些工具) 列出给定点上的所有可用宏及其值C file?
我正在寻找特定于系统的宏,同时移植一个已经精通 UNIX 的程序并加载一堆稀疏的 UNIX 系统文件。
只是想知道是否有比寻找定义更简单的方法。
我不知道文件中的某个位置,但使用:
$ touch emptyfile
$ cpp -dM emptyfile
转储所有默认值。对 C 文件执行同样的操作#include
and #define
其中的行也包括所有这些。我想您可以将文件截断到您关心的位置,然后执行相同的操作?
来自man page https://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/cpp.1.html:
-dCHARS
CHARS
是由一个或多个以下字符组成的序列,并且前面不能有空格。其他字符由编译器正确解释,或者为 GCC 的未来版本保留,因此会被默默地忽略。如果指定行为冲突的字符,则结果未定义。
M
生成一个列表,而不是正常输出#define
在预处理器执行期间定义的所有宏的指令,包括预定义的宏。这为您提供了一种查找您的预处理器版本中预定义内容的方法。假设你没有文件 foo.h,该命令
touch foo.h; cpp -dM foo.h
将显示所有预定义的宏。
如果你使用-dM
没有-E
选项,-dM
被解释为同义词-fdump-rtl-mach
.
D
Like M
除了两个方面:它不包含预定义的宏,并且它输出#define
指令和预处理的结果。两种输出都进入标准输出文件。
N
与 D 类似,但仅发出宏名称,而不发出它们的扩展。
I
Output #include
除了预处理结果之外的指令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)