57

Arduino をプログラミングするときにC++11を使用するにはどうすればよいですか?

Arduino IDE または別の環境を使用しても問題ありません。私が最も興味を持っているのは、標準ライブラリの変更が必要なことではなく、コア言語の改善です。

4

6 に答える 6

52

バージョン 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
  1. そのファイル内で、たとえば、フラグを変更できます。
  • C++ ファイルのデフォルトのコンパイル フラグを変更するためのcompiler.c.flags 。
  • C++ ファイルのデフォルトのコンパイル フラグを変更するためのcompiler.cpp.flags 。
  1. 構成ファイルの対応するセクションで、「AVR/SAM コンパイル パターン」というタイトルの下で、「レシピ」またはコンパイル パターンのいずれかを変更することもできます。
  2. 変更を行った後、少なくともバージョン 1.5.7 でArduino IDE を再起動する必要があります。

例えば、

Arduino IDE バージョン 1.5.7 および 1.5.8 でテストされたC++11 (C++0x) のサポートを有効にするには、次の行の末尾にフラグ「-std=gnu++11」を追加するだけです。 compiler.cpp.flags=" を使用します。

近い将来、Arduino IDEで C++11 がデフォルトで有効になる予定です。ただし、バージョン 1.5.8 (2014 年 10 月) の時点ではまだそうではありません。

于 2014-10-03T08:21:37.157 に答える
14

まず、GCC 4.7 以降 (したがって AVR-GCC 4.7 以降) のみが C++11 をサポートします。したがって、次のようにインストールされているバージョンを確認してください。

gcc --version
avr-gcc --version

AVR-GCC が 4.7 以上の場合、C++11 を使用できる可能性があります。

Arduino IDE は、カスタム コンパイラ フラグをサポートしていません。これはリクエストされましたが、まだ実装されていません。

そのため、他の環境を使用するか、コマンド ラインからプログラムを直接コンパイルする必要があります。

AVR-GCC を使用してコマンド ラインから直接コンパイルする場合は、C++11 サポートを有効にするためのコンパイラ フラグを追加するだけです。

-std=c++11

特定の開発環境では、ほとんどの場合、IDE 内のビルド オプションからのコンパイラ フラグの編集がサポートされます。上記のフラグは、各環境のフラグのリストに追加する必要があります。


C++0xは、C++11 標準のワーキング ドラフトの名前でした。C++0x のサポートは、GCC 4.3 以降で利用できます。ただし、これは厳密に実験的なサポートであるため、C++11 機能が存在することを確実に期待することはできません。GCC の対応するバージョンで利用可能な機能の完全なリストを次に示します。AVR-GCC で使用できる機能は、対応する GCC バージョンで使用できるものと同じです。

C++0x のコンパイラ フラグは次のとおりです。

-std=c++0x
于 2013-04-12T16:56:03.177 に答える