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