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

C 将#define X宏值替换为编译命令中指定的另一个宏值,c,gcc,macros,C,Gcc,Macros,给定以下代码: #包括 #ifndef STR #定义STR“HELLO” #恩迪夫 int main(){ printf(STR“WORLD\n”); 返回0; } 这表示:如果未定义STR,则将其定义为“HELLO”, 因此,输出将是 HELLO WORLD 使用gcc编译时,如何修改STR的值 我试过了 gcc-Wall程序.c-DSTR=“HI”-o程序 但它没有产生预期的输出。尝试以下形式: -DSTR=\"MyString\" 试试gcc-Wall程序。c-DSTR=\'HI

给定以下代码:

#包括
#ifndef STR
#定义STR“HELLO”
#恩迪夫
int main(){
printf(STR“WORLD\n”);
返回0;
}
这表示:如果未定义
STR
,则将其定义为
“HELLO”
, 因此,输出将是

HELLO WORLD
使用
gcc
编译时,如何修改
STR
的值

我试过了

gcc-Wall程序.c-DSTR=“HI”-o程序
但它没有产生预期的输出。

尝试以下形式:

-DSTR=\"MyString\"

试试gcc-Wall程序。c-DSTR=\'HI\'-o year@BLUEPIXY,这是一个answer@BLUEPIXY字体那些反斜杠是问题所在,现在它就像一个符咒!谢谢!“没有生成预期的输出”,它一定给了您一个编译器错误,不是吗?值得一提的是,这是一个shell问题。例如,如果命令是
exec*()
ed,则不需要反斜杠。