优雅地禁用警告

Disabling warning elegantly

本文关键字:警告      更新时间:2023-10-16

我有一个导出的类,它使用一个头结构作为成员变量。

#include "SomeStruct.h"
class API_CLASS SomeClass
{
public:
// ...
private:
#pragma warning( push )
#pragma warning( disable: 4251 )
    SomeStruct _active;
#pragma warning( pop )
};

我得到警告4251,因为结构没有导出。该结构是外部代码的一部分,而不是当前作用域的一部分。

我想使这段代码更具可读性,因为这是我将分发的头文件。理想情况下,我希望该类读取

#include "SomeStruct.h"
class API_CLASS SomeClass
{
public:
// ...
private:
DISABLE_WARNING_BEGIN(4251)
    SomeStruct _active;
DISABLE_WARNING_END
};

禁用多个警告可能需要更多的工作,但如果可以做到,那就太好了,但不是必需的。宏应该只产生适用于WIN32环境的代码。我试着写宏,但包括一个'#'超出了我。

我可以接受。这比我现在的好。

#include "SomeStruct.h"
class API_CLASS SomeClass
{
public:
// ...
private:
#pragma warning(suppress: 4251)
    SomeStruct _active;
};

Thanks to Heinirichj

要将#pragma添加到MACRO中,可以使用:

  • __pragma with MSVC
  • _Pragma with gcc