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

que*_*ric 7 gcc

我正在尝试使用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;
}
Run Code Online (Sandbox Code Playgroud)

运行gcc -DT3=1 -E显示预处理器不替换T3的原始值.我缺少什么,价值如何正确传递?

dbr*_*nk0 9

Afaik那个开关将定义一个宏,但是你的代码然后将它重写为0.从你的代码中删除那个定义或用ifdef包围它,它应该没问题.

  • 用ifdef围绕它做了诀窍,谢谢. (3认同)