Arduino 1.6.9及更高版本的c++支持

Arduino 1.6.9 and later c++ support

本文关键字:版本 支持 c++ 高版本 Arduino      更新时间:2023-10-16

我要为Arduino创建一个应用程序。目前我安装的是1.6.9版本。我想用c++。我知道不支持异常和动态分配,但是我从哪里可以得到不支持的c++特性的确切列表?网上有一些信息,但有些很老,有些太笼统了……

提前感谢,

在AVR Libc的Atmel文档中是以下问题的答案我可以在AVR上使用c++吗?:

基本上是的,c++是支持的(当然,假设你的编译器已经配置和编译为支持它)。以.cc, .cpp或.C结尾的源文件将自动导致编译器前端调用c++编译器。或者,c++编译器可以通过avr-c++这个名字显式调用。但是,目前还没有对libstdc++的支持,libstdc++是一个完整的c++实现所需的标准支持库。这对可编译的c++程序施加了许多限制。其中包括:

  • 显然,没有c++相关的标准函数、类和模板类可用。操作符new和delete没有实现,尝试使用它们将导致链接器报错未定义的外部引用。(这可能会被修复)
  • 一些提供的include文件不是c++安全的,也就是说,它们需要被包装成extern"C" { . . . } (这当然也可以修复)
  • 不支持异常。由于异常在c++前端默认是启用的,因此需要在编译器选项中使用-fno-exceptions显式地关闭异常。如果做不到这一点,链接器将报错对__gxx_personality_sj0的未定义外部引用。

支持构造函数和析构函数,包括全局的。