2016-07-25 1 views
2

おそらくArduinoのIDE> 1.6.2にはC++ 11のサポートがあります。Arduino 1.6.9/1.610のビルドに失敗しました。 '' constexprint 'はタイプに名前を付けません。 "

私はOSX上でバージョン1.6.9を新しくダウンロードして実行しました(そして、他の人が報告しているように、Windowsでも1.6.9/1.6.10と同じです)。

私はこの単純なプログラムをコンパイルするために取得することはできません。

constexpr int get_five() { return 5; } 

void setup() { 
    Serial.begin(9600); 
    Serial.println(get_five()); 
} 

void loop() { 
} 

を私が構築したり、アップロードしようとしたとき、私はこのエラーが表示されます。私はこの質問と回答を見てきました

sketch_jul25a:1: error: 'constexprint' does not name a type 
constexpr int get_five() { return 5; } 
^ 
exit status 1 
'constexprint' does not name a type 

が、私が使用しているIDEの1.6.9バージョンではもはや適用されません - error: 'constexpr' does not name a type m- arduino ide

私はbuでIDEによって出力される一時ファイルを掘りましたilding、そして自動的に機能(私は複数ファイルのスケッチをサポートするために仮定)のヘッダを生成しようとしているようで、それがconstexpr遭遇したときに間違ったことを行います。

#include <Arduino.h> 
#line 1 "/Users/<my_username>/Documents/Arduino/sketch_jul25a/sketch_jul25a.ino" 
#line 1 "/Users/<my_username>/Documents/Arduino/sketch_jul25a/sketch_jul25a.ino" 
#line 1 "/Users/<my_username>/Documents/Arduino/sketch_jul25a/sketch_jul25a.ino" 
constexprint get_five(); // **** <- This looks to be the culprit 
#line 3 "/Users/<my_username>/Documents/Arduino/sketch_jul25a/sketch_jul25a.ino" 
void setup(); 
#line 9 "/Users/<my_username>/Documents/Arduino/sketch_jul25a/sketch_jul25a.ino" 
void loop(); 
#line 1 "/Users/<my_username>/Documents/Arduino/sketch_jul25a/sketch_jul25a.ino" 
constexpr int get_five() { return 5; } 

void setup() { 
    Serial.begin(9600); 
    Serial.println(get_five()); 
} 

void loop() { 
} 

することは、これはArduinoのIDEのバグです?それはOSX特有のものですか? constexprを動作させるための回避策はありますか?

私はグーグルでいくつかのArduinoライブラリがconstexprを使用していることがわかったので、場合によっては動作させることができます。

+0

私は同じ問題を経験しました。この問題は、OSXに固有の問題ではありません。この問題は、1.6.10でも発生します。 – esorton

+0

タイトルのエラーの命名が良いので編集を承認しました。他の人には、例えば 'uint'などを使用している場合など、まったく同じエラーがないかもしれません。これは間違いなく、受け入れ回答の状態として、IDE自体からのアップストリームコンポーネント(コンポーネントはarduino-builder)のエラーです。彼らはしかし、それぞれのIDEアップデートで少し新しいスタックをリリースする傾向があります。 –

答えて

3

これはarduino-builderの既知の制限です。

修正されるまで、関数の上にプロトタイプを自分で追加することができます。これは、IDEが誤って独自のものを生成するのを防ぎます。

constexpr int get_five(); 
constexpr int get_five() { return 5; } 

void setup() { 
    Serial.begin(9600); 
    Serial.println(get_five()); 
} 

void loop() { 
} 
+0

あなたの回避策は私の問題を解決し、5分が過ぎると受け入れます。既知の問題へのリンクがありますか? Googleはこれまで私を助けてくれていません:) –

+0

この問題は、https://github.com/arduino/arduino-builder/issues/30にコメントしたようです。 –

+2

私は 'constexpr'のためのものがあると思いました。私は今作成しました:https://github.com/arduino/arduino-builder/issues/170 –

関連する問題