【发布时间】:2012-03-29 15:29:26
【问题描述】:
使用gcc(可能还有其他编译器)可以在源文件之外定义宏,如下所示:
c:\MinGW\bin\gcc.exe -DDEFINED_INT=45 foo.c -o foo.exe
这会将DEFINED_INT定义为45,编译时可以看到
#include <stdio.h>
int main() {
printf("The define was: %d\n", DEFINED_INT);
return 0;
}
编译后的foo.exe会在执行时打印45。
现在,我不知道如何传递 引用的字符串 而不是 int。因此, printf 将类似于
printf("The define was: %s\n", DEFINED_STRING);
编译如下:
c:\MinGW\bin\gcc.exe -DDEFINED_STRING="foo bar baz" foo.c -o foo.exe
但这不起作用,相应的行将是
printf("The define was: %s\n", foo bar baz);
(即:没有所需的引号)。
c:\MinGW\bin\gcc.exe -DDEFINED_STRING=\"foo bar baz\" foo.c -o foo.exe
也不起作用,因为 gcc 现在尝试查找文件 bar 和 baz(错误消息是:
gcc.exe: bar: No such file or directory
gcc.exe: baz": Invalid argument
<command-line>:0:16: warning: missing terminating " character
那么,我怎样才能让编译器和 cmd.exe 一起做我想做的事呢?
【问题讨论】: