Иногда бывает трудно написать код C ++, который бы вообще не выдавал предупреждения. Однако включение предупреждений - хорошая идея. Поэтому часто бывает необходимо отключить предупреждения вокруг определенной конструкции и включить их во всех других частях кода.
Я видел два способа сделать это до сих пор.
Первый - использовать #pragma warning (push)
и #pragma warning (pop)
:
#pragma warning( push )
#pragma warning( disable: ThatWarning )
//code with ThatWarning here
#pragma warning( pop )
Второй - использовать #pragma warning (по умолчанию)
:
#pragma warning( disable: ThatWarning )
//code with ThatWarning here
#pragma warning( default: ThatWarning )
Проблема, которую я вижу во втором варианте, заключается в том, что он отбрасывает исходный уровень предупреждения - предупреждение могло быть отключено до этого или его уровень предупреждения мог быть изменен. Использование по умолчанию
отменит эти изменения.
Первый подход выглядит чистым. Есть ли с этим проблемы? Есть ли лучшие способы добиться того же?