我将为Arduino创建一个应用程序。目前我安装了1.6.9版本。我想使用C ++。我知道不支持异常和动态分配,但是在哪里可以找到不支持哪些C ++功能的确切列表?
互联网上有一些信息,但是有些信息太旧了,有些太笼统了...
提前致谢,
一种
最佳答案
在documentation of Atmel for AVR Libc中,是对我可以在AVR上使用C ++的问题的以下答案:
基本上可以,C ++受支持(当然,假设您的编译器已配置并编译为支持它)。以.cc,.cpp或.C结尾的源文件将自动导致编译器前端调用C ++编译器。或者,可以使用名称avr-c ++显式调用C ++编译器。
但是,目前不支持libstdc ++,这是完整C ++实现所需的标准支持库。这对可以编译的C ++程序施加了许多限制。其中包括:
显然,没有C ++相关的标准函数,类和模板类可用。
运算符new和delete没有实现,尝试使用它们将导致链接器抱怨未定义的外部引用。 (这可能是固定的。)
某些提供的包含文件不是C ++安全的,即。 e。他们需要包装成
extern"C" { . . . }
(这当然也可以解决。)
不支持异常。由于C ++前端默认情况下启用了异常,因此必须使用编译器选项中的-fno-exceptions明确将其关闭。如果失败,则链接器将抱怨未定义对__gxx_personality_sj0的外部引用。
尽管支持构造函数和析构函数,包括全局的。
关于c++ - Arduino 1.6.9和更高版本的C++支持,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39970113/