«Неразрешенное включение» и другие ошибки в Eclipse CDT, только для C источников - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть проект под Eclipse CDT / Ubuntu 18.04LTS (Справка -> О программе: Eclipse IDE для Scientifi c Computing, версия: 2019-12 (4.14.0), идентификатор сборки: 20191212-1212, ОС: Linux, v.4.15.0-36-generi c, x86_64 / gtk 3.22.30, Java версия: 10.0.2).

У меня есть проект с заголовком xalloc.h , источник xalloc.c и источник listing.cpp (среди прочего, но здесь полезно показать проблему). Во всех трех я использую:

  1. #include <stdio.h>,
  2. NULL и
  3. size_t.

Анализатор Eclipse показывает соответствующие ошибки, только для источника C:

  1. Неразрешенное включение:
  2. Тип 'size_t' не может быть разрешен
  3. Символ 'NULL' не может быть решен

(Компиляция и компоновка работают нормально.) Я нашел способ избавиться от этой проблемы, но я думаю, что должен быть другой, более "последовательный" ». Что я сделал:

  1. Найдите места, где находятся необходимые заголовочные файлы:

    1.1. Ctrl + клик по каждому из трех пунктов. stdio.h находится в пути1 /usr/include. size_t и NULL определены в stddef.h в path2 /usr/lib/gcc/x86_64-linux-gnu/7/include.

    1.2. (Дополнительно) Проверьте пути поиска заголовков для C и C ++ в командной строке, указав

    gcc -x c -v -E /dev/null
    gcc -x c++ -v -E /dev/null
    

    И path1, и path2 отображаются в соответствующих выходных списках "#include <...> search starts here:".

  2. Добавить путь1 в свойствах проекта -> C / C ++ - Общие -> Пути и символы -> Включает (вкладка) -> GNU C -> Добавить. Это избавило от ошибки 1.

  3. Добавить path2 в свойствах проекта -> C / C ++ General -> Пути и символы -> Включает (вкладка) -> GNU C -> Добавить , Это избавило от ошибок 2 и 3.

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

Что не помогло: Свойства проекта -> Общие сведения о C / C ++ -> Пути включения препроцессора, ... -> Провайдеры -> CDT G CC Встроенные параметры компилятора, флажок отмечен флажок «Использовать глобальный поставщик, совместно используемый проектами». Аналогично для «CDT CROSS G CC Настройки встроенного компилятора».

ПРИМЕЧАНИЕ. Я перечисляю здесь несколько похожих / связанных вопросов. Возможно, я что-то пропустил, но ответа там не нашел.

Ошибка «неразрешенного включения» с Eclipse CDT для C заголовков стандартной библиотеки

Неразрешенное включение в Eclipse CDT

Eclipse CDT Неразрешенное включение

Eclipse CDT - Неразрешенное включение для VLFeat

Eclipse CDT: неразрешенное включение заголовка stl

неразрешенное включение libxml ++ Eclipse Mars CDT

подавление предупреждения о неразрешенном включении в Eclipse / CDT?

Eclipse CDT Проблемы включения

неразрешенная ошибка включения eclipse

Ошибка затмения: не устранена Включение

Включение внешней библиотеки - Eclipse CDT и MinGW

Неразрешенное включение в Eclipse

Eclipse Неразрешенное включение C ++

Eclipse cdt: включает заголовок файла ct компилирует, но выделяет исходный код: «неразрешенное включение»

Ubuntu 13.10 Eclipse 3.8.1 неразрешенное включение

Что является причиной неразрешенного включения Eclipse CDT:

...