Externe Deklaration eines Arrays

Hi,

stehe mal wieder an. Vllt. kann mir jemand helfen.
Ich habe ein Projekt mit mehreren Tabs (Dateien).
In einer Header.h definier ich einige externe Variablen, um sie in diversen *.cpp zu verwenden.

Jetzt versuch ich seit geraumer Zeit ein Array von Integern zu integrieren.

In der Header.h hab ich folgendes:

  extern int sunrise[12] = {8,8,7,7,6,6,6,6,7,8,8,8};
  extern int sundown[12] = {16,17,18,19,20,21,21,20,19,17,16,16};

Allerdings wenn ich die Variable in einer test.cpp verwenden will (#include "Header.h" steht ganz oben) dann krieg ich das irgendwie nicht gebacken. Ich bekomme immer Fehler wie "multiple definition", oder "redefinition"

Kommt das davon, weil ich die Header.h in mehreren *.cpp mit include aufrufe?

Irgendwie komme ich da nicht weiter.
Wär super, wenn jemand ne Idee hätte.

Ich nehme mal an da macht die Arduino IDE wieder Mist draus. Die behandelt die Dateien einfach nicht wie ein normaler Compiler. Normal deklariert man das Array im Header nur als extern und definiert es in einer der .cpp Dateien.

Was hier gehen sollte ist das Array im Header zu definieren und in der .ino Datei extern zu deklarieren

Übrigens:
1.) Für 0-255 reicht byte als Datentyp
2.) Wenn das Array nicht verändert wird sollte es const sein

extern int sunrise[12] = {8,8,7,7,6,6,6,6,7,8,8,8};

Jedes mir bekannte System beschwert sich bei solchen Dingen in *.h Dateien, wenn sie mehrfach eingebunden werden.
Jedes!

Mit Fug und Recht, wird Unfug und Unrecht (mit Fehlermeldungen) bestraft.

Die IDE macht das schon richtig....
Man muss ihr nur die Chance geben.

(siehe Anhang)

ArrayExtern.zip (902 Bytes)

@combie

Yep, so klappts.
Danke