c++ - `#define` 宏中的 pragma 以禁用警告

标签 c++ c macros

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

#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` 宏中的 pragma 以禁用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28737178/

相关文章:

c - 如何在C/C++中使用宏定义名称减少的变量?

c++ - 在 BattleShip 游戏程序 C++ 中保持 BattleShip 命中和未命中

c - 结构后面的词是什么?

c - 仅在 debian 中覆盖我的应用程序的系统调用

c - 为什么全局变量会翻倍两次?

c++ - 判断函数模板中的类型

c++ - 你如何让数字在右边排列?

c++ - VST GUI 反馈 (C++)

c++ - 为什么指向函数的指针的值是1

c - 如何在从多个目录/文件编译内核模块时创建新目录并将 .o 文件移动到其中