gpt4 book ai didi

c++ - -fno-exceptions 对于某些库?

转载 作者:太空狗 更新时间:2023-10-29 23:04:23 28 4
gpt4 key购买 nike

这有点类似于“Disabling C++ exceptions, how can I make any std:: throw() immediately terminate?”。我希望我的程序在 STL 抛出异常时终止。

问题如下:我正在编写一个库,然后将其作为共享对象加载并由我无法控制的程序执行。不幸的是,这个程序在一个大的 try bock 中运行所有的东西,这样我就不会在抛出错误时得到堆栈跟踪/核心转储,从而使 ::at 类函数的超出范围错误变得无用。

这听起来像是 -fno-exceptions 的理想用例,但我不能只使用 -fno-exceptions,因为 boost_log 和调用我的程序都在它们的 header 中定义了异常处理,使我出现编译错误 - fno 异常。

有没有办法只为 STL 异常启用 -fno-exceptions?

最佳答案

对于 C++11,最简单的方法是将 noexcept 添加到从共享库调用的顶级函数的签名中:

void called_func() noexcept;

这将导致 called_func 堆栈帧(如果它们未被处理,则在下面)中出现任何未处理的异常,从而终止程序的执行。

关于c++ - -fno-exceptions 对于某些库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23005683/

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