Eclipse CDT показывает семантические ошибки, но компиляция в порядке - PullRequest
29 голосов
/ 16 ноября 2011

Я установил Eclipse Indigo для разработчиков Linux на C / C ++ в Ubuntu 10.04 x86.

Когда я использую общий предопределенный макрос __BASE_FILE__ Eclipse говорит Symbol '__BASE_FILE__' could not be resolved, но компиляция в порядке.Я должен использовать его так часто в своем коде, и Eclipse заполняет мой экран красными линиями и иконками ошибок :)

Как это исправить?

Ответы [ 19 ]

23 голосов
/ 10 апреля 2012

Не уверен, что это решает вашу конкретную проблему, но у меня также были семантические ошибки. Они только что вышли на ровном месте после рабочего проекта.

В любом случае, я исправил это с помощью одной опции в настройках рабочего пространства, установив: «Конфигурация сборки для индексатора: использовать активную конфигурацию сборки»

Другой вариант был «Использовать конфигурацию сборки, указанную в настройках индексатора проекта», и это тот, который не работал. Я думаю, что он мог быть поврежден после аварии затмения.

20 голосов
/ 26 августа 2013

Окно -> Настройки -> C / C ++ -> Анализ кода -> Синтаксис и семантические ошибки: OFF

Это не решит причину проблемы, но, по крайней мере, предотвратит отображение ложных ошибок.

5 голосов
/ 06 сентября 2016

Удаление папки .metadata и затем Импорт проекта.

Этот путь в порядке!

5 голосов
/ 12 июня 2014

Самое простое решение - сбросить индексатор:

Window / Preferences / C / C ++ / Indexer.
снимите флажок «Включить индексатор» - >> OK
перестроить все, может отображаться множествоошибки
отметьте «Включить индексатор» - >> OK
восстановить все

Эта ошибка может быть вызвана принудительным закрытием затмения при сбое питания.

3 голосов
/ 07 декабря 2012

IMO правильное решение - определить символ в Project -> Properties-> C / C ++ General -> Paths and Symbols -> вкладка Symbols . Поскольку вы можете предполагать, что символ всегда будет предоставляться компилятором, вы просто указываете Eclipse считать его определенным.

У меня была такая же проблема совсем недавно, когда Eclipse жаловался на неопределенный макрос, который я всегда предоставляю с использованием опции компилятора -D<MACRO_NAME>.

3 голосов
/ 16 февраля 2014

Я думаю, что это как-то связано с рабочей областью / .metadata.Мне сообщили о проблеме семантических ошибок, но Hello World компилируется и запускается.Я удалил проект, создал другой, такой же отчет об ошибках.Переустановил CDT, тоже самое.Удалил рабочее пространство, выключил Eclipse, перезапустил, создал новый привет мир, тоже самое.Снова удалил рабочее пространство, снова выключил Eclipse, на этот раз заметил, что Eclipse воссоздал папку рабочего пространства во время завершения работы, когда он не смог ее найти.Удалил рабочее пространство с выключенным Eclipse.Перезапустил Eclipse, создал проект HW, ошибки показывались в течение секунды, а затем исчезали.Удаленный проект, созданный другой, ошибки показывают в течение секунды, затем пуф.Если у вас действительно были проекты в вашей рабочей области (у меня была чистая установка), держу пари, что вы можете просто удалить папку .metadata в рабочей области, и она исправит это.

3 голосов
/ 16 ноября 2011

Обновлено: Вы должны добавить правильные пути к Project-> Propoerties-> C / C ++ General-> Paths and Symbols. Если это не помогает, вы можете настроить Eclipse Code Analyzer (который генерирует «ошибки») в Project-> Properties-> C / C ++ General-> Code Analysis. Под описанием ошибки, с которой у вас возникла проблема, попробуйте Настроить выбранные-> Область-> Шаблоны исключений.

2 голосов
/ 05 февраля 2016

Вам нужно перестроить индекс вашего проекта.

Щелкните правой кнопкой мыши по проекту, затем выберите Index-> ​​Rebuild.

1 голос
/ 29 декабря 2012

Я лично согласен с ответом компоста.

Хорошо решить реальную проблему, которая есть у анализатора кода eclipse.

Но когда я пытаюсь сделать это: определите символ в Project ->Свойства-> C / C ++ Общие -> Пути и символы

Я не нахожу вкладку символа или место для добавления символа.то, что я хочу сделать, это поместить макросы, такие как -DANDROID или #define ANDROID 1, чтобы затмение, чтобы анализатор кода мог найти это определение.

1 голос
/ 03 июня 2014

добавив в качестве другого ответа, надеюсь, это кому-нибудь поможет.

У меня есть простое рабочее пространство (1 совместно используемый объект c ++ (версия DLL для Linux, 3 исполняемых файла c ++ и проект pydev python)

Я извлек весь код на новую машину, и он прекрасно работает, но имел многочисленные «семантические ошибки» в коде std-c и std-C ++ и включает в себя ... Я прошел все настройки обнаружения / индексации безрезультатно .

==> удаление всей папки .metadata исправило это.

Поскольку в рабочей области нет ничего нетривиального (все в файлах проекта / make-файлах), затмение счастливо создало новую рабочую область, и мне просто нужно было создать файл-> импорт-> существующие проекты

...