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

У меня есть простой файл 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"
Другие вопросы по тегам