Ich habe ein Problem mit Eclipse C ++. Mein Projekt kompiliert und läuft, aber Eclipse (Juno) sagt immer wieder, dass es Tausende von Fehlern gibt. Zum Beispiel gibt es eine Funktion SetRun in meinem Code, und eclipse erwähnt diesen Fehler: "Ungültige Argumente genannt" Kandidaten sind: void SetRun (?) '", Während SetRun vom Typ static void SetRun (uint32_t run);
istIch habe ziemlich viele ähnliche Fehler, bei denen Eclipse den Typ der Funktion nicht zu verstehen scheint und ein '?' stattdessen.
Ich habe auch viele Fehler wie folgt: "Symbol '*' konnte nicht aufgelöst werden."
Ich denke, das ist alles ein Teil des gleichen Problems.
Was kann ich tun, damit Eclipse mich nicht mehr über diese Fehler informiert?
Eigentlich ist Eclipse eine Art instabiles Projekt. Versuchen Sie, das Projekt zu bereinigen und zu aktualisieren.
Ich habe versucht, die vorgeschlagene Lösung und es hat nicht funktioniert für mich. Es half, CodeAnalysis für das Projekt zu deaktivieren. Ich ging zu Eigenschaften- & gt; C / C ++ Allgemein- & gt; Code-Analyse. Ausgewählte Projekteinstellungen verwenden und alle Fehler deaktiviert. Das ist natürlich sehr ärgerlich und bedauerlich und ich würde mich freuen zu wissen, wann es richtig behoben ist. Es ist eine Schande, dass wir das Feature, das andere anständige IDE hat, nicht nutzen können.
In Eclipse:
Ich hatte viele dieser Fehler, die darauf abzielen, CODAN dazu zu bringen, über Code zu laufen, der für einen Mac bestimmt war. Meine Mac SDK-Bibliotheken wurden über Symlinks wie in diese Frage eingebunden (aber nicht alle - bleib dran!) Am Ende stellte sich heraus, dass ich nicht alle Header hatte. Zum Beispiel hatte ich den folgenden Funktionsaufruf:
%Vor%Was den Fehler ergab:
%Vor% Nun ist die korrekte Signatur der Funktion, die in IOKit/IOKitLib.h
definiert ist (was ich hatte):
Wenn wir jetzt das erste Argument nehmen und die Typdefinitionen verfolgen, erhalten wir:
%Vor% Und dann! Ich hatte nicht das Include, das __darwin_natural_t
definiert hat. Dieses Include war tatsächlich in i386
, das ich nicht in meinem Symlink-Verzeichnis hatte. Das Hinzufügen vervollständigte die Kette:
Schließlich wusste CODAN, welches Typ Argument 1 von IORegistryEntryGetParentEntry()
sein sollte, und der Fehler änderte sich in:
Ich habe diese "type-trace" für die anderen Argumente wiederholt und festgestellt, dass der Fehler verschwunden ist (ich musste nicht einmal den Index neu aufbauen, sondern YMMV). Natürlich müssten Sie die Header finden, die Sie brauchen, und sicher sein, dass sie enthalten sind - das obige ist nur ein Beispiel!
Ich hatte das gleiche Problem mit ein paar Funktionen. Es stellte sich heraus, dass das Argument nach mehreren typedefs ein __int64 war, das nicht definiert ist (nicht Standard). Ich musste es nur in meinem Projekt definieren und das löste das Problem.
Projekt- & gt; Eigenschaften- & gt; C / C ++ Allgemein- & gt; Pfade und Symbole- & gt; Symbole- & gt; C ++ Quelldatei- & gt; hinzufügen
name: __int64
Wert: lang lang
(oder statt "long long" vielleicht könnten Sie einen der Werte aus diese Antwort verwenden )
Bearbeiten:
Übrigens habe ich im Eclipse-Bugzilla einen Fehlerbericht zu genau diesem Thema gesehen, weshalb es vielleicht nicht nötig ist, __int64 zu definieren.