Hallo Leute,
ganz komischer Fehler, vorweg, ich arbeite mit einem ATmega32 unter AVR
Studio mit GCC.
Ich bin gerade dabei mir ein LCD Menu zu schreiben.
Folgendes hab ich bisher geschrieben:
1 | static const char Hauptmenu_0[] = "Ausschalten";
|
2 | static const char Hauptmenu_1[] = "Optionen";
|
3 | static const char Hauptmenu_2[] = "Kalibrierung";
|
4 |
|
5 | //Struktur der einzelenen Einträge
|
6 | typedef struct {
|
7 | const char *text;
|
8 | unsigned char next;
|
9 | unsigned char prev;
|
10 | } menu_struct;
|
11 |
|
12 | //Struktur initialisieren
|
13 | const menu_struct menue[] = {
|
14 | {Hauptmenu_0, 1, 2},
|
15 | {Hauptmenu_1, 2, 0},
|
16 | {Hauptmenu_2, 0, 1},
|
17 | };
|
So wunderbar, funktioniert auch solange ich alles in der main.h
definiere. Lagere ich dies allerdings aus, z.B. in menu.h, und
includiere das ganze in "main" meckert der Compiler "menu.o:(.data+0x0):
multiple definition of `menue'".
Ich meine, klar, es sind Konstanten und wenn die dann includiert werden
von main macht er wahrscheinlich ne Kopie, tja, und dann hab ich ne
multiple definition...
Meine Frage nun, wie kann ich das umgehen? #ifndef #define vielleicht?
Ich meine klar, einfach ne "main.h" definieren und dann die Struktur
dort initialiesieren, aber ich wollte eigendlich eine Datei wo alle
Sprachspezifieschen Einstellungen drin stehen, halt der Header des
Menues.
Vielleicht hat ja jemand ne Idee...
Gruß
Ralf