【发布时间】:2010-02-09 19:29:20
【问题描述】:
在 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 ),程序会不会遇到未定义的行为?
【问题讨论】:
标签: c++ visual-c++ terminate undefined-behavior