Что вы должны сделать, это stringize препроцессора MACRO_1 после расширяется. Вы не можете вставить # MACRO_1 в сообщение #pragma(), поскольку запреты запрещены. В этом случае то, что препроцессор видит внутри #pragma message(), это «# MACRO_1», а не «1». Однако, когда вы используете SSTRINGIZE (x) (как показано в примере ниже), вы инструктируете препроцессор расширять MACRO_1 (получить его значение, которое равно 1 в вашем случае), а затем строчить его (скрытно в строку). Наконец, вы получите строку «1» внутри сообщения #pragma() в конце.
Пробуйте этот код, он должен печатать то, что вы намереваетесь сделать.
#define MACRO_1 1
#pragma message ("Date:" __DATE__)
#define STRINGIZE(x) "MACRO_1 = " #x
#define SSTRINGIZE(x) STRINGIZE(x)
#pragma message (SSTRINGIZE(MACRO_1))
Я думаю, результат MACRO_1 должен быть строкой («1»), чтобы это работало. Вы можете привести его в код с сообщением #pragma («MACRO_1 =» # MACRO_1). См. Https://gcc.gnu.org/onlinedocs/cpp/Stringification.html – IdeaHat
@IdeaHat - я попытался использовать строку «1», чтобы использовать одиночный #, но я продолжаю получать ту же ошибку ... – Pietro