SunOS 5.11 (Solaris 11.3) の Sun Studio 12.3 で作業しています。偽の警告を提供します:
"<file.h>"、1 行目: 警告: "<function>" は値を返す必要があります。
関数は基本クラス インターフェイスの一部であり、そのように見えます。「なぜそれを行うのか」という議論を避けるために、基本クラスのインターフェイスについてのみ言及します。以下のような非メンバー関数は、それをトリガーするのに十分です。
int foo()
{
throw runtime_error("Not implemented");
}
同様の問題についての言及が見つかりました。たとえば、Xapian-core変更ログには次のように記載されています。
- Sun の C++ コンパイラからの "is expected to return a value" 警告を無効にします
。これは、"throw" ステートメントで終わる関数に対して発生するためです。本物
のインスタンスは、優れた警告機構を備えたコンパイラによってキャッチされます。
警告を無効にする SunStudio C++ コンパイラ プラグマによれば、使用できます-erroff=voidretw
。-erroff=voidretw
有効な調査結果が抑制される可能性があるため、私は心配しています。また、 を使用する場合は#pragma
、ユーザー コードへの相互受粉を避けるために、それをプッシュ アンド ポップする必要があります。Sun Studio で警告状態をプッシュおよびポップする方法がわかりません。
私の質問は、Sun Studio のヘッダーにある 1 つの関数の警告を無効にするにはどうすればよいですか?
メッセージは異なりますが、これは重複しているように見えます: 「最後のステートメントは値を返す必要があります」という警告を黙らせるには? これを重複として閉じるために投票するつもりだと思います。