2012-03-29 17 views
0

随着gcc(以及可能其他的编译器以及)有可能定义源文件以外的宏像这样:如何在cmd.exe中将具有-D的引号字符串传递给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将在执行时打印。

现在,我不知道的是如何通过引用的字符串而不是int。因此,printf的将被类似

​​3210

和编译像这样:

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现在试图找到这些文件酒吧巴兹(该错误信息是:

gcc.exe: bar: No such file or directory 
gcc.exe: baz": Invalid argument 
<command-line>:0:16: warning: missing terminating " character 

所以,我怎样才能让编译器与CMD.EXE一起做我想要什么?

回答

2

这有什么错

-DDEFINED_STRING="\"foo bar baz\"" 
+1

没有什么不对! – 2012-03-29 15:39:24

相关问题