小编典典

GCC 转储预处理器定义

all

gcc/g++ 有没有办法从命令行转储其预处理器定义?我的意思是__GNUC__,__STDC__等。


阅读 82

收藏
2022-04-29

共1个答案

小编典典

是的,使用-E -dM选项而不是 -c。示例(将它们输出到标准输出):

 echo | gcc -dM -E -
 echo | clang -dM -E -

对于 C++

 echo | g++ -dM -E -x c++ -
 echo | clang++ -dM -E -x c++ -

gcc 手册

代替正常的输出,为预处理器执行期间定义的所有宏生成一个“#define”指令列表,包括预定义的宏。这为您提供了一种查找预处理器版本中预定义内容的方法。假设你没有文件
foo.h,命令

touch foo.h; cpp -dM foo.h

将显示所有预定义的宏。

如果在没有 -E 选项的情况下使用 -dM,则 -dM 被解释为 -fdump-rtl-mach 的同义词。

2022-04-29