As mentioned above, the C language Standard, strangely, does not specify a standard way of declaring and defining an ISR. Hence, every compiler seems to have their own special way of doing so.

IAR declares an ISR like so:

#pragma vector=TIMER0_OVF_vect
__interrupt void MotorPWMBottom()
    // code

In AVR GCC, you declare an ISR like so:


AVR GCC uses the ISR macro to define an ISR. This macro requries the header file:

#include <avr/interrupt.h>

The names of the various interrupt vectors are found in the individual processor IO header files that you must include with <avr/io.h>.