ZJR*_*ZJR 9 c gcc c-preprocessor
有没有办法让GNU C预处理器,cpp(或其他工具)列出C文件中给定点的所有可用宏及其值?
我正在寻找系统特定的宏,同时移植已经unix精通的程序并加载一堆稀疏的unix系统文件.
只是想知道是否有一种比寻找定义更简单的方法.
Car*_*rum 15
我不知道文件中的某个位置,但使用:
$ touch emptyfile
$ cpp -dM emptyfile
Run Code Online (Sandbox Code Playgroud)
转储所有默认值.对包含一些#include和#define行的C文件执行相同操作也包括所有这些.我想你可以截断你的文件到你关心的地方然后做同样的事情?
从手册页:
-dCHARS
CHARS是一个由以下一个或多个字符组成的序列,不得以空格开头.其他字符由编译器正确解释,或保留用于GCC的未来版本,因此会被忽略.如果指定行为冲突的字符,则结果未定义.
M
而不是正常输出,#define为执行预处理器期间定义的所有宏生成一个指令列表,包括预定义的宏.这为您提供了一种查找预处理器版本中预定义内容的方法.假设你没有文件foo.h,那么命令Run Code Online (Sandbox Code Playgroud)touch foo.h; cpp -dM foo.h将显示所有预定义的宏.
如果您在
-dM没有-E选项的情况下使用,则将-dM其解释为同义词-fdump-rtl-mach.
D
就像M除了在两个方面:它不包括预定义宏,并同时输出的#define指令和预处理的结果.两种输出都转到标准输出文件.
N
像D一样,但只发出宏名称,而不是它们的扩展.
I
输出#include指令以及预处理的结果.
| 归档时间: |
|
| 查看次数: |
1668 次 |
| 最近记录: |