如何使用c ++ 11编写Arduino?

wal*_*rii 53 c++ ide arduino firmware

c++11在编写Arduino时如何使用?我可以使用Arduino IDE或其他环境.我最感兴趣的是核心语言改进,而不是需要标准库更改的东西.

jos*_*nez 47

版本1.6.6开始,Arduino IDE默认启用c ++ 11.

对于旧版本,请继续阅读:

更改工具链的任何元素(包括汇编程序,编译器,链接程序或归档程序)的标记非常容易.

在Arduino IDE 1.5.7版(2014年7月发布)上测试过,

  1. 找到platform.txt文件,
    • AVR架构=> {安装路径}\hardware\arduino\avr\platform.txt
    • SAM架构=> {安装路径}\hardware\arduino\sam\platform.txt
  2. 在该文件中,您可以更改任何标志,例如,
    • compiler.c.flags,用于更改C++文件的缺省编译标志.
    • compiler.cpp.flags用于更改C++文件的缺省编译标志.
  3. 您还可以在配置文件的相应部分更改任何"配方"或编译模式,标题为"AVR/SAM编译模式".
  4. 进行更改后,必须重新启动Arduino IDE,至少在1.5.7版本上.

例如,

在Arduino IDE版本1.5.7和1.5.8上测试支持C++ 11(C++ 0x),您只需在行尾添加标记"-std = gnu ++ 11" with compiler.cpp.flags =".

预计在不久的将来,在Arduino IDE上默认启用C++ 11 .但是,从版本1.5.8(2014年10月)开始,情况仍然如此.

  • 您可以使用platform.local.txt追加标记.echo"compiler.cpp.extra_flags = -std = gnu ++ 11"> ./hardware/arduino/avr/platform.local.txt (3认同)
  • 至少最新的(atow)Arduino IDE在默认的platform.txt中有`-std = gnu ++ 11`标志.在这里你可以看到提交[启用C++ 11支持:github.com/arduino/Arduino/commit/ddf4d878fdb39173b872f69149fb4cf1cd9fd017 ](https://github.com/arduino/Arduino/commit/ddf4d878fdb39173b872f69149fb4cf1cd9fd017#diff-0d45b5349ab1c852b7cad3e6b173e880).这里也提到http://stackoverflow.com/a/33718020/1338846 (3认同)
  • C++17 怎么样? (2认同)

Cap*_*apt 15

Arduino IDE 1.6.6及更新版本默认启用C++ 11(它们在platform.txt文件中设置了编译器标志"-std = gnu ++ 11").


ash*_*shr 14

首先,仅支持gcc4.7及以上(因此avr-gcc4.7及以上)C++11.因此,请检查安装的版本:

gcc --version
avr-gcc --version
Run Code Online (Sandbox Code Playgroud)

如果avr-gcc是4.7或更高,那么您可以使用C++11.

Arduino IDE不支持自定义编译器标志.这已被要求但尚未实施.

因此,您不得不使用其他环境或直接从命令行编译程序.

如果直接从命令行使用编译avr-gcc,您只需添加一个额外的编译器标志以启用C++ 11支持.

-std=c++11
Run Code Online (Sandbox Code Playgroud)

对于特定的开发环境,大多数都支持从IDE中的构建选项编辑编译器标志.需要将上述标志添加到每个环境的标志列表中.


C++0xC++11标准的工作草案的名称.C++0x支持从gcc4.3开始提供.但是,这是严格的实验性支持,因此您无法真正期望C++11存在功能.以下是相应版本的完整功能列表gcc.功能的可用性avr-gcc将与相应gcc版本中的可用功能相同.

编译器标志C++0x是:

-std=c++0x
Run Code Online (Sandbox Code Playgroud)