在宏中包含#warning以便稍后评估?

Jam*_*rey 2 c++ macros

可能重复:
是否存在static_warning?

我经常使用#warning通过我的代码分散来标记我需要回到的地方.

喜欢:

#warning The blahblah hasn't been implemented yet; use foo to do so.
Run Code Online (Sandbox Code Playgroud)

我想创建一个宏,可选地不显示与我的笔记特别相关的警告,但显示来自编译器和其他库的实际警告.

就像是:

#ifdef SUPPRESS_NOTES
    #define BUILD_NOTE
#else
    #define BUILD_NOTE #warning Note: msg
#endif
Run Code Online (Sandbox Code Playgroud)

不幸的是,#warning首先得到评估.有什么方法可以做到这一点吗?我使用GCC(MinGW).

ipc*_*ipc 5

使用GCC在线文档中的TODO Makro ,这是您想要的:

#define DO_PRAGMA(x) _Pragma (#x)
#define TODO(x) DO_PRAGMA(message ("TODO - " #x))
#ifdef SUPRESS_NOTES
#  define BUILD_NOTE
#else
#  define BUILD_NOTE DO_PRAGMA(message ("The blahblah hasn't been implemented " \
                                        "yet; use foo to do so."))
#endif
Run Code Online (Sandbox Code Playgroud)