2012-05-11 102 views
15

所以我建立一些Arduino的代碼在eclipse,如Your Second Arduino Project描述,但我每次使用一個Arduino庫時間,如Serial,Eclipse中強調我的函數名,聲稱他們不能得到解決。然而,代碼實際上是編譯的,所以我對Eclipse爲什麼認爲這些函數缺失感到不知所措。如果任何人有任何想法如何解決這個問題,將不勝感激。事先感謝。Eclipse C/C++顯示錯誤但編譯?

編輯:我本來應該更具體的是,Eclipse強調Arduino的庫裏面的方法。所以如果我使用Serial.println("hello");,它強調println()並聲稱它不能被解決。然後它編譯得很好,並且該方法在上傳到arduino板時起作用。

EDIT2:我發現我的錯誤,原來我試圖用在C文件中的一些C++函數,和Eclipse不喜歡它;我重命名爲.cpp,所有紅色消失;)感謝您的幫助!

+0

即使在編譯之後,它是否會強調它們? – Kiril

+0

嗯,那很不幸!我不確定可能是什麼原因造成的。 – Kiril

+0

你有autobuild嗎? –

回答

5

對於初學者,下劃線是什麼顏色?這有所不同,因爲黃色意味着它是一個警告,紅色意味着它是一個錯誤(關鍵,不會在大多數情況下建立)。

其次,你需要看的「問題」選項卡,看看是否有實際的錯誤。如果沒有任何東西,那麼它確實編譯正確。

現在回到原來的問題。根據您正在構建的項目類型,這種行爲並不罕見。 Eclipse看起來在索引某些項目方面做得不好。當你從命令行運行「make all」時(這實際上是Eclipse在構建過程中所做的),它可能會解決所有的代碼並構建它。但是,Eclipse使用不同的獨立工具來索引所有源代碼並解析變量/函數定義和聲明。這實際上是左手不知道右手在做什麼的情況。

+3

所有的下劃線都是紅色的,我的問題標籤說他們都是「語義錯誤」。有趣的是,要成功編譯完全是紅色的文件,是否有某種方法可以至少隱藏所有這些紅線? :P – SuperTron

28

的Eclipse可能會或可能不會從您的構建設置拉動路徑索引,根據配置。最有可能的是,它不是......它的構建是正確的,因爲你的構建設置很好,你可以手工構建。 CDT索引器(這是決定所有這些漂亮下劃線以及代碼完成,F3聲明跳轉等來自何處的引擎)在很多情況下都不夠聰明,無法解析出你的Makefile和知道在哪裏尋找標題和來源。您需要手動告訴Eclipse該信息。

轉至項目屬性 - > C/C++常規 - >路徑和符號

工作,你需要把這個變化很大,這取決於你的環境的量。如果外部庫是讓你頭痛,那麼你可能只需要添加該庫,並重新編制路徑的唯一的事:

在項目上右鍵單擊,然後選擇首頁 - >重建

+0

@我花了2天才解決這個問題。謝謝你。儘管路徑已經指定,我再次手動添加並重建索引。這樣做的工作。這樣的小丑是非常令人沮喪的,希望這在下一個avr eclipse插件中得到解決。 – tez

+1

我可以瘋了解決這個問題,但你做了一個2點擊解決方案 –

+3

索引 - >重建對我有幫助;) – stviper

1

我已經包含的文件夾中

項目屬性 - > C/C++常規 - >路徑和符號 - >包括

當我刪除那些紅色下劃線走了,即構建和IDE那裏同步。

0

我有同樣的問題。 索引 - >重建沒有幫助。 當我在main.cpp中添加行#include <avr/iom1280.h>並且製作索引 - >重建強調消失。 然後我刪除了行#include <avr/iom1280.h>,項目仍然沒有inderlines。

用您的控制器的名稱替換iom1280.h。看看「AVR \包括\ AVR \」可用名

+1

不是理想的解決方案。 在編譯期間是否爲你編寫這些代碼,並將它基於你指定給編譯器的MCU。 – Larcho

0

Eclipse與C++一樣不適用於Java,但它會在菜單欄中按「重建」時警告您。

試試看,看看它是否能解決你的問題。

1

下面的解決方案適用於我: 點擊右鍵點擊您的項目。然後:屬性 - > C/C++常規 - >路徑和符號 - >符號 - > GNU C++。 幾乎可以肯定的是,如果你有這個問題,根本就沒有符號。添加符號「__cplusplus」與價值「201402L」 在此之後: 右鍵單擊項目 - >首頁 - >重建 你完成了。

相關問題