2016-10-03 3 views
4

Eclipse, NEON.1 4.6.1 с CDT 9.1.0, G ++ 5.4.0Eclipse, CDT NEON не распознает C++ 11/14 содержимого заголовка

Это не распознает все C++ 11/14 функций. Он распознает ключевые слова, такие как auto и nullptr. Однако он не распознает вещи, поступающие из заголовков, которые зависят от правильных символов.

Например, при включении <memory> он распознает старые символы, такие как std::auto_ptr не знал таких, как std::shared_ptr. Эти новые функции находятся в пределах #if __cplusplus >= 201103L.

Я могу заставить его работать для стандартного проекта затмения, установив опцию диалекта, но мне нужно, чтобы он работал с проектом на основе autotools, который не имеет диалектов.

У меня есть фактическая компиляция программы, использующей переменную automake AM_CXXFLAGS. Чтобы заставить его работать для индексатора, я пошел в eclipse в свойства Project> C/C++ General> Preprocessor Include Paths, макросы

Затем на вкладку провайдеров и добавлена ​​опция -std = C++ 14 для команды для Встроенные настройки компилятора CDT GCC. Я также переместил этого провайдера в начало списка. На вкладке ввода вы можете увидеть фактическое значение определения __cplusplus. До того, как я добавил переключатель -std = C++ 14, он был ниже требуемого 201103L после того, как я добавил переключатель, который был намного выше.

ответ

2

Узнал, в чем проблема. Когда я добавил параметр -std=c++14 в команду, чтобы получить спецификацию компилятора на вкладке поставщика, я добавил их для конфигурации «Отладка», когда я использовал эту конфигурацию. Оказалось, что индексирующее устройство всегда использовало конфигурацию «Build». После того, как я добавил настройку также для конфигурации «Build» и повторно проиндексировал ошибки, ушел.