猿问
GCC转储预处理器定义
GCC/g+是否有从命令行转储其预处理器定义的方法?我是说像
__GNUC__
,
__STDC__
等等。
12345678_0001
浏览 576
回答 3
3回答
繁星淼淼
是的,使用-E -dM选项而不是-c。示例(将它们输出到stdout): gcc -dM -E - < /dev/nullC+ g++ -dM -E -x c++ - < /dev/null从GCC手册:与正常输出不同,为执行预处理器(包括预定义宏)期间定义的所有宏生成一个‘#Defined’指令列表。这为您提供了一种查找预处理器版本中预定义的内容的方法。假设您没有文件foo.h,则命令touch foo.h; cpp -dM foo.h将显示所有预定义的宏。如果使用-dm而不使用-E选项,则-dm被解释为-fdump-rtl-mach的同义词。
0
0
0
万千封印
我通常是这样做的:$ gcc -dM -E - < /dev/null注意,一些预处理器定义依赖于命令行选项-您可以通过将相关选项添加到上面的命令行来测试这些选项。例如,要查看默认情况下启用了哪些SSE 3/SSE4选项:$ gcc -dM -E - < /dev/null | grep SSE[34]#define __SSE3__ 1#define __SSSE3__ 1然后比较一下-msse4具体如下:$ gcc -dM -E -msse4 - < /dev/null | grep SSE[34]#define __SSE3__ 1#define __SSE4_1__ 1#define __SSE4_2__ 1#define __SSSE3__ 1类似地,您可以看到两组不同的命令行选项之间有哪些选项不同,例如,比较预处理器定义的优化级别。-O0(无)和-O3(全部):$ gcc -dM -E -O0 - < /dev/null > /tmp/O0.txt $ gcc -dM -E -O3 - < /dev/null > /tmp/O3.txt $ sdiff -s /tmp/O0.txt /tmp/O3.txt #define __NO_INLINE__ 1 < > #define __OPTIMIZE__ 1
0
0
0
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
我要回答