как напечатать предопределенные флаги

У меня есть простой файл 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"
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]