Hallo Welt, ist es möglich im GCC #defines zusammenzusetzen? Der Plan:
1 | #define LED1_PORT 0
|
2 | #define LED1_PIN 10
|
3 | |
4 | #define LED1_ON IOSETLED1PORT |= (1<<LED1_PIN)
|
Wie kann ich IOSET und LED1_PORT zu IOSET0 verknüpfen?
|
Forum: Compiler & IDEs #define zusammensetzenHallo Welt, ist es möglich im GCC #defines zusammenzusetzen? Der Plan:
Wie kann ich IOSET und LED1_PORT zu IOSET0 verknüpfen? Bitte WAS wollst du? Beschreib mal dein Problem genauer, sonst kann und will dir hier sicher niemand helfen... MfG Marius Meinst du sowas?
ja, das geht. Ok, ich versuchs mal anders
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) 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. Mit dem Präprozoroperator ## Dazu gibt es hier etliche Artikel, siehe auch das C-Buch deines Vertrauens Eigentlich sollte sich in jedem C-Buch was zu Token-Concatenation bzw. Token-Pasting finden.
Hier steht auch, warum es zwei Makro-Ebenen braucht: http://en.wikipedia.org/wiki/C_preprocessor#Token_concatenation Andreas Max schrieb: > Klaus Wachtler schrieb: >> Mit dem Präprozoroperator ## > > Also so hier?#ZUSAMMEN VAR2##VAR1 Ups, da fehlt noch das define. Sehe aber gerade oben, dass es doch komplizierter ist. Vielen Dank, schaue ich mir morgen mal an. Und nicht wundern, Token-Pasting ist magisch und hat bisweilen die erstaunlichsten Wirkungen :-) Sven P. schrieb: > Und nicht wundern, Token-Pasting ist magisch und hat bisweilen die > erstaunlichsten Wirkungen :-) Wie meinst Du das? Ist es nicht zu empfehlen? @Andreas Ferber Hab es doch heute noch ausprobiert. Funktioniert prima. Danke! 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
Noch kein Account? Hier anmelden.
|
|