Nachdem ich dies im Internet recherchiert habe, konnte ich den Eclipse-Indexer nicht dazu bringen, “shared_ptr” aus den C++0x-Zusätzen von GCC 4.4.4 aufzulösen. Ich habe dafür gesorgt, dass mein Projekt mit den richtigen Include-Dateien für Eclipse erstellt wurde, also sucht es definitiv in den Include-Ordnern 4.4.4.
Das Programm kompiliert und läuft einwandfrei. Um auf shared_ptr zuzugreifen, verwende ich “#include “.
Irgendeine Idee, was den Indexer kaputt macht?
Sehen Sie sich meine Antwort unter stackoverflow.com/questions/13905283/…
– Johan Lundberg
17. Dez. ’12 um 23:00
Dave S
Sie müssen das Präprozessorsymbol ‘__GXX_EXPERIMENTAL_CXX0X__‘ zum Eclipse-Projekt. g++ fügt dies automatisch hinzu, wenn Sie ‘-std=c++0x’ verwenden, aber Eclipse ist sich dessen nicht bewusst und behandelt diese Abschnitte der relevanten Header als deaktiviert.
@AnschelSchaffer-Cohen: Projekteigenschaften – C/C++ Allgemein – Pfade und Symbole – Symbole – GNU C++
– Dave S
30. Dezember ’11 um 13:49
Sie können es automatisch hinzufügen, indem Sie -std=c++0x zu den “Compiler-Aufrufargumenten” in den Discovery-Optionen von C/C++ Build in den Projekteigenschaften hinzufügen.
– Marco
25. Mai ’12 um 7:10
@DaveS – Hallo, es tut mir leid, Sie mit einer alten Frage zu belästigen, aber das Symbol hinzuzufügen __GXX_EXPERIMENTAL_CXX0X__ hat bei mir nicht funktioniert, andere Vorschläge? Danke im Voraus 😉
– Matteo
31. Mai ’12 um 7:36
@Matteo Wie hast du es schließlich geschafft?
– remdezx
15. Februar ’13 um 13:30
Ich habe das Flag -std=c++11 zu C++ -> Build -> Einstellungen -> Discovery -> CDT GCC Built-in Compiler Settings hinzugefügt sowie die GXX_EXPERIMENTAL_CXX0X Symbol wie von @DaveS beschrieben. Und dann für etwas zusätzliche “Magie”, Eclipse geschlossen und wieder geöffnet. Das scheint das Problem in Eclipse Luna zu beheben
– Langley
10. März ’15 um 19:58
Dean Hill
Ich hatte dieses Problem unter Windows mit Eclipse 4.5.1 (Mars.1) und Cygwin 2.3.0 (GCC 4.9.3).
Der Indexer kann shared_ptr wegen Zeilen wie dieser im -Header nicht finden. Das Makro __cplusplus wertet etwas anderes als C++ 11 (auch bekannt als 201103) aus, sodass die ältere auto_ptr.h anstelle von shared_ptr.h eingeschlossen wird. Wieso den? Der folgende Screenshot der Projekteigenschaften zeigt, dass C++ 98 (199711) unter CDT GCC Build-in Compiler Settings erkannt wird.
#if __cplusplus >= 201103L
# include <bits/shared_ptr.h>
#else
# include <backward/auto_ptr.h>
#endif
Es gibt zwei mögliche Lösungen, um Eclipse anzuweisen, C++ zu verwenden:
Scrollen Sie auf demselben Bildschirm “Präprozessor-Pfade einschließen” zum Anfang des Bereichs Einstellungseinträge. Erweitern Sie CDT-Benutzereinstellungseinträge. Fügen Sie ein neues Präprozessor-Makro für __cplusplus=201103L hinzu. Tun Sie dies sowohl für die Release- als auch die Debug-Konfiguration. Erstellen Sie dann den Index neu.
Wenn Sie möchten, dass die CDT GCC Build-in Compiler-Einstellungen standardmäßig 201103 für alle Projekte verwenden, bearbeiten Sie die Datei language.settings.xml (unter Windows ist dies c:Usersdeanhillworkspace.metadata.pluginsorg .eclipse.cdt.corelanguage.settings.xml). Setzen Sie __cplusplus=201103L. Starten Sie Eclipse neu und erstellen Sie den Index neu.
Ich habe meine gefunden in /usr/include/c++/4.8.2
– Lucas
17. März ’16 um 20:12
Es ist seltsam, dass ich lange Zeit C++11-Funktionen in Eclipse verwendet habe und eines Tages plötzlich dieses Problem hatte. Ich bin mehrmals zwischen den IDEs gesprungen, bevor ich zurückgekommen bin und endlich diese Antwort gefunden habe.
– Khlorghaal
7. Februar ’17 um 8:50
Hat bei mir an Neon.2 (4.6.2) funktioniert.
– BeeOnRope
13. Feb. ’17 um 3:58
Obwohl ich zu spät zum Spiel komme, hat Folgendes für mich funktioniert:
Klicken Sie mit der rechten Maustaste auf Projekt->Eigenschaften->C/C++ Allgemein->Präprozessor Pfade, Makros usw. einschließen –> Klicken Sie auf die Registerkarte “Anbieter” –> CDT GCC Built-in Compiler Settings
Deaktivieren Sie “Globalen Anbieter verwenden, der zwischen Projekten geteilt wird”
Verwenden von Debian Jessie + Eclipse Kepler Build-ID: 20140224-0627
Ich habe das gleiche Problem erlebt. Ich habe die hinzugefügt GXX_EXPERIMENTAL_CXX0X ebenso gut wie -std=c++11 zu den Compiler-Optionen im Arbeitsbereich. Allerdings hat es mein Problem nicht gelöst.
Mir fehlte noch ein Schritt: Rechtsklick auf Projekt->Eigenschaften->C/C++ Build->Einstellungen->Cross G++ Compiler->Verschiedenes->Andere Flags, die ich geändert habe -c -fmessage-length=0
zu -c -fmessage-length=0 -std=c++11
Jetzt sieht Eclipse std::shared_ptr und indiziert es korrekt.
Sarmo Fdmusik
Bei mir hat es per Einstellung geklappt other dialect flags = -std=c++11 unter:
Einstellungen -> C++ Build -> Einstellungen -> GCC C++ Compiler -> Dialekt,
sowie hinzufügen -std=c++11 unter:
Preferences -> C++ General -> Preprocessor Include Path -> Providers -> CDT GCC Build-in Compiler Settings -> Command to Get Compiler Specs.
Vergessen Sie nicht, Ihr Projekt/Ihren Index zu bereinigen und neu zu erstellen.
.
2346900cookie-checkEclipse-Indexer kann shared_ptr nicht auflösenyes
Sehen Sie sich meine Antwort unter stackoverflow.com/questions/13905283/…
– Johan Lundberg
17. Dez. ’12 um 23:00