Gast
#205441
Hallo
ich habe da ein kleines Problem. Zur Berechnung der Adressen von
Tabellen im EEPROM würde ich gerne die Tabellengrösse verwenden, ohne
bei möglichen Änderungen jedesmal die Adressen per Hand berechnen zu
müssen. Eine Prüfung der Bereichsgrenze (EE_ADR_END) sollte schon beim
compilieren erfolgen und nicht erst zu Laufzeit.
Beispiel:
#define ENTRIES_TAB1 100
#define ENTRIES_TAB2 130
#define EE_ADR_END 0x0FFF
typedef {
uint32 a;
int16 b;
} tab1_t;
typedef {
uint8 a;
int16 b;
} tab2_t;
tab1_t tab1[ ENTRIES_TAB1];
tab2_t tab2[ ENTRIES_TAB2];
#define EE_ADR_TAB1 0
#define EE_ADR_TAB2 ( EE_ADR_TAB1 + sizeof( tab1));
#if ( ( EE_ADR_TAB2 + sizeof( tab2)) > EE_ADR_END)
#error("Tabelsize overflow")
#endif
Weil aber sizeof nicht vom Präprozessor aufgelöst werden kann,
funktioniert das Ganze nicht. Hat jemand eine Idee?