wie #define mit Verkettung?

Gast #2940558
Lesenswert?
• ▲
▼
Ich habe den folgenden Code geschrieben:

#define maxPORT C
#define maxBIT PC3

#define CLR(typ, port, bit) typ##port &= (1<<bit)
(...)
CLR(DDR, maxPORT, maxBIT);

was da im Endeffekt raus kommen soll wäre:
DDRC &= (1<<PC3);

es kommt aber die Fehlermeldung
"DDRmaxPORT nicht deklariert"

Wie schaffe ich es dass der Präprozessor maxPort durch C ersetzt?
ich möchte mir halt die Definitionen für maxDDR, maxPIN, maxPORT 
ersparen,
so hätte ich nur eine Definition welcher Port (A,B, oder C),
das macht Änderungen leichter und man muss nicht 100 Namen erfinden
Gast #2940608
Lesenswert?
• ▲
▼
noch etwas geschickter wie ich finde, da die Definition jetzt an nur 
einer Stelle ist:

#define BUSDE C,PC3

#define CLRB_(typ, port, bit) typ##port &= (1<<bit)
#define CLRB(typ, port) CLRB_(typ, port)


CLRB(PORT, BUSDE);
CLRB(DDR, BUSDE);
...

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.