То, что обработчик должен быть static, понятно.
IAR EW_AVR 5.10
Код
class Timing{
private:
...
Timing();
#pragma vector = TIMER2_COMP_vect
static __interrupt void TIMER2_COMP_handler(void);
public:
....
};
Обработчик:
#pragma vector = TIMER2_COMP_vect
__interrupt void Timing::TIMER2_COMP_handler(void){ //<- помечается как ошибка
...
}
private:
...
Timing();
#pragma vector = TIMER2_COMP_vect
static __interrupt void TIMER2_COMP_handler(void);
public:
....
};
Обработчик:
#pragma vector = TIMER2_COMP_vect
__interrupt void Timing::TIMER2_COMP_handler(void){ //<- помечается как ошибка
...
}
Компиляция вышеприведенного дает сообщение:
"Error [PE276] Name followed by "::" must be a class or namespace name"
Может, подход к этому вообще принципиально неверный?