Как напечатать предопределенные флаги
У меня есть простой файл cpp, как указано ниже в среде Unix:
#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
Я получаю предупреждение:
предупреждение: формат "%s" ожидает аргумент типа "char*", но аргумент 2 имеет тип "int" [-Wformat=] printf("HELLO = %s \n", HELLO);
Когда я запускаю программу, я получаю ошибку сегментации.
Как бы я распечатать -DHELLO
в коде?
1 ответ
-DHELLO
эквивалентно #define HELLO 1
, который объясняет ошибку компиляции, которая жалуется на int
, а не char*
,
Попробуйте скомпилировать так:
g++ -Wall -g -DHELLO="hello"