我設置Eclipse C++ - 版本:Neon版本(4.6.0) - 版本ID:20160613-1800 - 使用GNU gcc ARM嵌入式工具鏈(而不是gcc4mbed)。工具鏈很好用,但是我遇到了一個涉及(我認爲)Eclipse最近項目的索引器的問題。爲什麼Eclipse的索引器識別一些類,但不識別其他類?
創建一些類的#include「mbed.h」
聲明類型DigitalOut的一些成員變量:如果我給我的重現問題的步驟
我的問題應該是清楚的。請注意,Eclipse認識到這一點很好,因爲文本變成了粗體,並且在與變量交互時代碼完成工作正常。
聲明另一個類型爲PwmOut的成員變量。請注意,Eclipse不會識別這一點,文本不會變爲粗體,並且代碼完成不起作用,因爲Eclipse不知道PwmOut是什麼。 Eclipse中說:
錯誤(1項)
類型 'PWMOUT' 無法解析。 - main.cpp中 - 語義錯誤
- 構建項目成功完成,編譯器不引發錯誤,儘管Eclipse中始終不承認PWMOUT。 Binary在我的LPC1768上正確運行。
Eclipse如何識別DigitalOut而不是PwmOut?兩者都在mbed.h中的相同代碼塊中列出 - 而DigitalOut.h與PwmOut.h位於同一目錄中。
如果有幫助,here is an example project我從developer.mbed.org導出,您可以導入到Eclipse C++作爲現有的Makefile項目。
我試着調整我發現的建議,例如在項目 - >屬性 - > C/C++常規 - >路徑和符號 - >包括,重建索引和「清新」中的所有文件該指數。我無法讓Eclipse識別它們。
編輯:我想補充說,如果我點擊「類型」PwmOut「無法解決」在「問題」窗口中的錯誤消息,Eclipse鎖定了幾秒鐘,然後崩潰與堆棧溢出。
要檢查的一件事是在代碼中未定義的makefile中定義的名稱。 Codan可能認爲'PwmOut'由於條件編譯而被排除在外。 – user4581301
@ user4581301感謝您的建議。你能澄清你的意思嗎?這是當您從developer.mbed.org導出項目時隨項目提供的Makefile的要點https://gist.github.com/yankee14/c73325c1ab035c167bc2b3c3117dfe09 – Yankee
對不起,但我不會從互聯網上下載匿名內容。你正在尋找的是在makefile的編譯器規則中使用gcc編譯器選項'-D'。這些通常用於通過指示編譯器不編譯代碼區域來打開或關閉功能。例如'#ifdef DEBUG std :: cerr <<「調試信息\ n」#endif'。如果DEBUG已經在代碼中使用'#define DEBUG'定義,或者在編譯器命令行中使用'-D DEBUG'定義,則會打印「Debug Message」。請注意,這只是這個問題的一個常見解決方案。這可能不是你的解決方案。 –
user4581301