Я настроил CDT для eclipse и написал простую программу C hello world:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
Программа строится и работает правильно, но eclipse продолжает показывать этот желтый вопросительный знак рядом с заявлением о включении, в котором говорится "Unresolved inclusion: <stdio.h>"
когда я наводил на него указатель мыши.
Это не влияет на работу программы, но меня раздражает.
Кто-нибудь знает, как его удалить?
c
eclipse
eclipse-cdt
standard-library
Деррик Чжан
источник
источник
Ответы:
Компилятор, который использует Eclipse, может без проблем разрешать символы, поэтому код компилируется нормально.
Но программа завершения кода / индексатора или препроцессор, который использует Eclipse, не знает, где
stdio.h
существует.Вам необходимо указать путь к файловой системе, в которой
stdio.h
он находится.Документация Eclipse описывает это в нескольких разделах для компилятора:
И если автозавершение кода / индексатор или препроцессор также не могут найти
stdio.h
:Точное расположение
stdio.h
будет зависеть от системы, для которой вы собираетесь писать код. Если вы пишете код для той же системы, в которой работаете Eclipse, то стандартное расположение -/usr/include/stdio.h
для Linux, macOS, Cygwin и т. Д.Если вы выполняете кросс-компиляцию для отдельной / удаленной целевой системы (например, Android, Raspberry Pi, STM32), она будет находиться где-то в SDK, который вы установили для этой системы. Вам нужно будет обратиться к этой конкретной документации SDK.
источник
Я нашел эти ответы (в том числе принятый) несколько загадочными.
Для меня мне пришлось добавить путь, по которому находится stdio.h (как сказал @ardnew). В Eclipse вы открываете Свойства своего проекта, расширяете «C / C ++ General» и выбираете «Paths and Symbols».
Убедитесь, что вы добавили
include
каталог для каждого используемого вами языка. (В моем случае мне нужно было просто добавить его в GNU C ++.)источник
/usr/bin/xcode-select --install
а затем вы сможете указать Eclipse на/usr/include/
просто добавляя в базу знаний, я только что сделал это на win7 с помощью cygwin.
это то, что, кажется, работает для меня.
включить пути для c:
включить пути для c ++:
это дает мне чистую компиляцию hello world.
источник
Перейдите в Project> Properties> C / C ++ General> Preprocessor Includes> Providers и выберите оба:
Для каждого из них также выберите вложенную запись: «Использовать глобального поставщика, совместно используемого проектами».
Протестировано на Eclipse 4.8.0 в Ubuntu 16.04 с C и C ++ hello world.
источник
Это может решить проблему. (Простите за плохой английский)
источник
Я использую Eclipse с Cygwin, и это сработало для меня:
Перейдите в Project> Properties> C / C ++ General> Preprocessor Includes ...> Providers и выберите «CDT GCC Built-in Compiler Settings Cygwin [Shared]».
источник
Я работаю с несколькими конфигурациями кросс-компилятора , где мне нужно использовать разные места для файлов заголовков STD (и других переменных среды).
Решением было настроить индексатор так, чтобы он использовал активную конфигурацию.
К сожалению, из-за некоторой ошибки в eclipse опция не сохраняется локально, поэтому вам нужно использовать конфигурацию рабочего пространства, если вы хотите сохранить конфигурацию при повторном открытии eclipse.
Окно -> Настройки -> C / C ++ -> Индексатор -> Использовать активную конфигурацию сборки
Это заставит eclipse использовать правильный компилятор, который установлен с активной конфигурацией Cross GCC проекта.
источник
Как отмечается в верхних ответах, необходимо указать, где находятся папки сборки, которые можно добавить через диалоговое окно, доступное, щелкнув проект правой кнопкой мыши и выбрав Свойства-> Общие C / C ++-> Пути и символы.
Остается вопрос, какие пути нужно добавить.
Если у вас правильно настроен gcc для доступа из командной строки и вам нужно знать, какие пути включения по умолчанию он использует, просто спросите его; в зависимости от того, какой язык вам интересен, используйте:
... это перечислит настройки компилятора по умолчанию, которые используются при вызове gcc (и эта команда также работает, если "gcc" действительно является псевдонимом для clang, как в OSX).
Внизу будет список включаемых каталогов:
Если вы введете каталоги, перечисленные здесь, в указанном порядке, в диалог путей и символов Eclipse, Eclipse CDT сможет найти стандартные заголовки и, возможно, некоторые дополнительные заголовки, специфичные для вашей ОС.
(Благодаря ответу devnull на связанный вопрос.)
источник
В ADT я сделал следующее:
источник
Обычно Eclipse должен иметь возможность автоматически разрешать стандартные включаемые файлы. Он делает это, вызывая gcc и запрашивая его конфигурацию. Скорее всего, Eclipse не находит ваш gcc (или, по крайней мере, не ту версию, которую вы используете для компиляции).
Вместо того, чтобы указывать все стандартные пути включения в настройках проекта, вы, вероятно, захотите убедиться, что Eclipse находит gcc. Добавьте каталог, в котором находится gcc, в переменную среды PATH перед запуском Eclipse.
Если вы хотите, чтобы в разных проектах использовались разные компиляторы, вы можете настроить параметры обнаружения. По умолчанию они скрыты, поэтому сначала включите их, выбрав «Окно»> «Настройки»> «C / C ++»> «Настройки страниц свойств»> «Показать страницу параметров обнаружения». Затем вы можете найти их в разделе C / C ++ Build> Discovery Options в свойствах проекта.
источник
Я использую IDE CodeWarrior на основе eclipse для встроенных проектов, и я только что решил эту проблему, удалив и снова добавив исходные адреса в Project Property-> C / C ++ General-> Path и Sybols-> Include Directories. Это означает, что есть много причин для вывода сообщения «Неразрешенное включение:», а также множество решений.
источник
Ошибка, возникающая при настройке путей и символов, заключается в том, что изначально я настроил пути включения для другого языка. Я работаю с CDT и Cygwin gnu C ++. Таким образом, вы должны настроить символы и пути на языке GNU C ++.
источник
Также установлен
${COMMAND}
вgcc
LinuxПод:
Заменить:
с участием:
Если вы этого не сделаете, стандартный вывод Eclipse покажет:
и журналы под
${HOME}/eclipse-workspace/.metadata/.log
показом:потому что
${COMMAND} ${FLAGS}
они пусты, поэтому Eclipse пытается выполнить-E
следующее.Интересно, сможем ли мы правильно определить
COMMAND
иFLAGS
переменные в настройках, но я попытался добавить их в качестве переменных сборки, и это не сработало.Версия вопроса для C ++: как решить проблему «Неразрешенное включение: <iostream>» в файле C ++ в Eclipse CDT?
Протестировано на Eclipse 2020-03 (4.15.0), Ubuntu 19.10 и этом минимальном проекте Makefile с существующими исходными кодами .
источник
Вы проверяете, компилируется ли он из командной строки? Мне помогает в Linux, apt install libc-dev.
источник