Hallo!
ich versuche gerade mir mit ein paar geschickten Makros das Leben zu
vereinfachen. - Dabei bin ich aber gerade auf ein Problem gestoßen.
Unter der Verwendung des GLUE-Operators (##) wollte ich mir ein paar
generische Makros schreiben um auf entsprechende Register zuzugreifen.
Das Problem: Ein define Wert lautet zum Beispiel
1 | #define CTRL_PORT PORTB
|
2 | #define REGISTER(value) REGISTER_##value
|
Beim kompilieren bekam ich eine Fehlermeldung, dass es REGISTER_ nicht
gibt.
Die Ursache,liegt darin, dass UART1 im Prozessorheaderfile als Struktur
definiert ist. (Das Makro funktioniert ansonsten REGISTER(BLA) ergibt
REGISTER_BLA).
Gibt es eine Möglichkeit zu verhindern, dass der Preprozessor "PORTB"
weiter auflöst sondern als das Wort "PORTB" verwendet, so dass ich
"REGISTER_PORTB" erhalte, wenn ich REGISTER(CTRL_PORT) eingebe?
Danke & Gruß
"Patex" ;)