Я давно не писал код на C++; однако теперь мне нужно работать с цифровым сигнальным процессором texas tools F28335, и я пытаюсь перейти с C на C++. У меня есть следующий код, который пытается инициализировать процедуру обслуживания прерываний статическим методом класса:
//type definition for the interrupt service routine
typedef interrupt void (*PINT)(void);
//EPWMManager.h
class EPWMManager
{
public:
EPWMManager();
static interrupt void Epwm1InterruptHandler(void);
};
//EPWMManager.cpp
interrupt void EPWMManager::Epwm1InterruptHandler(void)
{
//some code to be called on interruption
}
//main.cpp
int main(void)
{
PINT p;
p = &(EPWMManager::Epwm1InterruptHandler);
return 0;
}
При компиляции получаю следующее:
ошибка: значение типа "void (*)()" не может быть присвоено объекту типа "PINT"
Кажется, мне не хватает актерского состава.
interrupt
не является частью C++. Это должно быть расширение, специфичное для вашей реализации. Что произойдет, если вы удалите его из определений какPINT
, так иEpwm1InterruptHandler
? Вы все еще получаете сообщение об ошибке? - person n. 1.8e9-where's-my-share m.   schedule 15.09.2011