volatile uint32_t* _a_piece_of_shit;#define READVAR(x) do{_a_piece_of_shit = (uint32_t*)&x;}while(0)...
Правда, теперь будет куча лишних операций вместо пустого считывания, как в (void)x.