Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “#define”宏中的pragma用于禁用警告_C++_C_Macros - Fatal编程技术网

C++ “#define”宏中的pragma用于禁用警告

C++ “#define”宏中的pragma用于禁用警告,c++,c,macros,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

我正在尝试这样做:

#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
我想在我的代码中定义一个宏,例如“DISABLE_WARNINGS”,然后再包含在W4上产生大量警告的第三方头,并确保代码在任何平台上编译

例如:

DISABLE_WARNINGS
#include <gtkmm/buttonbox.h>
#include <gtkmm/box.h>
#include <gtkmm/window.h>
#include <gtkmm/button.h>
ENABLE_WARNINGS
禁用警告
#包括
#包括
#包括
#包括
启用警告

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

在C99模式下,您可以使用
\u Pragma
而不是
\Pragma

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

@hvd,副本没有回答如何处理平台之间的条件编译(MS-GNU C),投票重新打开。@codekiddy另一个问题已经回答了:使用
\u Pragma
。您已经有了与GCC一起使用的
#pragma
指令。@codekiddy您可以连续使用两个
(pragma
。@codekiddy您没有使用正确的语法来表示
(pragma
)。正如在对其他问题的回答中所解释的,>PraceMa/Cord>采用字符串文字(不像MSVC的代码>如果你想,我想投它一票!