2012-03-29 51 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

相關問題