Какой самый короткий код для записи непосредственно на адрес памяти в 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 ...