在Visual C++中禁用#pragma message("...")?

Eri*_*ric 7 c++ pragma visual-studio-2010

我正在使用一个头文件,其中包含恼人的消息,例如:

// annoying.h:

#pragma message("Compiling " __FILE__ )
Run Code Online (Sandbox Code Playgroud)

当没有实际问题时,我更喜欢干净的构建输出.在我包含此文件以阻止打印邮件之前,我能做些什么吗?

// not_annoying.cpp:

// PUT MAGIC HERE
#include "annoying.h"
Run Code Online (Sandbox Code Playgroud)

Ray*_*hen 8

只需定义一个使messagepragma消失的宏.

#define message(ignore)
Run Code Online (Sandbox Code Playgroud)

  • pragma的行为已经是实现定义的,因此空pragma的效果也是实现定义的.它在技术上是合法的(6.10.6.1),但谁知道它的作用! (3认同)
  • @Eric:注意`#define message(ignore)`将定义一个名为`message`的*函数宏*,而不是一般宏.也就是说,它将替换一个`message()`站点,而不是一个普通的`message`站点.另外,如果你想限制宏的范围,你可以在包含有问题的标题后"#unff"它. (2认同)