#define zusammensetzen

Gast #1854936
Lesenswert?

Ok, ich versuchs mal anders
1
#define VAR1 123
2
#define VAR2 TEST
3

4
#define ZUSAMMEN ???

Wie muss ??? aussehen, damit später im Code "ZUSAMMEN" durch "TEST123" 
ersetzt wird?

Ziel ist es wie oben beschrieben, Ports vom LPC2xxx komfortabel zu 
configurieren.
Es wird ja immer wieder die Portnummer benötigt (IOSET0, IOCLR0, etc)
Gast #1854938
Lesenswert?

sebastians schrieb:
> Meinst du sowas?#define LED1_PORT PORTA
> #define LED1_PIN  5 /* Eine Zahl <= 7 */
>
> #define LED1_ON LED1_PORT |= (1<<LED1_PIN)
> ja, das geht.

Naja fast, jetzt gilt es noch PORT und A zu trennen da beim LPC die 
Zugriffe getrennt via IOSET(Portnummer) und IOCLR(Portnummer) 
stattfinden. Dann kommt noch die Datenrichtung mit IODIR(Portnummer) 
hinzu.
#1854944
Lesenswert?

Eigentlich sollte sich in jedem C-Buch was zu Token-Concatenation bzw. 
Token-Pasting finden.
1
#define CONCAT2(a,b) a##b
2
#define CONCAT(a,b) CONCAT2(a,b)
3

4
#define LED1_PORT 0
5
#define LED1_PIN 10
6

7
#define LED1_ON CONCAT(IOSET, LED1_PORT) |= (1 << LED1_PIN)

Hier steht auch, warum es zwei Makro-Ebenen braucht:

http://en.wikipedia.org/wiki/C_preprocessor#Token_concatenation

Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren