最佳答案
偶尔很难编写完全不会发出警告的 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
将放弃这些更改。
第一种方法看起来很干净。它有什么问题吗? 有没有更好的方法来达到同样的效果?