【发布时间】:2015-02-26 08:01:52
【问题描述】:
我正在尝试做这样的事情:
#ifdef _MSC_VER
#define DISABLE_WARNINGS() \
#pragma warning( push, 0 )
#elif __GNUC__
#define DISABLE_WARNINGS() \
#define DISABLE_WARNINGS \
#pragma GCC diagnostic push \
#pragma GCC diagnostic ignored "-Wall"
#endif
我想在包含在 W4 上产生大量警告的第 3 方标头之前在我的代码中定义一个宏,例如“DISABLE_WARNINGS”,并确保代码可以在任何平台上编译。
例如:
DISABLE_WARNINGS
#include <gtkmm/buttonbox.h>
#include <gtkmm/box.h>
#include <gtkmm/window.h>
#include <gtkmm/button.h>
ENABLE_WARNINGS
使用单个宏实现此目标的最佳方法是什么?
【问题讨论】:
-
@hvd,副本没有回答如何处理平台之间的条件编译(MS - GNU C),投票重新开放。
-
@codekiddy 另一个问题确实已经回答了这个问题:使用
_Pragma。您已经拥有可用于 GCC 的#pragma指令。 -
@codekiddy 你可以连续使用两个
_Pragmas。 -
@codekiddy 您没有为
_Pragma使用正确的语法。正如另一个问题的答案中所解释的那样,_Pragma采用字符串文字(与 MSVC 的__pragma不同)。 -
请考虑将您的 EDIT2 转换为答案。如果你愿意,我想投票!