Ошибка «неразрешенного включения» в Eclipse CDT для заголовков стандартной библиотеки C - PullRequest
93 голосов
/ 18 февраля 2012

Я установил CDT для Eclipse и написал простую программу C на hello world:

#include <stdio.h>

int main(void){
    puts("Hello, world.");
    return 0;
}

Программа собирается и работает правильно, но Eclipse продолжает показывать этот желтый вопросительный знак рядом с оператором включения, который говорит "Unresolved inclusion: <stdio.h>", когда я надеваю на него мышь.

Это не влияет на работу программы, но я нахожу это довольно раздражающим.

Кто-нибудь знает, как его удалить?

Ответы [ 12 ]

0 голосов
/ 02 февраля 2016

Как отмечается в верхних ответах, необходимо указать, где расположены папки сборки, что можно добавить с помощью диалогового окна, щелкнув правой кнопкой мыши по проекту и выбрав Свойства-> C / C ++ Общие-> Пути и символы.

Остается вопрос, какие пути нужно добавить.

Если у вас правильно настроен 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 на связанный вопрос.)

0 голосов
/ 16 января 2016

Ошибка при настройке путей и символов заключается в том, что изначально я настроил пути включения для другого языка. Я работаю с CDT и Cygwin GNU C ++. Поэтому вы должны настроить символы и пути на языке GNU C ++. enter image description here

...