Android NDK / Exceptions?
Android NDK / Exceptions?
我读到只有 STL 的 GNU 实现支持C++例外。我不确定它到底是什么意思。
如果我不使用此实现,是否意味着:
-
STL 不会抛出异常,但我仍然可以在任何地方使用我自己的异常。
-
或者所有异常都被禁用,在每段代码中,就像它们不是C++功能一样?
从 Android NDK 页面:
C++例外
在 NDKr5 之后的所有 NDK 版本中,NDK 工具链允许您使用支持异常处理的C++运行时。但是,为了确保与早期版本的兼容性,默认情况下,它会编译所有支持 -fno 异常C++源。您可以为整个应用或单个模块启用C++例外。
若要为整个应用启用异常处理支持,请将以下行添加到 Application.mk 文件中。要启用对单个模块的异常处理支持,请将以下行添加到其各自的 Android.mk 文件中。
因此,NDK 可以支持 STL,但有例外,但默认情况下它是关闭的。本页详细介绍了当您将-fno-exceptions
与 GNU 编译器一起使用时会发生什么(并且 NDK 编译器是基于 gcc 的)。由于此 STL 全部在标头中实现,因此它对异常的使用取决于包含它的代码(例如您的代码)是使用还是没有异常进行编译。如果在代码中使用异常,并使用 -fexceptions
进行编译,则可以在自己的代码中正常使用异常,也可以在 STL 中使用异常。
相关文章:
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- NDK:如何通过ndkr15c包含"RefBase.h"?
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 为什么使用 NDK 不能存在不同的 stl 实现?
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- Android NDK 未定义对ASensorEventQueue_registerSensor的引用
- 如何将 libjpeg-turbo Android NDK 添加为静态库
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- Android NDK - 无法在 Visual Studio 2017 中调试
- 对于哪些 ABI,我可以使用 NDK v10e 构建 apk?
- -fno-unwind-tables 和 -fno-async-unwind-tables 不起作用 NDK clang
- 不再支持Android NDK APP_STL gnustl_shared
- 我在 ndk 中构建文件时遇到错误 android.mk
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 为 Android NDK 编译库
- 将预编译的 C 共享库与 JNI/NDK 结合使用
- Android NDK / Exceptions?