Meaning I understand, instead of the default interrupt handler ADC1_COMP_IRQHandler calls its own function void AdcIrq::Irq (void) .
What I probably don't understand the most is "_ZN6AdcIrq3IrqEv"
Second question.
How is the same thing written in C MDKARM or c IAR (not support __attribute__ ) ?
alias ("target")
The alias attribute causes the declaration to be emitted as an alias for another
symbol, which must be specified. For instance,
void __f () { /* Do something. */; }
void f () __attribute__ ((weak, alias ("__f")));
defines ‘f’ to be a weak alias for ‘__f’. In C++, the mangled name for the target
must be used. It is an error if ‘__f’ is not defined in the same translation unit.
Not all target machines support this attribute.
The cryptic function name will be probably found in a target specific library. If no alias construct is supported by your tool chain, you can surely reference the function directly.