C 包含宏的预处理器消息

C 包含宏的预处理器消息,c,printing,macros,c-preprocessor,pragma,C,Printing,Macros,C Preprocessor,Pragma,如何在预处理期间打印包含宏的消息 例如: 您应该做的是在展开预处理器宏_1后对其进行字符串化。您不能将宏_1插入到pragma消息中,因为禁止出现错误。在这种情况下,预处理器在pragma消息中看到的是MACRO_1而不是1。但是,如下面的示例所示,当您使用SSTRINGIZEx时,您指示预处理器展开宏_1,获取其在您的示例中为1的值,然后将其字符串化,并将其转换为字符串。最后,您将在最后获得pragma消息中的字符串1 请尝试此代码,它将打印您打算执行的操作 #define MACRO_1

如何在预处理期间打印包含宏的消息

例如:


您应该做的是在展开预处理器宏_1后对其进行字符串化。您不能将宏_1插入到pragma消息中,因为禁止出现错误。在这种情况下,预处理器在pragma消息中看到的是MACRO_1而不是1。但是,如下面的示例所示,当您使用SSTRINGIZEx时,您指示预处理器展开宏_1,获取其在您的示例中为1的值,然后将其字符串化,并将其转换为字符串。最后,您将在最后获得pragma消息中的字符串1

请尝试此代码,它将打印您打算执行的操作

#define MACRO_1  1
#pragma message ("Date:" __DATE__)           
#define STRINGIZE(x) "MACRO_1 = " #x
#define SSTRINGIZE(x) STRINGIZE(x)
#pragma message (SSTRINGIZE(MACRO_1))

我猜宏_1的结果只需要是字符串1就可以了。您可以在代码中使用pragma message MACRO_1=MACRO_1对其进行字符串化。请参阅@IdeaHat-我尝试使用1字符串来使用单数,但我一直收到相同的错误…这是我从您的代码中得到的:警告:MACRO_1=MACRO_1[-wparama messages]我查看了代码,现在显示的应该可以工作。希望这有助于:
#define MACRO_1  1
#pragma message ("Date:" __DATE__)           
#define STRINGIZE(x) "MACRO_1 = " #x
#define SSTRINGIZE(x) STRINGIZE(x)
#pragma message (SSTRINGIZE(MACRO_1))