Eclipse CDT помечает внешнюю "C" в заголовочном файле как синтаксическую ошибку - PullRequest
0 голосов
/ 21 мая 2018

У меня есть файл заголовка C (с расширением .h) и обычный код обёртки C ++:

#ifdef __cplusplus
extern "C" {
#endif
    /* declarations here */
#ifdef __cplusplus
}
#endif

Теперь Eclipse CDT (Oxygen) помечает все, что заключено в extern "C", каксинтаксическая ошибка (с побочным эффектом, что ни одно из объявлений внутри не индексируется).Проект был обновлен с Eclipse Luna (у которого не было проблем с этим), и компилируется с CMake без каких-либо проблем.

Другие заголовочные файлы имеют такую ​​же конструкцию extern "C" и принимаются Eclipse.В проблемном файле также отсутствуют непревзойденные скобки.

Что здесь не так и как я могу это исправить?

1 Ответ

0 голосов
/ 23 мая 2018

Я получил ответ на мою ошибку.

Основная причина, по-видимому, заключается в том, что я изначально сгенерировал файлы проекта Eclipse из CMake, используя

cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/foobar

Эта функция, кажется, не поддерживается и имеетвызвал много неприятностей в прошлом.По их рекомендации я попытался установить cmake4eclipse (доступно на Eclipse Marketplace) и импортировать проект с нуля.

(Если вы повторно используете то же рабочее пространство и сохраняете имя проекта, даже ваши конфигурации сборкисохраняются - возможно, вам просто нужно обновить пути.)

Переход на cmake4eclipse также устраняет некоторые другие ограничения предыдущей установки и, похоже, исправляет еще одну ошибку, когда файлы C выпадают из индекса снова и снова.

...