ZHCU820Y September 2004 – June 2021
编译器支持根据 ANSI/ISO 14882 C++ 标准定义的 C++ 异常处理功能。请参阅由 Bjarne Stroustrup 编写的《C++ 编程语言》第三版。编译器的 --exceptions 选项启用异常处理功能。编译器的默认设置是不支持异常处理。
若要在异常下正常工作,应用程序中的所有 C++ 文件都必须使用 --exceptions 选项进行编译,而不管该文件中是否存在异常。混合使用启用了异常和禁用了异常的目标文件和库可能导致未定义的行为。
异常处理需要在运行时支持库中得到支持,该库以启用异常和禁用异常的形式提供;您必须使用正确的表单链接。使用自动选择库(默认)选项时,链接器会自动选择正确的库,请参阅Topic Link Label5.3.1.1。如果手动选择库,并且启用异常,则必须使用名称中包含 _eh 的运行时支持库。
使用 --exceptions 选项会导致编译器插入异常处理代码。这段代码会增加程序的大小。,但 EABI 的实现需要通过将信息移动到 const 数据段来减少代码大小开销。
有关运行时库的详细信息,请参阅Topic Link Label8.1。