У меня есть класс, который экспортируется, и он использует структуру только заголовка в качестве переменной-члена.
#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. Я попытался написать макрос, но включить '#' за мной.
Чтобы добавить #pragma
в MACRO, вы можете использовать:
__pragma
с MSVC_Pragma
с gccБолее подробно см. В документе Pragma в макросе определения.
Я могу жить с этим. Это лучше, чем у меня сейчас.
#include "SomeStruct.h"
class API_CLASS SomeClass
{
public:
// ...
private:
#pragma warning(suppress: 4251)
SomeStruct _active;
};
Благодаря Heinirichj