Präprozessor Variable zur Laufzeit generieren
-
Hallo,
Verschiedene Speicheradressen sind als Präprozessor Variablen vorhanden:
#define DEVICE_BASE_ADDR0 0xfffb0000 #define DEVICE_BASE_ADDR1 0xfffb0001 #define DEVICE_BASE_ADDR2 0xfffb0002
Wie kann ich mit Hilfe des Indexes [0...2] zur Laufzeit auf eine Präprozessor-Variable zugegriffen.
DEVICE_BASE_ADDRX
. Ich habe folgendes probiert:#define DEVICE_PORT_GET_ADDR( x ) DEVICE_BASE_ADDR ## x // x entspricht dem gewünschten Index [0...2]
Meine Lösung führt zu einem Compiler-Fehler (undefinierte Variable). Mir ist klar, dass es noch mehr Präprozessor Magik braucht, um das gewünschte Ergebniss zu erreichen. Doch ist das mit Makros überhaupt möglich??
-
cmaus schrieb:
Doch ist das mit Makros überhaupt möglich??
Nein. Zur Laufzeit sind die Makros längst weg.
-
void* device_port_get_addr(unsigned x) { static void* adresses[3]={(void*) DEVICE_BASE_ADDR0, (void*) DEVICE_BASE_ADDR1, (void*) DEVICE_BASE_ADDR2}; return adresses[x]; }