在 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 )
?