Seht diesen Wahnsinn:
enum WhatArduinoIs {
Easy, But, Insane, Obsolete, And, Far, Worse, Than, mBed
};
void TellMe(WhatArduinoIs pls) { }
void setup() { }
void loop() { }
Ich bin ziemlich gut in C ++, also bin ich mir ziemlich sicher, dass das kompiliert werden sollte. Ich erhalte jedoch diesen Fehler:
sketch_jan21b.ino:3:13: error: variable or field 'TellMe' declared void
sketch_jan21b.ino:3:13: error: 'WhatArduinoIs' was not declared in this scope
Error compiling.
Ich bin schon einmal auf die Neigung der Arduino "IDE" gestoßen, verrückte und völlig unrobustische Änderungen an Programmen vorzunehmen. Insbesondere wenn Sie #include
Bibliotheken verwenden, fügt Arduino die relevanten C ++ - Dateien nur dann magisch hinzu, wenn sich das #include
in Ihrer Hauptskizze befindet. #include <LiquidCrystal.h>
in einer anderen C ++ - Datei? Linkfehler.
Ich vermute in diesem Fall, dass Arduino auf magische Weise versucht, Funktionsdeklarationen am Anfang der Datei hinzuzufügen, damit ihre Reihenfolge keine Rolle spielt. Dh es verwandelt die Datei in Folgendes:
void TellMe(WhatArduinoIs pls);
enum WhatArduinoIs {
Easy, But, Insane, Obsolete, And, Far, Worse, Than, mBed
};
void TellMe(WhatArduinoIs pls) { }
void setup() { }
void loop() { }
Das funktioniert offensichtlich nicht. Wie kann ich Arduino sagen, dass er mein verdammtes Programm in Ruhe lassen soll?
Arduino.exe
so dass es schwierig ist, eine andere IDE einzurichten. Ich wusste nicht, dass Eclipse ein Arduino-Plugin hat.Sie scheinen richtig zu sein, was die Arduino-IDE mit Ihrer Skizze macht.
Arduino verarbeitet keine .h- oder .cpp-Dateien vor, sodass Sie eine zweite Datei verwenden können. Sie können auch die Funktion der IDE zum Auffinden von Regex mit einer Dummy-
throw()
Anweisung wie der folgenden unterbrechen :Der Dummy-Wurf ermöglicht es mir, am 1.5.8 für mich zu kompilieren
quelle
Alles was Sie brauchen ist ein Funktionsprototyp. Ich habe eine detaillierte Erklärung unter Klassen und Objekte: Wie viele und welche Dateitypen brauche ich tatsächlich, um sie zu verwenden?
Das kompiliert also:
Off-Site-Referenz: So vermeiden Sie die Macken der Vorverarbeitung der IDE-Skizzendatei
quelle