Заголовок «memory» (возможно, найденный в /usr/include/c++/4.9/memory) включает только «unique_ptr.h» и «shared_ptr.h» (возможно, найден в /usr/include/c++/4.9/ bits/unique_ptr.h и /usr/include/c++/4.9/bits/shared_ptr.h), если макрос «__cplusplus» равен или больше, чем «201103L». Проверьте memory.h для себя, чтобы увидеть условие препроцессора «#if» там, в строке 69 (или найдите строку «#if __cplusplus> = 201103L»).
Как упоминалось выше, компиляция с «-std = C++ 0x» или более поздними версиями стандартов C++ (-std = C++ 11 или -std = C++ 14) решает ошибки компиляции, но не индексацию затмений и проблема автозаполнения.
Чтобы решить проблему индексирования затмения, я добавил макрос препроцессора «__cplusplus» в свойства сборки проекта со значением «201103L», а затем обновил индекс;
Чтобы добавить макрос препроцессора:
"щелкните правой кнопкой мыши проект по проекту исследователя" >> свойства >> C/C++ General >> Препроцессор Включает >> Записи >> GNU C++ >> CDT Пользовательские настройки записи> > Добавить ... >> Макропроцессор препроцессора;
Затем введите макрос с именем «__cplusplus» и значением «201103L»;
Затем, чтобы обновить индекс, сделайте следующее:
«щелкните правой кнопкой мыши проект по проекту исследователя» >> Индекс >> Перестроить;
Ps .: Я использую GCC 4.9.2 и затмение Луны (4.4.2), на убунте 15.04 64бит
Я знаю, что кто-то знает все 30 шагов, чтобы получить это право, но я хотел бы перейти к KDevelop и включить функция автозаполнения;) –
Помогает ли совет в последнем комментарии к [этой ошибке] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=314014)? Я не использую Eclipse, поэтому я не могу попробовать. –
@Als Нет, это не сработало, но tanx. FYI, я открыл свойства проекта-> C/C++ Build-> Discovery Options-> GCC C++ Compiler: в аргументах компилятора Invokation я добавил -std = C++ 0x, но ничего не получилось. – rahman