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
so gehts: #define maxPORT C #define maxBIT PC3 #define CLR_(typ, port, bit) typ##port &= (1<<bit) #define CLR(typ, port, bit) CLR_(typ, port, bit) CLR(DDR, maxPORT, maxBIT);
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); ...
uups, natürlich meinte ich #define CLRB_(typ, port, bit) typ##port &= ~(1<<bit)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.