如何查看来自gcc的完全评估的预处理输出

时间:2012-01-16 17:36:15

标签: c

我知道选项-E启用了来自c源文件的proprocessed输出。但我希望进一步完全评估宏。

作为一个简单的例子,在下面的代码片段中,

# define P(n) n, n^1, n^1, n
const bool array[4] = {P(0)};

我想看到数组[4]中元素的确切值。但-E输出仅显示0, 0^1, 0^1, 0等。那么如何在此处以完全评估的形式显示0, 1, 1, 0

感谢。

3 个答案:

答案 0 :(得分:3)

我认为你误解了预处理器的作用。预处理器扩展宏。 0, 0^1, 0^1, 0尽可能完全扩展。从那里开始编译以解释数字表达式。您可以在其中查看gcc输出的下一个阶段是生成汇编代码,您可以使用gcc -S

答案 1 :(得分:1)

这是完全评估的形式。预编译器不进行常量折叠,编译器会这样做。

答案 2 :(得分:0)

您获得的输出是完全预处理的代码。你想要的是在编译期间做的。