Eclipse-Indexer kann shared_ptr nicht auflösen

Lesezeit: 4 Minuten

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

Eclipse Indexer kann shared ptr nicht auflosen
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

Eclipse Indexer kann shared ptr nicht auflosen
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

Bildbeschreibung hier eingeben

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”

Fügen Sie -std=c++0x . hinzu

Es sieht dann ungefähr so ​​aus:

${COMMAND} ${FLAGS} -E -P -v -dD -std=c++0x "${INPUTS}"

Index neu erstellen.

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.

photo
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.

.

234690cookie-checkEclipse-Indexer kann shared_ptr nicht auflösen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy