将#define X宏值替换为编译命令中指定的另一个值

假设我有这个代码:

#include #ifndef STR #define STR "HELLO" #endif int main() { printf(STR "WORLD \n"); return 0; } 

这基本上转换为:如果未定义STR,则将其定义为“HELLO”,因此程序输出将是

你好,世界

现在,我的问题是:在使用gcc编译时如何修改此STR值? 例如,我想将“HELLO”更改为“HI”而不更改源(program.c)文件中的任何内容。

这样做的gcc语法是什么?

我试过了

gcc -Wall program.c -DSTR =“HI”-o program

但它没有产生预期的产量。

有什么建议?

谢谢!

尝试以下forms:

 -DSTR=\"MyString\"