我知道选项-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
?
感谢。
答案 0 :(得分:3)
我认为你误解了预处理器的作用。预处理器扩展宏。 0, 0^1, 0^1, 0
尽可能完全扩展。从那里开始编译以解释数字表达式。您可以在其中查看gcc输出的下一个阶段是生成汇编代码,您可以使用gcc -S
。
答案 1 :(得分:1)
这是完全评估的形式。预编译器不进行常量折叠,编译器会这样做。
答案 2 :(得分:0)
您获得的输出是完全预处理的代码。你想要的是在编译期间做的。