我正在尝试做这样的事情:

#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 方 header 之前,我想在我的代码中定义一个宏,例如“DISABLE_WARNINGS”,并确保代码在任何平台上编译。

例如:
DISABLE_WARNINGS
#include <gtkmm/buttonbox.h>
#include <gtkmm/box.h>
#include <gtkmm/window.h>
#include <gtkmm/button.h>
ENABLE_WARNINGS

使用单个宏实现这一目标的最佳方法是什么?

最佳答案

在 C99 模式下,您可以使用 _Pragma 代替 #pragma :

#define DISABLE_WARNINGS \
    _Pragma("GCC diagnostic push") \
    _Pragma("GCC diagnostic ignored \"-Wall\"")

关于c++ - `#define` 宏中的编译指示以禁用警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28737178/

10-11 23:04
查看更多