#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». После того, как я добавил настройку также для конфигурации «Сборки» и переиндексировал, ошибки исчезли.