我的程序编译得很好,但每次调用 throw (不在 try...catch 块内)时都会崩溃。
以下是用于项目中所有文件的类似命令的参数:
mingw32-g++.exe -fexceptions -DWIN32 -D_WINDOWS -D_MBCS -DNO_SOCKLEN_T -DDONTUSEMEMMANAGER -Wall -g -W -fexceptions -DDEBUG
(我知道 Wall 使得 W 变得不必要,并且我在那里有两次 -f 异常。)
编辑:我知道这种行为实际上没有任何问题。问题是,它曾经可以工作,也就是说程序不会崩溃。但前几天我更改了一些文件,再次编译,突然崩溃了
嗯,这是预期的行为。标准说[except.handle]:
如果没有找到匹配的处理程序,则调用函数 std::terminate() ; [...]
这称为未处理的异常。预期的行为是程序应该退出。