Проблема здесь в том, что может быть полезно заставить компилятор «воспринимать предупреждения как ошибки». Для ошибок, которые не могут быть исправлены (например, некоторые сторонние зависимости), вы должны безопасно отключить.

от времени сложно писать код на C ++, который вообще не будет выдавать предупреждения. Однако включение предупреждений - хорошая идея. Поэтому часто необходимо отключить предупреждения вокруг какой-либо конкретной конструкции и включить их во всех других частях кода.

Я видел два способа сделать это до сих пор.

Первый заключается в использовании#pragma warning( push ) а также#pragma warning( pop ):

 #pragma warning( push )
 #pragma warning( disable: ThatWarning )
 //code with ThatWarning here
 #pragma warning( pop )

Второй заключается в использовании#pragma warning( default ):

 #pragma warning( disable: ThatWarning )
 //code with ThatWarning here
 #pragma warning( default: ThatWarning )

Проблема, которую я вижу во втором варианте, заключается в том, что он отбрасывает исходный уровень предупреждения - предупреждение могло быть отключено до этого или его уровень предупреждения мог быть изменен. С помощьюdefault откажется от этих изменений.

Первый подход выглядит чисто. Есть ли с этим проблемы? Есть ли лучшие способы достичь того же?

Ответы на вопрос(6)

Ваш ответ на вопрос