为什么gcc不从命令行传递宏值?

tpgth1q7  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(148)

我试图通过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的原始值。我遗漏了什么,如何正确传递值?

zpjtge22

zpjtge221#

如果这个开关将定义一个宏,但是你的代码会将它覆盖回0。从代码中删除该定义或使用ifdef将其包围起来,这样就可以了。

gkl3eglg

gkl3eglg2#

#ifndef T3
   #define T3 0
#endif

上面的代码片段将确保您传递的值将被反映。

相关问题