我要为Arduino创建一个应用程序。目前我安装了1.6.9版本。我想使用C ++。我知道不支持异常和动态分配,但在哪里可以获得不支持哪些C ++功能的确切列表? 互联网上有一些信息,但有些信息很旧,有些信息太笼统......
提前致谢, 甲
答案 0 :(得分:1)
在documentation of Atmel for AVR Libc中回答以下问题我可以在AVR上使用C ++吗?:
基本上是的,支持C ++(假设你的编译器已被配置和编译以支持它,当然)。以.cc,.cpp或.C结尾的源文件将自动导致编译器前端调用C ++编译器。或者,可以通过名称avr-c ++显式调用C ++编译器。 但是,目前还没有对libstdc ++的支持,libstdc ++是完整C ++实现所需的标准支持库。这对可编译的C ++程序施加了许多限制。其中包括:
- 显然,没有任何与C ++相关的标准函数,类和模板类可用。
- 未实现运算符new和delete,尝试使用它们将导致链接器抱怨未定义的外部引用。 (这可能是固定的。)
- 一些提供的包含文件不是C ++安全的,i。即他们需要被包裹起来
extern"C" { . . . }
(这当然也可以修复。)- 不支持例外情况。由于在C ++前端默认启用了异常,因此在编译器选项中使用-fno-exceptions显式需要关闭它们。如果不这样做,链接器会抱怨对__gxx_personality_sj0的未定义外部引用。
支持构造函数和析构函数,包括全局函数。