正如this questionmain
中的许多示例所见,在调用之前执行代码绝对是可能的。
但是,如果在那个 pre-main 代码中,程序被告知通过std::exit
or退出std::abort
呢?既然main
被定义为程序的开始,那么在开始之前退出会有什么后果呢?
在每个部分打印一些内容后,我得到以下结果:
格式:
部分:output
Main:main
Init(在 main 之前调用): Exit(在 Init 内部init
设置std::atexit
) :exiting
样品运行:
Init 在没有退出的情况下被调用:
初始化
主
返回 0
Init 调用 std::exit(0):
初始化
返回 0
Init 调用 std::abort:
init
在 GCC 4.7.2
崩溃的 Windows 上崩溃并返回 3 崩溃并打开通常的框,VS11
在 LiveWorkSpace 上返回 0
Init 设置处理程序并调用 std::exit(0):
初始化
退出
返回 0
Init 设置处理程序并调用 std::abort:
初始化
与没有处理程序相同的交易
在搜索时,我看到了这个问题:C/C++ 程序是否可以在 main() 之前崩溃?. 但是,它没有回答我想知道的问题:是否有任何这种行为,调用std::exit
或std::abort
之前main
,定义明确?有任何这种未定义的行为吗?