Ich habe CDT für Eclipse eingerichtet und ein einfaches Hello World C-Programm geschrieben:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
Das Programm wird ordnungsgemäß erstellt und ausgeführt, aber Eclipse zeigt dieses gelbe Fragezeichen neben der Einschlussanweisung mit der Aufschrift "Unresolved inclusion: <stdio.h>"
an, wenn ich die Maus darüber drücke.
Es wirkt sich nicht auf die Ausführung des Programms aus, aber ich finde es ziemlich nervig.
Hat jemand eine Idee, wie man es entfernen kann?
Der von Eclipse verwendete Compiler ist in der Lage, die Symbole gut aufzulösen, sodass der Code gut kompiliert werden kann.
Aber der Code-Vervollständigungs-/Präprozessor, den Eclipse verwendet, weiß nicht, wo stdio.h existiert.
Sie müssen den Dateisystempfad angeben, in dem sich stdio.h befindet.
Siehe: http://help.Eclipse.org/galileo/index.jsp?topic=/org.Eclipse.cdt.doc.user/tasks/cdt_t_proj_paths.htm
Ich fand diese Antworten (einschließlich der akzeptierten) etwas kryptisch.
Für mich musste ich den Pfad hinzufügen, in dem sich stdio.h befindet (wie @ardnew sagte). Öffnen Sie in Eclipse die Eigenschaften Ihres Projekts, erweitern Sie "C/C++ - Allgemein" und wählen Sie "Pfade und Symbole".
Stellen Sie sicher, dass Sie das include
-Verzeichnis für jede verwendete Sprache hinzugefügt haben. (In meinem Fall musste ich es einfach zu GNU C++ hinzufügen.)
ich habe gerade die Wissensbasis erweitert und das mit win7 mit cygwin getan.
das scheint für mich zu funktionieren.
pfade für c einschließen:
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\usr\include
pfade für C++ einschließen:
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
das bringt mir eine saubere Zusammenstellung von Hallo Welt.
Gehen Sie zu Projekt> Eigenschaften> C/C++ - Allgemein> Preprozessor-Includes> Provider Und wählen Sie "CDT GCC Built-in Compiler-Einstellungen" und "CDT CROSS GCC Built-in Compiler-Einstellungen".
Es kann das Problem lösen. (Entschuldigung für schlechtes Englisch)
Ich arbeite mit multiple Cross-Compiler-Konfigurationen, bei denen ich unterschiedliche Speicherorte für die STD-Header-Dateien (und andere Umgebungsvariablen) verwenden muss.
Die Lösung bestand darin, den Indexer so einzurichten, dass er die aktive Konfiguration verwendet.
Aufgrund eines - Fehlers in Eclipse wird die Option leider nicht lokal gespeichert. Sie müssen die Konfiguration workspace verwenden, wenn Sie die Konfiguration beim Öffnen von Eclipse speichern möchten nochmal.
Window -> Einstellungen -> C/C++ -> Indexer -> Aktive Build-Konfiguration verwenden
Dadurch verwendet Eclipse den richtigen Compiler, der mit der aktiven Cross-GCC-Konfiguration des Projekts festgelegt ist.
Ich benutze Eclipse mit Cygwin und das hat für mich funktioniert:
Gehen Sie zu Projekt> Eigenschaften> C/C++ - Allgemein> Preprozessor-Include ...> Provider Und wählen Sie "CDT GCC Built-in Compiler Settings Cygwin [Shared]".
Ich verwende Eclipse-basierten CodeWarrior IDE für eingebettete Projekte, und ich habe dieses Problem soeben gelöst, dass die Quelladressen in Project Properities-> C/C++ General-> Path und Sybols-> Include-Verzeichnisse gelöscht und erneut hinzugefügt wurden. Dies bedeutet, dass es viele Gründe gibt, die Meldung "Ungelöste Inklusion:" aufzunehmen, und es gibt auch viele Lösungen.
In ADT habe ich Folgendes getan:
Normalerweise sollte Eclipse die Standard-Include-Dateien automatisch auflösen können. Dazu ruft man gcc auf und fragt nach seiner Konfiguration. Eclipse findet wahrscheinlich nicht Ihren gcc (oder zumindest nicht die Version, die Sie zum Kompilieren verwenden).
Anstatt alle Standard-Include-Pfade in den Projekteinstellungen anzugeben, möchten Sie wahrscheinlich sicherstellen, dass Eclipse gcc findet. Fügen Sie das Verzeichnis, in dem gcc gefunden wird, der Umgebungsvariable PATH hinzu, bevor Sie Eclipse starten.
Wenn Sie möchten, dass verschiedene Projekte andere Compiler verwenden, können Sie die Erkennungsoptionen optimieren. Diese sind standardmäßig ausgeblendet. Aktivieren Sie sie daher zunächst über Fenster> Voreinstellungen> C/C++> Eigenschaftsseiteneinstellungen> Seite "Ermittlungsoptionen anzeigen". Sie finden sie unter C/C++ Build> Discovery-Optionen in den Projekteigenschaften.
Als Antwort auf die (aktuellen) Antworten sollte angegeben werden, wo sich die Build-Ordner befinden. Sie können über ein Dialogfeld hinzugefügt werden, indem Sie mit der rechten Maustaste auf das Projekt klicken und Eigenschaften-> C/C++ - Allgemein> Pfade und Symbole auswählen.
Die verbleibende Frage ist, welche Pfade hinzugefügt werden müssen.
Wenn Sie crosskompilieren oder etwas Besonderes tun, wissen Sie wahrscheinlich, welche Pfade Sie in welcher Reihenfolge benötigen (oder sollten die Dokumentation Ihres Compilers und/oder andere Abhängigkeiten betrachten).
Für diejenigen, die nach den Grundlagen suchen: Wenn Sie gcc für den Befehlszeilenzugriff richtig eingerichtet haben und wissen möchten, welche Standardpfadpfade verwendet werden, fragen Sie einfach nach.
Abhängig von der Sprache, die Sie interessieren, verwenden Sie:
gcc -x c -v -E /dev/null
gcc -x c++ -v -E /dev/null
... Hier werden die Standard-Compilereinstellungen aufgelistet, die beim Aufruf von gcc verwendet werden (und dieser Befehl funktioniert auch, wenn "gcc" wirklich ein Alias für clang ist, wie unter OSX).
Beachten Sie unter Windows, dass /dev/null
nur eine einfache Abkürzung für eine leere Eingabedatei ist (ohne dass eine erstellt werden muss).
Am unteren Rand befindet sich die Liste der Include-Verzeichnisse:
#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.
Wenn Sie die hier aufgeführten Verzeichnisse in der angegebenen Reihenfolge in den Dialog Pfade und Symbole von Eclipse eingeben, sollte Eclipse CDT in der Lage sein, die Standardkopfzeilen und möglicherweise einige zusätzliche Kopfzeilen für Ihr Betriebssystem zu finden.
(Dank an devnulls Antwort an eine verwandte Frage.)