Отключение предупреждения элегантно

0

У меня есть класс, который экспортируется, и он использует структуру только заголовка в качестве переменной-члена.

#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. Я попытался написать макрос, но включить '#' за мной.

  • 2
    Честно говоря, я бы туда не пошел ... Номера предупреждений в любом случае зависят от компилятора, так что вы должны были бы скрыть, а не уточнить. Чтобы игнорировать предупреждение только для следующей строки, вы можете использовать более компактное «#pragma warning (suppress: 4251)».
Теги:
macros

2 ответа

0

Чтобы добавить #pragma в MACRO, вы можете использовать:

  • __pragma с MSVC
  • _Pragma с gcc

Более подробно см. В документе Pragma в макросе определения.

0

Я могу жить с этим. Это лучше, чем у меня сейчас.

#include "SomeStruct.h"

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

Благодаря Heinirichj

Ещё вопросы

Сообщество Overcoder
Наверх
Меню