Как передать строку в кавычках с -D в gcc в cmd.exe? - PullRequest
1 голос
/ 29 марта 2012

С 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 делать то, что я хочу?

1 Ответ

3 голосов
/ 29 марта 2012

Что не так с

-DDEFINED_STRING="\"foo bar baz\""
...