2016-07-25 26 views
2

假設Arduino的IDE> 1.6.2支持C++ 11。Arduino 1.6.9/1.610編譯失敗,''constexprint'沒有命名類型'

我剛剛剛剛下載並在OSX上運行版本1.6.9(和其他人報告的一樣,Windows上的這個repros也是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

我已經鑽入由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分鐘結束時接受。你有一個已知問題的鏈接?谷歌迄今沒有幫助我:) –

+0

我發現這個問題,它看起來像你可能已經評論 - https://github.com/arduino/arduino-builder/issues/30 - 雖然它看起來像它是關閉的。 –

+2

我以爲有一個專門用於'constexpr'的。我現在創建了一個:https://github.com/arduino/arduino-builder/issues/170 –