我不在任何库或应用程序中使用异常处理。一切都在异常处理关闭的情况下构建,并且使用MS Visual Studio的Windows应用程序与nothrownew.obj链接在一起。该代码自行处理所有故障。 CRT在我后面抛出异常并终止程序而不返回错误结果,这是一个问题。
例如,当提供的驱动器号不再存在而不仅仅是返回errcode时,这崩溃了。
if (_tgetdcwd(driveltr ? DriveLtrToDOSDriveNum(driveltr) : 0, dirout, diroutbufsize)==NULL) {
errcode=GetErrorFromErrno();
}
现在在Windows上,我已经使用_set_invalid_parameter_handler()
来防止上述令人讨厌的问题。像这样:
void invalid_parameter_function(const wchar_t * expression, const wchar_t * function, const wchar_t * file, unsigned int line, uintptr_t pReserved)
{
}
int _tmain(int argc, const TCHAR *argv[])
{
_set_invalid_parameter_handler(invalid_parameter_function);
}
是否有办法确保CRT不会为MS Visual Studio 2017和与g ++一起使用的CRT引发异常?如果没有,并且必须像上面在Windows上一样设置一个处理程序,那么g ++是否有一个处理程序?
TIA !!