雖然,可以順利編譯,不會出現錯誤訊息。執行也都正常,完全不像是『語法錯誤』或『宣告的標頭檔(header file)不存在」所造成的。但是,看起來很礙眼,很想除之而後快。
經過 Google 的查詢協助,可以得知這個問題是 Eclipse-CDT 的設定所造成的。網路上提供的修正,多是將 #include <...> 的 header 檔所在的目錄,加入到 Eclipse-CDT 的設定中。
可是,在筆者的認知中,基本的 C 之 header 檔所在的目錄是不需設定的,只有使用額外的函式庫(如:OpenCV)時,才需要在專案的設定裏加入 include 的目錄路徑,或函式庫的鏈結時的目錄路徑。
所以,問題一定是發生在一個「應預設設定」而「未設定」的地方。經過嘗試,發現了這個「應設定而未設定」的問題,在修改這個設定後,再做些專案整理操作,即可去除這個『Unresolved inclusion: <...>』的問題。
一、設定專案的 C 語言路徑設定
從「專案」→「內容」→左欄的「C/C++ General」→「Preprocessor Include Paths, Macros etc.」,再勾選右欄中的「Enable language setting providers for this project」後,點選「套用」和「確定」。二、專案整理、清除之前的錯誤記錄
光是修改上個設定還是不能排除這個訊息,還要將之前的記錄清除才可。- 在 Eclipse 的專案瀏覽器中,在欲修正的專案名稱上按「滑鼠右鍵」,出現一個專案操作選單,點選「Clean Project」以清除之前的專案記錄。
- 重覆上一操作,但在專案操作選單中,點選「關閉專案」。
- 重覆上一操作,再在專案操作選單中,點選「開啟專案」。 這時『Unresolved inclusion: <...>』的訊息應該已經清除了,但是,可能有些『Type '...' can not be resolved』訊息仍然存在。
- 重覆上一操作,在專案操作選單中,點選「Index」→「Rebuild」以重建 include 內的宣告記錄。這一來,Eclipse-CDT 就不會找不到變數的型態宣告了。
- 使用「匯入」將專案加入目前的「工作空間」(Work Space),因為「匯入」前的專案設定,未必完全轉移到這個開發中的「工作空間」,且 Eclipse-CDT 未能以預設的「專案型態」正確設定這些值。
- 建立新的專案時,未以正確的「專案型態」(Project Type)開設專案。
- 更新或升級 Eclipse 後,新的預設值與原來不同。
註:幾年前,有次用『 yum update 』更新後,連專案都開不了。最後將 Eclipse 的設定『 ~/.eclipse 』全部清除,才得以順利開啟;之後的更新都沒再出現類似狀況。
已測試版本:
- Fedora 17 + Eclipse 4.2.1
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)