如何printf预定义的cflags

时间:2017-10-02 23:38:31

标签: c++ printf cflags

我在Unix环境中有一个简单的cpp文件:

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

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

如果编译并运行它,则打印出HELLO = HELLO

但是,当我导出HELLO="HELLO",然后使用g++ -Wall -g -DHELLO编译程序时,我收到警告说:

    warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type     ‘int’ [-Wformat=]
         printf("HELLO = %s \n", HELLO);

当我运行程序时,我遇到了分段错误。

如何在代码中打印-DHELLO

1 个答案:

答案 0 :(得分:1)

-DHELLO相当于#define HELLO 1,它解释了编译错误,该错误涉及int而不是char*

尝试编译如下:

g++ -Wall -g -DHELLO="hello"