Lea*_*s2D 0 xcode preprocessor pragma
我在整个代码中都使用了此代码:
#pragma message "FIXME: this needs to be fixed"
Run Code Online (Sandbox Code Playgroud)
我希望这些警告消息仅对启用它们的用户显示。我以为我会为此写一个宏,例如:
#ifdef SHOW_DEVELOPER_MESSAGES
#define DEVELOPER_MESSAGE(msg) _Pragma("message " ## msg)
#endif
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
DEVELOPER_MESSAGE("TEST: -- xxxx --")
Run Code Online (Sandbox Code Playgroud)
但这导致以下错误:
Pasting formed '"message ""TEST: -- xxxxx --"', an invalid preprocessing token
Run Code Online (Sandbox Code Playgroud)
我已经阅读了C / C ++宏字符串连接并尝试使用它,但是我无法使其正常工作。我在想这样做必须使消息必须像这样用转义的引号引起来(这种工作方式我只是不知道如何创建像这样的转义的字符串来与_Pragma一起使用):
_Pragma("message \"THIS is the actual message!\"")
Run Code Online (Sandbox Code Playgroud)
如何创建打印出编译指示消息的宏(或类似的解决方案)?
解决方案应该是单线的,将每一个实用信息#ifdef SHOW_DEVELOPER_MESSAGES都包含在内,这将违背此练习的目的。
奖励问题:如何更改宏以为不同的消息类型创建不同的变体,例如:
DEVELOPER_FIXME("bug")
Run Code Online (Sandbox Code Playgroud)
它总是与FIXME前缀字符串到形式:"FIXME: bug"。
(在http://gcc.gnu.org/ml/gcc-help/2010-10/msg00194.html的帮助下):
#ifdef SHOW_DEVELOPER_MESSAGES
#define PRAGMA_MESSAGE(x) _Pragma(#x)
#define DEVELOPER_MESSAGE(msg) PRAGMA_MESSAGE(message msg)
#endif
Run Code Online (Sandbox Code Playgroud)
奖金问题的答案:
#define DEVELOPER_FIXME(msg) PRAGMA_MESSAGE(message "FIXME:" msg)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |