Eclipse NEON CDT не распознает содержимое заголовка c 11/14

#c 11 #eclipse-cdt #autotools

#c 11 #eclipse-cdt #автоинструменты

Вопрос:

Eclipse NEON.1 4.6.1 с CDT 9.1.0, g 5.4.0

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

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

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

У меня есть фактическая компиляция программы, работающей с использованием автоматической переменной AM_CXXFLAGS. Чтобы заставить его работать для индексатора, я зашел в eclipse в раздел Свойства проекта> C / C Общие> Препроцессор Включает пути, макросы

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

Ответ №1:

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