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

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