LINUX.ORG.RU

interrupt или getvect setvect


0

0

Есть
//========a.h

#ifdef __cplusplus
		#define __CPPARGS ...
#else
    #define __CPPARGS
#endif
 
class a
{
  
public :
  a::a();
  a::~a();
  void interrupt ( *OldIntVect1)(__CPPARGS);
  void interrupt Serial1_Isr(__CPPARGS);
}

//========a.cpp
#include "a.h"

a::a()
{
  OldIntVect1=getvect(EOITYPE_INT0);
121:  setvect(EOITYPE_INT0,Serial1_Isr);
}

void interrupt a::Serial1_Isr(__CPPARGS)
{
;
}

a::~a()
{
  setvect(EOITYPE_INT0,OldIntVect1);
}

Error 121: Member function must be called or its address taken
Error 121: Type mismatch in parameter '__isr' in call to 'setvect(int,void (interrupt far*)(...))'

почему возникает ошибка или как исправить?
Компилятор borland c++ 3.1.

Мосье знает толк в извращения: C++ + ISR :-D Ради прикола поинетесуйтесь, какая сигнатура у a::Serial1_Isr, спорю, что инициирующий прерываний код ничего не знает о this.

phoenix ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.