Ja ich weis es ist etwas älteres Thema. Jedoch immer noch nicht verstanden.
Ich habe auch schon darüber gelesen.
Habe bis jetzt nix mit .h gemacht.
Ich habe einen Code von 300 Zeilen und möchte diese nun aufspalten. In diese Zeilen sind alles verschiedene Funktionen. Diese geben mit Variablen Infos weiter.
Wen ich jetzt in einen Tab den Wert X an einer Variabel int hour gebe, ist dieser Wert und Variabel nur in dem einen Tab gültig? und wen ja wie deklariere ich diese so das sie bei allen gültig sind.
Bzgl. Tabs:
Die IDE geht da knallhart von links nach rechts vor. Legst Du eine Variable im 1. Tab an, so ist sie von überall zugreifbar.
Deklarierst Du eine Variable im 2. Tab und referenzierst sie im 1. Tab, meckert der Kompiler :o
Wiederum 2. Tab deklaration, 3. Tab Verwendung funktioniert wieder
Die IDE geht da knallhart von links nach rechts vor.
Naja...
Verwendet man an der Stelle *.cpp und *.h Dateien tut sie genau das, was man da schreibt.
Verwendet man allerdings *.ino Dateien, erstellt sie selber Prototyoen und bindet die Dateien in alphabetischer Reihenfolge ein. Und das passiert nicht immer so, wie man sich das wünscht.
#define TIME_h
#if define TIME_h
int second = 0;
int minute = 0;
int hour = 0;
int weekDay = 0;
int monthDay = 0;
int month = 0;
int year = 2016;
#endif
Jetzt das ganze mal getestet jedoch kommt dann volgende Vehlermeldung das ASK_TIME (); nicht deklariert ist.
Was mache ich falsch. bzw. was stimmt nicht.
WEgen den Tabs, also wen ich das so mache dann funktioniert es immer? LINKS oder RECHTS ist EGAL?
Die Tabs werden vor dem kompilieren in alphabetischer Reihenfolge in eine .cpp Datei kopiert und kompiliert. Wen man das beachtet ist Code auch untereinander verwendbar.
Jetzt das ganze mal getestet jedoch kommt dann volgende Vehlermeldung das ASK_TIME (); nicht deklariert ist.
Was mache ich falsch. bzw. was stimmt nicht.
Wenn du Header selbst schreibst kannst du dich nicht auf den Arduino Komfort verlassen
#define TIME_h #if define TIME_h
Include Guards musst du dir auch noch mal ansehen. Man fragt erst ab ob das Makro nicht definiert und definiert dann das Makro. Damit es nur einmal gemacht wird
Außerdem wird das nur im Header gemacht! In der .cpp Datei inkludierst du dann nur den Header
Außerdem musst du auch Arduino Header inkludieren die du da braucht. Wie Wire.h
Wenn du willst, dann bekommst du das auch mit *.h und *.cpp Dateien hin.
Hat unter Anderem den Vorteil, dass dein Code dann von jedem C++ Compiler auf der Welt gefressen werden kann/könnte.
Das *.ino Gedöns wird nur von der Arduino IDE geschluckt.
Okey das stimmt. Der Code solte eben bald so fertig sein das er Eingesetzt und getestet werden kann. Ist eben für ein Schulprojektchen.
Aber für die Abschlussarbeit schaue ich dieses Thema sicher nochmal genauer an.