2012-03-29 6 views
0

Mit gcc (und möglicherweise anderen Compiler als auch) ist es möglich, einen Makro außerhalb der Quelldatei wie so zu definieren:Wie übergebe ich einen String in Anführungszeichen mit -D an gcc in cmd.exe?

c:\MinGW\bin\gcc.exe -DDEFINED_INT=45 foo.c -o foo.exe 

Diese DEFINED_INT-45 wird definieren, die gesehen werden können, wenn

Kompilieren
#include <stdio.h> 

int main() { 
    printf("The define was: %d\n", DEFINED_INT); 

    return 0; 
} 

Der kompilierte foo.exe wird dann ausgedruckt, wenn er ausgeführt wird.

Nun, was ich keine Ahnung habe, ist, wie überlasse ich eine in Anführungszeichen Zeichenfolge anstelle von einem Int. So würde die printf dann so etwas wie

printf("The define was: %s\n", DEFINED_STRING); 

und die Zusammenstellung sein wie so:

c:\MinGW\bin\gcc.exe -DDEFINED_STRING="foo bar baz" foo.c -o foo.exe 

aber das funktioniert nicht, die entsprechende Zeile wird

printf("The define was: %s\n", foo bar baz); 

(das ist: ohne die gewünschten Zitate).

c:\MinGW\bin\gcc.exe -DDEFINED_STRING=\"foo bar baz\" foo.c -o foo.exe 

funktioniert nicht, weder, wie gcc jetzt die Dateien bar und baz zu finden versucht (die Fehlermeldung lautet:

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

Also, wie ich die Compiler zu bekommen zusammen mit cmd.exe zu tun, was ich will?

Antwort

2

Was mit

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

Nichts ist falsch damit! –