gpt4 book ai didi

c++ - 如何检测我的代码是否使用 -fno-exceptions 进行编译?

转载 作者:可可西里 更新时间:2023-11-01 15:00:50 26 4
gpt4 key购买 nike

我正在编写一个 C++ 库,我想让我的 API 为无效参数抛出异常,但是当使用 -fno-exceptions 编译代码时,我依赖于断言。

有没有办法在编译时检测我是否被允许使用异常处理?请注意,我正在编写一个仅包含 header 的库,因此我没有 configure 阶段,也无法访问构建系统来简单地在命令行上定义一个宏(并且我不想给用户增加负担)。

由于标准没有任何“-fno-exceptions”的概念,当然解决方案可能依赖于编译器。在这种情况下,我对同时使用 g++ 和 clang++ 的解决方案感兴趣,其他编译器对于这个项目并不重要。

非常感谢

最佳答案

GCC 和 Clang 在启用异常时定义 __EXCEPTIONS 宏,而在禁用异常时不定义它 via -fno-exceptions .

例子:

#include <cstdio>
int main() {
#ifdef __EXCEPTIONS
puts("Exceptions are enabled");
#else
puts("Exceptions are disabled");
#endif
}

关于c++ - 如何检测我的代码是否使用 -fno-exceptions 进行编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259070/

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