我试图通过gcc的-Dmacro=value选项将C宏的值传递给预处理器。然而,它没有做我所期望的。这是我代码的基础:
#define T0 0 #define T1 0 #define T2 0 #define T3 0 int main(){ int f[9]; start(f[T0], f[T1], f[T2], f[T3]); return 0; }
运行gcc -DT3=1 -E表明预处理器没有替换T3的原始值。我遗漏了什么,如何正确传递值?
gcc -DT3=1 -E
zpjtge221#
如果这个开关将定义一个宏,但是你的代码会将它覆盖回0。从代码中删除该定义或使用ifdef将其包围起来,这样就可以了。
gkl3eglg2#
#ifndef T3 #define T3 0 #endif
上面的代码片段将确保您传递的值将被反映。
2条答案
按热度按时间zpjtge221#
如果这个开关将定义一个宏,但是你的代码会将它覆盖回0。从代码中删除该定义或使用ifdef将其包围起来,这样就可以了。
gkl3eglg2#
上面的代码片段将确保您传递的值将被反映。