Иногда бывает сложно написать код на 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
отменит эти изменения.
Первый подход выглядит чистым. Есть ли с этим проблемы? Есть ли лучшие способы добиться того же?