根据 ANSI/ISO/IEC 14882:2014 标准 (C++14) 中的定义,MSP430 编译器支持 C++,包括以下特性:
- 支持完整的 C++ 标准库,但具有以下例外情况。
- 模板
- 异常,通过 --exceptions 选项启用;请参阅Topic Link Label6.8。
- 运行时类型信息 (RTTI),可通过 --rtti 编译器选项启用。
编译器支持 ISO 标准化的 2014 年标准 C++。但是,以下特性未 实现或完全受支持:
- 编译器不支持嵌入式 C++ 运行时支持库。
- 此库支持宽字符 (wchar_t),因为为字符定义的模板函数和类也适用于 wchar_t。例如,实现了宽字符流类 wios、wiostream、wstreambuf 等(对应于字符类 ios、iostream、streambuf)。但是,没有用于宽字符的低级别文件 I/O。此外,C 库接口对宽字符的支持(通过 C++ 标头 <cwchar> 和 <cwctype>)是有限的,如上面 C 库中所述。
- 如果两个类不相关,则 reinterpret_cast 类型不允许将一个类的 pointer-to-member 强制转换为另一个类的 pointer-to-member。
- 仅部分支持目标特定类型的常量表达式。
- 不支持新的字符类型(在 C++11 标准中引入)。
- 不支持 Unicode 字符串文字(在 C++11 标准中引入)。
- 不支持文字中的通用字符名称(在 C++11 标准中引入)。
- 不支持强比较和交换(在 C++11 标准中引入)。
- 不支持双向围栏(在 C++11 标准中引入)。
- 不支持内存模型(在 C++11 标准中引入)。
- 不支持传播异常(在 C++11 标准中引入)。
- 不支持线程本地存储(在 C++11 标准中引入)。
- 不支持动态初始化和并发销毁(在 C++11 标准中引入)。
如果与使用旧版编译器编译的 C++ 目标文件或库链接,为了支持 C++14 所做的更改可能会导致“未定义的符号”错误。如果出现这样的链接时错误,请使用 --no_demangle 命令行选项重新编译 C++ 代码。如果任何未定义的符号名称以 _Z 或 _ZVT 开头,请重新编译整个应用,包括目标文件和库。如果没有库的源代码,请下载库的新编译版本。