Ошибка "Неразрешенное включение" с Eclipse CDT для стандартных заголовков библиотеки C
Я установил CDT для eclipse и написал простую программу Hello World:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
Программа строит и работает правильно, но eclipse продолжает показывать этот желтый вопросительный знак со стороны инструкции включения, которая говорит "Unresolved inclusion: <stdio.h>"
, когда я наводил на нее курсор.
Это не влияет на работу программы, но я нахожу ее довольно раздражающей.
Кто-нибудь знает, как его удалить?
Ответы
Ответ 1
Компилятор, который использует Eclipse, способен правильно разрешать символы, поэтому код будет компилироваться отлично.
Но использование кода/препроцессора, используемого Eclipse, не знает, где существует stdio.h.
Вам нужно указать путь к файловой системе, где расположен stdio.h.
Смотрите: http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/tasks/cdt_t_proj_paths.htm
Ответ 2
Я нашел эти ответы (включая принятые) несколько загадочными.
Для меня мне пришлось добавить путь, где находится stdio.h(как указано в @ardnew). В Eclipse вы откроете Свойства своего проекта, разверните "C/С++ General" и выберите "Пути и символы".
Убедитесь, что вы добавили директорию include
для каждого используемого вами языка. (В моем случае мне нужно было просто добавить его в GNU С++.)
![enter image description here]()
Ответ 3
просто добавляя к базе знаний, я просто сделал это на win7 с cygwin.
это то, что, кажется, работает для меня.
включить пути для c:
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\usr\include
включить пути для С++:
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include\c++
D:\dev\cygwin\usr\include
это дает мне чистую компиляцию мира привет.
Ответ 4
Перейдите в Проект> Свойства> C/C++ General> Препроцессор включает в себя> Провайдеры и выберите оба:
- "Настройки встроенного компилятора CDT GCC"
- "Настройки встроенного компилятора CDT CROSS GCC"
Для каждого из них также выберите подпункт: "Использовать глобального поставщика, совместно используемого проектами".
Протестировано на Eclipse 4.8.0 в Ubuntu 16.04 с миром C и C++ hello.
Ответ 5
- Выберите Файл → Новый проект
- В Мастере проектов выберите C/С++ → Проект С++
- В разделе "Тип проекта" выберите " Makefile Project → Hello world С++ Project"
- В разделе "Toolchains" выберите " Linux GCC"
Он может решить проблему. (Извините меня за плохой английский)
Ответ 6
Я использую Eclipse с Cygwin, и это сработало для меня:
Перейдите в Project > Properties > C/С++ General > Препроцессор включает... > Провайдеры
и выберите "Встроенные настройки компилятора CDT GCC Cygwin [Shared]".
Ответ 7
Я работаю с конфигурациями нескольких кросс-компиляторов, где мне нужно использовать разные местоположения для файлов заголовков STD (и других переменных среды).
Решение заключалось в настройке индексатора, чтобы он использовал активную конфигурацию.
К сожалению, из-за ошибки в eclipse, этот параметр не сохраняется локально, поэтому вам нужно использовать рабочая область, если вы хотите сохранить конфигурацию при повторном открытии eclipse.
Окно → Настройки → C/С++ → Indexer → Использовать конфигурацию активной сборки
Это заставит eclipse использовать правильный компилятор, который устанавливается с активной конфигурацией Cross GCC проекта.
Ответ 8
В ADT я сделал следующее:
- щелкните правой кнопкой мыши по проекту и выберите "Свойства"
- разверните C/С++ Общие и выберите Preprocessor Include Paths, Макросы и т.д.
- выберите записи пользовательской настройки CDT
- выберите Добавить... из меню справа.
- В каталоге Add Include Directory изменить путь к пути к файловой системе
- Перейдите в каталог, содержащий ваши включенные файлы.
- перемешать и повторить по мере необходимости
Ответ 9
Обычно Eclipse должен иметь возможность автоматически разрешать стандартные файлы include. Он делает это, вызывая gcc и запрашивая его конфигурацию. Скорее всего, Eclipse не находит ваш gcc (или, по крайней мере, не версию, которую вы используете для компиляции).
Вместо указания всех стандартных включений в настройках проекта вы, вероятно, захотите убедиться, что Eclipse находит gcc. Добавьте каталог, в котором gcc находится в переменной среды PATH перед запуском Eclipse.
Если вы хотите, чтобы разные проекты использовали разные компиляторы, вы можете настроить параметры обнаружения. Они скрыты по умолчанию, поэтому сначала включите их из окнa > Настройки > C/С++ > Параметры страницы свойств > Отобразите страницу "Параметры поиска". Затем вы можете найти их в разделе C/С++ Build > Discovery Options в свойствах проекта.
Ответ 10
Как отмечается в верхних ответах, необходимо указать, где расположены папки сборки, которые можно добавить с помощью диалогового окна, щелкнув правой кнопкой мыши по проекту и выбрав Properties-> C/C++ General-> Paths and Symbols.
Остается вопрос, какие пути нужно добавить.
Если у вас правильно настроен gcc для доступа из командной строки, и вам нужно знать, какие пути по умолчанию включают в себя используемые пути, просто спросите его; в зависимости от того, какой язык вас интересует, используйте:
gcc -x c -v -E /dev/null
gcc -x c++ -v -E /dev/null
... здесь будут перечислены параметры компилятора по умолчанию, которые используются при вызове gcc (и эта команда также работает, если "gcc" действительно является псевдонимом для clang, как в OSX).
/dev/null
используется пустой файл - мы говорим gcc разобрать пустой файл
-x <language>
определяет язык для компиляции как необходимый, потому что мы не используем файл с расширением, которое определяет язык
-v
подробный вывод, который включает в себя вывод путей включения
-E
выполняет только предварительную обработку, выводит предварительно обработанный файл (это не позволяет gcc жаловаться, что пустой файл не компилируется правильно)
Внизу будет список включаемых каталогов:
#include "..." search starts here:
#include <...> search starts here:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory)
End of search list.
Если вы введете перечисленные здесь каталоги в указанном порядке в диалоговое окно путей и символов Eclipse, Eclipse CDT сможет найти стандартные заголовки и, возможно, некоторые дополнительные заголовки, специфичные для вашей ОС.
(Благодаря Devnull ответ на связанный вопрос.)
Ответ 11
Я использую Eclipse на основе CodeWarrior IDE для встроенных проектов, и я только что решил эту проблему, удалив и добавив снова исходные адреса в Project Properities- > C/С++ General- > Path and Sybols- > Include Directories. Это означает, что есть масса причин принимать сообщение "Неразрешенное включение:", а также множество решений.
Ответ 12
Ошибка, с которой я настраивал Paths and Symbols, заключается в том, что изначально я сконфигурировал пути include для другого языка. Я работаю с CDT и Cygwin gnu С++. Поэтому вы должны настраивать символы и пути под языком GNU С++. ![введите описание изображения здесь]()