确定预处理程序令牌的值

时间:2011-06-07 12:37:15

标签: c++ macros

如何判断{C}编译器上__GNUC__定义的值是什么?

3 个答案:

答案 0 :(得分:7)

您可以使用以下命令获取所有GCC预定义宏:

g++ -dM -E - < /dev/null

快速的grep会让你得到你想要的东西。

答案 1 :(得分:3)

使用gcc的“仅预处理”模式(-E)(为方便起见,通过STDIN而不是文件输入):

[tomalak@renee ~]$ echo "__GNUC__" | g++ -E -
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
4

我不确定前四行输出是什么,但最后一行是你正在寻找的。

答案 2 :(得分:1)

这适用于任何宏:

echo "int main() {}" | gcc -xc++ -ggdb3 -
readelf --debug-dump=macro a.out | grep MACRO_YOU_ARE_LOOKING_FOR

dwarfdump -m a.out | grep MACRO_YOU_ARE_LOOKING_FOR