Какой самый короткий код для записи непосредственно на адрес памяти в C / C ++?

Я пишу код системного уровня для встроенной системы без защиты памяти (на ARM Cortex-M1, компилируемой с gcc 4.3), и мне нужно читать / писать непосредственно в регистр с отображением в памяти. Пока что мой код выглядит так:

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

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

Есть ли более короткий путь (я имею в виду в коде), который не использует указатель? Я искал способ написать реальный код назначения, такой короткий, как этот (было бы хорошо, если бы мне пришлось использовать больше #defines):

*(UART0CTL) &= ~1;

Все, что я до сих пор пробовал, заканчивалось тем, что gcc жаловался, что он не может назначить что-то lvalue ...

Ответы на вопрос(6)

Ваш ответ на вопрос