Was ist der kürzeste Code, um direkt in eine Speicheradresse in C / C ++ zu schreiben?

Ich schreibe Code auf Systemebene für ein eingebettetes System ohne Speicherschutz (auf einem ARM Cortex-M1, der mit gcc 4.3 kompiliert wird) und muss direkt in ein speicherabgebildetes Register lesen / schreiben. Bisher sieht mein Code so aus:

#define UART0     0x4000C000
#define UART0CTL  (UART0 + 0x30)

volatile unsigned int *p;
p = UART0CTL;
*p &= ~1;

Gibt es einen kürzeren Weg (ich meine im Code kürzer), der keinen Zeiger verwendet? Ich suche nach einer Möglichkeit, den eigentlichen Zuweisungscode so kurz wie diesen zu schreiben (es wäre in Ordnung, wenn ich mehr #defines verwenden müsste):

*(UART0CTL) &= ~1;

Alles, was ich bisher versucht habe, endete damit, dass gcc sich beschwerte, dass es dem lvalue nichts zuordnen könne ...

Antworten auf die Frage(6)

Ihre Antwort auf die Frage