有时很难编写完全不会发出警告的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将丢弃这些更改。
第一种方法看起来很干净。有什么问题吗?有没有更好的方法可以达到相同目的?