我在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
?
答案 0 :(得分:1)
-DHELLO
相当于#define HELLO 1
,它解释了编译错误,该错误涉及int
而不是char*
。
尝试编译如下:
g++ -Wall -g -DHELLO="hello"