1. ホーム
  2. c++

警告レベルを一時的に変更するために #pragma warning push/pop を使用するのは正しい方法ですか?

2023-08-16 12:33:50

質問

時々、警告を全く発しないC++コードを書くのは難しいです。しかし、警告を有効にすることは良い考えです。そのため、ある特定の構成要素に関する警告を無効にして、他のすべてのコード部分でそれらを有効にすることがしばしば必要です。

私はこれまで、それを行う2つの方法を見てきました。

一つ目は #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 を使用すると、それらの変更を破棄します。

最初のアプローチはきれいに見えます。これには何か問題がありますか?同じことを達成するためのより良い方法はありますか?

どのように解決するのですか?

最初の方法が、IMOでは最良の方法です。 私はこれで何の問題もないことを知っています。

単に#pragmaはコンパイラに依存するので、そこにあるすべてのコンパイラで動作することを期待しないでください :)