Hi,
I'm not familiar with MISRA rules, but I think that definition of address as a macro and casting pointer to different type by this way is against MISRA rules. You can try to define ADC as a pointer and assign the address in it. Something like
unsigned int adc0*;
adc0=0x4003B000;
Jiri