【问题标题】:How do I pass a quoted string with -D to gcc in cmd.exe?如何在 cmd.exe 中将带有 -D 的带引号的字符串传递给 gcc?
【发布时间】: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 现在尝试查找文件 barbaz(错误消息是:

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

那么,我怎样才能让编译器和 cmd.exe 一起做我想做的事呢?

【问题讨论】:

    标签: gcc cmd gnu quotes


    【解决方案1】:

    怎么了

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

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 2014-06-11
      • 2016-11-08
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多