【发布时间】:2011-09-23 03:22:54
【问题描述】:
大多数 C++ 编译器允许禁用异常。有没有办法从代码中确定它而不使用编译器特定的预处理器宏,例如 MSVC 的 _CPPUNWIND?理想情况下在编译时。
【问题讨论】:
-
如果这是一个 autoconf 系统,只需让 autoconf 尝试使用
try/catch编译某些东西,看看它是否还能编译。视觉工作室?不确定,你可能被宏卡住了。 -
有趣的问题,但这些信息有什么用?
-
很难看出这一点。 std::bad_alloc 和朋友是真实的,无论您是否启用异常处理。没有启用异常处理的“让我们做一些合理的事情”的角度是一个非常模糊的角度。他们以一种或另一种方式轰炸你的程序。
-
@Hans:在许多情况下,允许异常“轰炸你的程序”是可以接受的风险。例如,99% 的视频游戏会禁用性能异常。
-
@Kerrek SB:我正在寻找重新设计一个库的好方法,该库既可用于启用异常的项目,也可用于禁用异常的项目。 Boost 为此目的有自己的宏 - 我正在寻找避免预处理器的东西。
标签: c++ exception metaprogramming