2016-10-11 130 views
0

我将为Arduino创建一个应用程序。目前我安装了1.6.9版本。我想使用C++。我知道异常和动态分配不受支持,但我可以在哪里获得不支持哪些C++功能的确切列表? 有在互联网上的一些信息,但有些是很老,另一个是太一般了......Arduino 1.6.9及更高版本C++支持

由于提前, 一个

回答

1

documentation of Atmel for AVR Libc是以下问题的答案我可以使用AVR上的C++?

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

  • 显然,没有任何C++相关的标准函数,类和模板类可用。
  • 未实现运算符new和delete,试图使用它们会导致链接器抱怨未定义的外部引用。 (这可能是固定的。)
  • 某些提供的包含文件不是C++安全的,即i。即他们需要包装成 extern"C" { . . . } (这当然也可以修复。)
  • 例外情况不受支持。由于C++前端默认启用了异常,因此需要在编译器选项中使用-fno-exceptions来关闭它们。如果没有这个,链接器会抱怨一个未定义的__gxx_personality_sj0外部引用。

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

+0

谢谢。其实我看到了这些信息。文字多大?现在不确定它是否相关。例如,“这当然可以修复”,从文中可以看出C++支持可以扩展。这就是为什么我询问当前实际信息的原因。如果没有好的信息资源,可能我只需要运行一些测试。 – Andrei

+0

没错,没有提到这些答案适用的具体版本。最新的C++参考资料是源文件库中NEWS文件的一个条目,它提到:“提及Jörn最近对avr-libc进行了更多的更改,以使C++更加了解。”此更改是从2014年开始的。要获得更多详细信息,可以查看[subversion资源库](http://svn.savannah.nongnu.org/viewvc/trunk/avr-libc/?root=avr-libc。 )。 –

+0

顺便说一句,你知道是否有一些测试套件检查avr-gcc中的C++可用性吗? – Andrei

相关问题