#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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.