我在整个代码中都使用它:
#pragma message "FIXME: this needs to be fixed"
我希望这些警告消息只显示给启用它们的用户。我想我会为它写一个宏,比如:
#ifdef SHOW_DEVELOPER_MESSAGES
#define DEVELOPER_MESSAGE(msg) _Pragma("message " ## msg)
#endif
并像这样使用它:
DEVELOPER_MESSAGE("TEST: -- xxxx --")
但这会导致以下错误:
Pasting formed '"message ""TEST: -- xxxxx --"', an invalid preprocessing token
我已经阅读了C/C++ 宏字符串连接并尝试使用它,但我无法让它工作。我认为这必须这样做,消息需要像这样在转义引号中(这个工作我只是不知道如何创建一个像这样与_Pragma一起工作的转义字符串):
_Pragma("message \"THIS is the actual message!\"")
如何创建一个打印出编译指示消息(或类似解决方案)的宏?
解决方案应该是单行的,将每个 pragma 消息都包含在其中#ifdef SHOW_DEVELOPER_MESSAGES
会违背本练习的目的。
奖励问题:我需要如何更改宏来为不同的消息类型创建不同的变体,例如:
DEVELOPER_FIXME("bug")
它总是在字符串前面加上 FIXME 以形成:"FIXME: bug"
。