VC ++ 7では、次のようにすると次のようになります。
void myTerminate()
{
cout << "In myTerminate()";
abort();
}
int main( int, char** )
{
set_terminate( &myTerminate );
set_terminate( 0 );
terminate();
return 0;
}
プログラムは、abort()
直接呼び出された場合とまったく同じように動作します。これは、デフォルトのterminate()
ハンドラーが行うこととまったく同じです。
ステートメントを省略するset_terminate( 0 );
と、終了ハンドラーが呼び出されます。したがって、呼び出しはハンドラーをデフォルトset_terminate( 0 )
にリセットする効果があるようです。terminate()
この動作はVC++7にのみ固有ですか?set_terminate( 0 )
他の実装を呼び出すと、プログラムは未定義の動作になりませんか?