Время от времени сложно написать код на С++, который вообще не выдавал бы предупреждения. Однако включение предупреждений является хорошей идеей. Поэтому часто необходимо отключить предупреждения вокруг какой-либо конкретной конструкции и включить их во всех других частях кода.
Я видел два способа сделать это до сих пор.
Первый - использовать #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
отменит эти изменения.
Первый подход выглядит чистым. Есть ли проблемы с этим? Есть ли какие-либо лучшие способы достижения того же?