Android NDK /例外?

时间:2015-06-11 10:00:42

标签: android c++ exception stl android-ndk

我读到只有STL的GNU实现支持C ++异常。我不确定它究竟意味着什么。

如果我没有使用此实现,是否意味着:

  • STL不会抛出异常,但我仍然可以在任何我想要的地方使用自己的例外。

  • 或者在每一段代码中禁用所有异常,就像它们不是C ++特性一样?

1 个答案:

答案 0 :(得分:2)

来自Android NDK页面:

C ++例外

在NDK之后的NDK的所有版本中,NDK工具链允许您使用支持异常处理的C ++运行时。但是,为了确保与早期版本的兼容性,它默认编译所有带有-fno-exceptions支持的C ++源代码。您可以为整个应用程序或单个模块启用C ++例外。

要为整个应用程序启用异常处理支持,请将以下行添加到Application.mk文件中。要为各个模块启用异常处理支持,请将以下行添加到各自的Android.mk文件中。

因此,NDK 可以支持带有异常的STL,但默认情况下它是关闭的。 This页面详细说明了当您使用-fno-exceptions与GNU编译器(以及NDK编译器是基于gcc)时会发生什么。由于此STL全部在头文件中实现,因此它的异常使用取决于包含它的代码(例如您的代码)是否编译有或没有异常。如果在代码中使用异常,并使用-fexceptions进行编译,则可以在自己的代码中正常使用异常,以及在STL中使用异常。