Я пишу код системного уровня для встроенной системы без защиты памяти (на 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...