nothrow (C++)
Microsoft 固有の仕様 →
関数の宣言に使用できる __declspec 拡張属性。
return-type __declspec(nothrow) [call-convention] function-name ([argument-list])
解説
この属性は、宣言された関数、および、その呼び出す関数が例外をスローしないことをコンパイラに伝えます。 同期例外処理モデル (現在は既定のモデル) の場合、コンパイラはこのような関数で特定のアンワインド可能オブジェクトの有効期間を追跡する機構を削除して、コード サイズを大幅に小さくできます。 次のプリプロセッサ ディレクティブを指定した場合、その下の 3 つの関数宣言は等価です。
#define WINAPI __declspec(nothrow) __stdcall
void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();
void __declspec(nothrow) __stdcall f2(); を使用すると、#define ステートメントで示されるような API 定義を使用して、一連の関数で簡単に nothrow を指定できるという利点があります。 3 番目の宣言 void __stdcall f3() throw(); は C++ 標準で定義されている構文です。
詳細については、「同期例外処理」を参照してください。
END Microsoft 固有の仕様