gpt4 book ai didi

c++ - 将 VC++ 的 __try/__except EXCEPTION_STACK_OVERFLOW 移植到 MinGW

转载 作者:可可西里 更新时间:2023-11-01 18:09:32 25 4
gpt4 key购买 nike

我正在尝试使用 VC++ 的 try-except 语句将一些代码移植到 MinGW:

bool success = true;

__try {
//...
} __except ((EXCEPTION_STACK_OVERFLOW == GetExceptionCode())
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH) {
success = false;
_resetstkoflw();
}
return success;

是否可以使用 MinGW g++ 编写捕获堆栈溢出异常的代码?

最佳答案

您需要手动调用注册异常处理的 Windows API 函数;即 AddVectoredExceptionHandler .请注意,通过使用不遵守 SEH 异常的 MinGW,抛出任何 SEH 异常或 try catch 任何此类异常将导致未定义的行为,因为未完成正常的 C++ 堆栈展开语义。 (Windows 如何知道对堆栈上的所有这些 std::string 进行核对?)

您还需要在希望调用 SEH 异常处理程序的时间结束时调用 RemoveVectoredExceptionHandler

通常 MinGW 缺乏对 SEH 和 COM 等 Windows 功能的支持。您尝试使用它而不是 MSVC++ 的任何原因(假设两个编译器都是免费的?)

关于c++ - 将 VC++ 的 __try/__except EXCEPTION_STACK_OVERFLOW 移植到 MinGW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com