1

我在 Unix 环境中有一个简单的 cpp 文件,如下所示:

#include <stdio.h>
#ifndef HELLO
    #define HELLO    "hello"
#endif

int main()
{
    printf("HELLO = %s \n", HELLO);
    return 0;
}

如果这是编译并运行的,它会打印出HELLO = HELLO.

但是,当我执行 export HELLO="HELLO",然后使用 编译程序g++ -Wall -g -DHELLO时,我收到一条警告:

    警告:格式“%s”需要“char*”类型的参数,但参数 2 的类型为“int”[-Wformat=]
         printf("你好 = %s \n", 你好);

当我运行程序时,我得到一个分段错误。

我将如何-DHELLO在代码中打印?

4

1 回答 1

1

-DHELLO等效于#define HELLO 1,它解释了编译错误,它抱怨 a int,而不是 a char*

尝试像这样编译:

g++ -Wall -g -DHELLO="hello"
于 2017-10-03T01:19:27.213 回答