kann es sein, dass die IDE 1.6.7 anders kompiliert, oder der Präprozessor anders arbeitet?
Ich habe ein Projekt mit mehreren inos. z.B. eine LCD.ino für den LCD-Ausgabe-Code.
In der LCD.ino gibt es ein LCD_Setup(), und ein LCD_Main().
In der Haupt-ino werden die jeweils in void setup () und void loop() aufgerufen.
Damit habe ich eine gewisse Struktur und nicht alles im Haupt-ino
Das hat mit 1.6.5 funktioniert.
Jetzt mit der 1.6.7 bringt er beim Übersetzen einen Sack von Fehlern:
z.B.
Auch ist mir aufgefallen, dass Variablen, die ich in der Haupt-ino definiert habe nicht mehr in einer Unter-ino verwendet werden können.
"...not declared in this scope..."
Naja...
So viel besser ist das ja scheinbar nicht geworden.
Mit meinen ESP8266 bin ich mit der 1.6.6 auch nicht fertig geworden.
Die 1.6.7 habe ich aus dem Grund auch noch nicht mal getestet.
Klebe noch an der 1.6.5
Bau das schön in *.h und *.cpp Dateien um.
So richtig mit selbstgebauten "extern" Deklarationen.
Dann sollte das gelingen....
Kurzinfo:
Hab alle anderen inos in cpp umbenannt. Ein header.h neu geschrieben und dort die void xyz() deklariert, die ich cpp übergreifend nutzen will. Ebenso externe Deklarationen für Variablen, die ausserhalb einer cpp genutzt werden wollen.
Eigentlich bin ich über zwei Sachen gefallen:
1.) Anscheinend macht die IDE nicht mehr aus mehreren Inos eine cpp und kompiliert diese dann.
2.) Ich habe immer wieder Funktionen erst nach dem Aufruf definiert (oder deklariert oder wie auch immer mn das nennt) Die alte IDE hat das wohl automatisch richtig gestellt. Für die 1.6.7 musste ich das aber selber grad ziehen.
Aber schau dir mal im Gitter den Chat von gestern Abend an.
me-no-dev hat da um 20:35 ein gutes Beispiel/HowTo gepostet, wie man das machen kann. Ob das jetzt C/C++ technisch vollkommen in Ordnung ist, mag ich nicht zu beurteilen, aber nach diesen Änderungen (und Behebung einer Menge anderer Unwissenheit von mir) konnte ich mein Projekt wieder erfolgreich kompilieren.
Fazit: Update 1.6.5 -> 1.6.7: 10 Minuten
Projektangleich: 5 Stunden. (Profi macht das wahrscheinlich in 5 Minuten, oder schreibt seinen Code gleich so, dass es keine Probleme gibt )
@Serenifly und die anderen Profis: Habe ich das so richtig wieder gegeben, oder wollt ihr da noch was richtig stellen? Nur her damit, damit ich beim nächsten Update nicht wieder hänge.
hk007:
Fazit: Update 1.6.5 -> 1.6.7: 10 Minuten
Projektangleich: 5 Stunden. (Profi macht das wahrscheinlich in 5 Minuten, oder schreibt seinen Code gleich so, dass es keine Probleme gibt )
Ich dachte immer, richtige Profis arbeiten gar nicht erst mit der IDE
Vielen Dank noch für die ausführliche Erläuterung.
Was ist in der 1.6.7 in der Praxis besser, dass sich das Updaten lohnt?
Die Arduino IDE hat sich mit der Zeit etwas gebessert (inzwischen gibt es auch Dinge wie Zeilennummern und Code-Folding. Oder man kann endlich mal die Warnungen beim Compilieren aktivieren), aber mehr als ein aufgebohrter Text-Editor ist es immer noch nicht. Visual Micro läuft in Visual Studio oder Atmel Studio (was auch wiederum nur Visual Studio ist). Man hat also alle Funktionen einer professionellen IDE. Das heißt Dinge wie Autovervollständigung, Refactoring oder bessere Suchfunktionen. Gerade Autovervollständigung per Intellisense nimmt einem erstens viel Arbeit ab und man lernt auch die Bibliotheken damit, weil man sofort sieht was an Methoden gibt. Oder wenn man eine Variable anklickt werden automatisch alle anderen Version davon hervorgehoben. Wenn man die Maus über eine Variable hält wird der Datentyp angezeigt. Bei Konstanten auch der Wert. Wenn man den Mauszeiger über eine Funktion hält sieht man den Prototyp und weiß was man übergeben soll. Das Programmieren ist so einfach viel komfortabler.
hk007:
Aber Visual Studio ist keine Freeware oder?
Ja. Ist es neuerdings. Visual Studio Community Edition.
Du kannst auch Atmel Studio verwenden. Da versteht Intellisense etwas mehr von der avr gcc Syntax (in Visual Studio prüft Intellisense gehen Visual C++ was nicht 100%ig identisch ist) und man kann auch rein avr gcc programmieren. Aber mit Visual Studio bekommt man auch Visual C++ (praktisch um mal schnell kleine, allgemeine Funktionen zu debuggen) und C# (für GUIs).
Visual Micro greift auf die Arduino IDE Dateien zu, aber ansonsten ist es getrennt voneinander.
Visual Studio gibt es auch auf deutsch. VM nicht. Bei AS ist es wohl ähnlich. Das basiert auf VS und die allgemeinen Dinge gibt es auch auf Deutsch, aber die AS-spezifischen Dinge nicht. Also besser gleich alles auf Englisch installieren.