2012-05-11 15 views
15

So baue ich einige Arduino-Code in Eclipse, wie in Your Second Arduino Project beschrieben, aber jedes Mal, wenn ich eine Arduino-Bibliothek, wie Serial, verwenden, unterstreicht Eclipse meine Funktionsnamen und behauptet, sie können nicht gelöst werden. Allerdings kompiliert der Code tatsächlich, so bin ich etwas ratlos, warum Eclipse denkt, dass die Funktionen fehlen. Wenn jemand eine Idee hat, wie man dieses Problem lösen könnte, würde es geschätzt werden. Danke im Voraus.Eclipse C/C++ zeigt Fehler, aber kompiliert?

EDIT: Ich hätte konkreter sein sollen, Eclipse unterstreicht die METHODEN innerhalb der Arduino-Bibliotheken. Also, wenn ich Serial.println("hello"); verwenden, unterstreicht es println() und behauptet, es kann nicht aufgelöst werden. Dann kompiliert es gut und die Methode funktioniert, wenn sie auf das Arduino-Board hochgeladen wird.

EDIT2: Ich habe meinen Fehler gefunden, stellt sich heraus, ich habe versucht, einige C++ - Funktionen in einer C-Datei zu verwenden, und Eclipse mochte es nicht; Ich habe mich in .cpp umbenannt und das ganze Rot ist verschwunden;) Danke für deine Hilfe!

+0

Wird sie auch nach dem Kompilieren immer noch unterstrichen? – Kiril

+0

Hmm, das ist bedauerlich! Ich bin mir nicht sicher, was das verursachen könnte. – Kiril

+0

Hast du autobuild? –

Antwort

5

Für den Anfang, welche Farbe die Unterstreichungs? Dies macht einen Unterschied, da gelb bedeutet, dass es eine Warnung ist, und rot bedeutet, dass es ein Fehler ist (kritisch, wird in den meisten Fällen nicht aufgebaut).

Zweitens müssen Sie auf der Registerkarte "Probleme" sehen, ob es tatsächliche Fehler gibt. Wenn dort nichts ist, dann hat es tatsächlich korrekt kompiliert.

Jetzt zurück zur ursprünglichen Frage. Abhängig von der Art des Projekts, das Sie erstellen, ist diese Art von Verhalten nicht ungewöhnlich. Eclipse scheint bestimmte Projekte nur schlecht zu indexieren. Wenn Sie "make all" über die Befehlszeile ausführen (was Eclipse während des Builds tatsächlich tut), löst es wahrscheinlich den gesamten Code auf und baut ihn einfach auf.

Eclipse verwendet jedoch ein anderes, separates Tool zum Indizieren des gesamten Quellcodes und zum Auflösen von Variablen-/Funktionsdefinitionen und Deklarationen. Dies ist buchstäblich ein Fall der linken Hand, die nicht weiß, was die rechte Hand tut.

+3

Alle Unterstreichungen sind rot, und meine Registerkarte "Probleme" besagt, dass sie alle "semantische Fehler" sind. So amüsant es ist, eine Datei, die vollständig rot ist, erfolgreich zu kompilieren, gibt es eine Möglichkeit, diese roten Linien zumindest zu verstecken? : P – SuperTron

28

Abhängig von der Konfiguration kann Eclipse die Pfade zum Index von Ihrem Build-Setup abziehen oder nicht. Höchstwahrscheinlich ist es nicht ... es baut sich korrekt auf, weil Ihr Build-Setup gut ist, und Sie können wahrscheinlich von Hand bauen.

Der CDT-Indexer (der die Engine ist, um zu entscheiden, wo all diese schönen Unterstreichungen, sowie Codevervollständigung, F3-Deklaration, usw. kommen) ist in vielen Fällen nicht schlau genug, um Ihre Makefiles auszuwerten und wissen, wo nach Kopfzeilen und Quelle zu suchen. Sie müssen Eclipse diese Informationen manuell mitteilen.

Zur Projekteigenschaften -> C/C++ Allgemein -> Pfade und Symbole.

Die Menge an Arbeit, die Sie in diesen Bereich investieren müssen, kann je nach Umgebung stark variieren. Wenn diese externe Bibliothek die einzige Sache ist, dass Sie Kopfschmerzen geben, dann haben Sie wahrscheinlich nur die Pfade für die Bibliothek und reindex hinzufügen müssen:

der rechten Maustaste auf das Projekt und wählen Sie Index -> Rebuild

+0

@Es dauerte 2 Tage, um dieses Problem zu lösen.Vielen Dank.Obwohl der Pfad bereits angegeben ist, habe ich es manuell hinzugefügt und den Index neu erstellt.Das hat den Job.Bugs wie das sind sehr frustrierend, hoffe dies wird im nächsten Avr eclipse-Plugin gelöst. – tez

+1

Ich könnte verrückt gehen, dies zu lösen, aber Sie haben es eine 2-Klick-Lösung gemacht –

+3

Index -> Wiederaufbau hilft mir;) – stviper

1

I > C/C++ - Forum - Immobilien in

Projekt gehören Ordner hatten> Pfade und Symbole -> Inklusive

Als ich, entfernt, gingen die roten Unterstreichungen entfernt, dh der Aufbau und der IDE, wo synchron.

0

Ich hatte das gleiche Problem. Index -> Rebuild hat nicht geholfen. Wenn ich Linie #include <avr/iom1280.h> in main.cpp hinzugefügt und gemacht Index -> Rebuild unterstreicht dissapeared. Dann löschte ich Zeile #include <avr/iom1280.h> und Projekt noch ohne Inderlines.

Ersetzen Sie iom1280.h durch den Namen Ihres Controllers. Schauen Sie sich die „avr \ include \ avr \“ Ordner verfügbaren Namen

+1

Keine ideale Lösung. Tut dies für Sie während der Kompilierung und basiert auf der MCU, die Sie für den Compiler angeben. – Larcho

1

Wenn Symbole lösen, scheint CDT Indexer alle Header-Dateien unabhängig von denen diejenigen zu berücksichtigen sind tatsächlich in der Übersetzungseinheit enthalten. Es gibt einen entsprechenden Fehlerbericht mit Eclipse Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=439553

0

Eclipse funktioniert nicht so gut mit C++ wie es mit Java tut, aber es sollte Sie über Probleme warnen, sobald Sie "Rebuild" in der Menüleiste drücken.

Versuchen Sie das, und sehen Sie, ob es Ihr Problem löst.

1

Die folgende Lösung funktionierte für mich: Klicken Sie mit der rechten Maustaste auf Ihr Projekt. Dann: Eigenschaften -> C/C++ Allgemein -> Pfade und Symbole -> Symbole -> GNU C++. Fast sicher gibt es überhaupt keine Symbole, wenn Sie dieses Problem haben. In Symbol "__cplusplus" mit dem Wert "201402L" Danach: Rechtsklick auf Projekt -> Übersicht -> Sie Rebuild fertig sind.

Verwandte Themen