2015-09-18 45 views
4

首先,我知道-std = C++ 11標誌來啓用C++ 11支持以及放置它的位置。我已將-std=c++11追加到Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags,並且編譯工作正常。但是索引器不協調,例如,如果我使用std::map(C++ 11)的emplace函數,它將不會找到emplace函數。Eclipse CDT索引器沒有完全識別C++ 11

#include <map> 

int main() { 
    std::map<int, int> data; 
    data.empalce(5,5); 

我還檢查了以下相關問題:

更新:現在,我已經圍繞它發揮甚至沒有按不認識std :: map類型,儘管編譯好的和日食的發現所有的頭......

  • 編譯器GCC Mingw64 5.2.0
  • Eclipse的火星4.5
  • CDT 8.7
+0

嘗試這樣的回答:https://stackoverflow.com/questions/17131744/eclipse-cdt-indexer-does-not-know-c11-containers/24628885#24628885 – Galik

+0

試過一個,也...也嘗試在月食luna cdt 8.6 ...似乎是一個索引器錯誤與std :: map ...將propably報告在日食論壇和鏈接到那一 – Matze

+0

有一個索引器錯誤,但它現在修復。你有沒有嘗試更新你的插件?從菜單中選擇「幫助 - >檢查更新」。 – Galik

回答

6

Eclipse的火星確實比以前的版本有一點不同。

第一步獲得索引器錯誤突出顯示工作 - 在上面鏈接Enable C++11 in Eclipse CDT (Juno/Kepler/Luna) indexer覆蓋。如果你已經完成了所有這些工作,如果我知道你遇到了什麼,我就會變成黑客。到目前爲止,火星已經有點不可思議了。

  1. 轉到Project-> properties-> C/C++ General-> Preprocessor Include Paths。
  2. 單擊提供者選項卡。
  3. 單擊CDT GCC內置編譯器設置MinGW
  4. 單擊右側的向上移動按鈕。
  5. 在語言設置提供程序選項
    1. 點擊關閉使用全局提供項目
    2. 添加-std = C++ 1Y在命令在命令行的末尾來獲得編譯器規格之間共享。

順便說一句,如果有人知道在哪裏的全局設置,所以我可以默認這種行爲,請讓我知道。

步驟2得到的編譯器工作

  1. 轉到項目 - >屬性 - > C/C++建設 - >設置。
  2. 轉到工具設置選項卡。
  3. 展開GCC C++編譯器
  4. Click方言 從Language Standard下拉菜單中選擇您希望定位的C++標準。
+2

除了你的第1步對我沒有幫助,你可以在'窗口 - >首選項 - > C/C++ - >生成 - >設置 - >發現「下做到這一點......這個問題真的很討厭,我會試試另一個CDT版本... – Matze

+0

對不起,幫助,很高興你能幫助我。謝謝! – user4581301

-1

Eclipse CDT通過運行索引器來了解窗口中的C++代碼。這個索引器只不過是用某些編譯選項調用GCC C++編譯器。有時,您可能想要更改此索引器使用的編譯器選項。

例如,我最近發現C++ 11容器和類(如未來)沒有被索引器解析,並且以紅色的波形下劃線。這是因爲索引器使用的編譯器選項沒有-std = C++ 11。

要更改索引器的編譯器選項:

  1. 打開首選項,然後轉到C/C++ - >構建 - >設置。
  2. 單擊發現選項卡並選擇CDT GCC內置編譯器設置。
  3. 根據需要修改下面顯示的命令字符串。例如,在這裏我添加了-std = C++ 11。
  4. 在保存後,Eclipse CDT將自動爲您的C++ 文件重新編制索引。但是,我發現這並沒有刪除 未解決的項目。
  5. 我通過右鍵單擊 項目並選擇索引 - >重建手動重新編制索引。這工作!
+0

「這個索引器只不過是用某些編譯選項調用GCC C++編譯器。」是非常誤導的。確實,CDT的內置編譯器設置提供程序將使用某些編譯選項來調用GCC,但是這是通過將空文件作爲輸入來完成的,唯一的目的是發現內置包含路徑和#define。項目中的實際代碼由CDT自己的解析器和代碼分析器處理。 – HighCommander4