O uso de #pragma warning push / pop é o caminho certo para alterar temporariamente o nível de aviso?
De vez em quando é difícil escrever código C ++ que não emitisse avisos. Ter os avisos ativados é, no entanto, uma boa ideia. Portanto, muitas vezes é necessário desativar os avisos em torno de alguma construção específica e tê-los ativados em todas as outras partes do código.
Eu vi duas maneiras de fazer isso até agora.
O primeiro é usar#pragma warning( push )
e#pragma warning( pop )
:
#pragma warning( push )
#pragma warning( disable: ThatWarning )
//code with ThatWarning here
#pragma warning( pop )
O segundo é usar#pragma warning( default )
:
#pragma warning( disable: ThatWarning )
//code with ThatWarning here
#pragma warning( default: ThatWarning )
O problema que vejo na segunda variante é que ele descarta o nível de aviso original - o aviso pode ter sido desativado antes disso ou seu nível de aviso pode ter sido alterado. Usandodefault
descartaria essas alterações.
A primeira abordagem parece limpa. Há algum problema com isso? Existem maneiras melhores de conseguir o mesmo?