Hallo Chrisbie,
die Idee mit extern ist gut. Mit extern sagst du dem Compiler, dass du die Variable deklarieren möchtest. Dabei wird sie nicht angelegt, es wird nur geagt, dass es sie gibt. Deshalb darf ihr auch noch kein Wert zugewiesen werden.
in Globals.h steht also
- extern int TestInt; // Hier darf KEIN Wert zugewiesen werden
Die Variable existiert jetzt noch nicht. Du musst also zusätzlich eine Definition der Variablen durchführen. Da darf auch ein Wert zugewiesen werden.
Das kann im Hauptprogramm gemacht werden.
- #include "Globals.h"
- #include "Tools.h"
- #include "Menue.h"
- #include <arduino.h>
- int TestInt = 20;
Global.h kann jetzt gefahrlos in jedes Modul importiert werden, das TestInt kennen muss. Da wird zwar nur die externe Referenz importiert, diese verweist aber auf die tatsächliche Variable.
Bei Konstanten ist es einfacher, da genügt es, wenn du in Globals.h
angibst. Das Schlüsselwort extern und die zusätzliche Deklaration sind dann nicht notwendig.
Bei GLOBALS_H hast du noch etwas vergessen. Zuerst fragst du ab, ob GLOBALS_H nicht definiert ist. Wenn das so ist, definierst du GLOBALS_H und bindest den Code bis zu #endif ein. Bei allen späteren Importen ist GLOBALS_H dann definiert und es wird nichts mehr eingebunden.
- //#ifndef GLOBALS_H
- //#define GLOBALS_H
-
- #define Serial_speed 115200
- #define WaiteTime 120
-
- const int TestInt = 20;
- //#endif
Gruss
René