Ich arbeite gerne mit einem global.h was alle globalen Variablen des
Projekts enthält, hauptsächlich weil ich die nur zentral in einem Platz
deklarieren will. Wie gesagt es geht um globale Variablen die in
mehreren Modulen sichtbar sein müssen. Das Problem ist, dass at nicht
bei extern Deklarationen erlaubt ist.
Ich habe mir deshalb ein Macro geschrieben um mit extern und at
umzugehen.
Ein gekürztes Beispiel:
1 | #ifdef GLOBAL_EXTERN
|
2 | #define EXTERN // remove EXTERN
|
3 | #define _AT_ _at_ // replace with _at_
|
4 | #else
|
5 | #define EXTERN extern // replace with extern
|
6 | #define _AT_ ;/ ## / // replace _AT_ with ';//'
|
7 | #endif
|
8 | ...
|
9 | EXTERN uint8_t xdata Buffer0 [64] _AT_ 0x0000;
|
10 | EXTERN uint8_t xdata Buffer1 [64] _AT_ 0x0040;
|
11 | ...
|
In genau einem File wird dann GLOBAL_EXTERN definiert. Bei mir ist das
meist das Modul welches Main enthält.
1 | #define GLOBAL_EXTERN
|
2 | #include "global.h"
|
3 | ....
|
Das funktioniert soweit auch wir gewünscht. Ich habe allerdings das
Gefühl das man das auch anders (besser?) machen könnte.
Was meint ihr dazu? Wie macht ihr solche Sachen?
Thomas