У меня есть проект под 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
(среди прочего, но здесь полезно показать проблему). Во всех трех я использую:
#include <stdio.h>
, NULL
и size_t
.
Анализатор Eclipse показывает соответствующие ошибки, только для источника C:
- Неразрешенное включение:
- Тип 'size_t' не может быть разрешен
- Символ 'NULL' не может быть решен
(Компиляция и компоновка работают нормально.) Я нашел способ избавиться от этой проблемы, но я думаю, что должен быть другой, более "последовательный" ». Что я сделал:
Найдите места, где находятся необходимые заголовочные файлы:
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:
".
Добавить путь1 в свойствах проекта -> C / C ++ - Общие -> Пути и символы -> Включает (вкладка) -> GNU C -> Добавить. Это избавило от ошибки 1.
Добавить 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: