arm中断函数中回调类成员函数的问题

在定时器中断函数中写一个事件函数,触发中断后调用上层C++类对象设置的回调函数,但是这个上层对象类型不确定,传给定时器的只有一个回调函数地址和该对象本身this的地址。

现在要怎么写?我想到的结构应该就像下面的,或是其他实现?

<Timer.c>
extern ST_TIMER st_timer;

UINT32 CallFunc(UINT32 funcaddr,UINT32 This)
{
        ……
}

VOID timer0_irq_handler( VOID )
{
            CallFunc(st_timer.funcaddr,st_timer.This);
}


<A.h>
class A
{
    void setHandleProc(Uint32 funaddr,Uint32 para);
}

<A.cpp>
ST_TIMER    st_timer
void setHandleProc(Uint32 funaddr,Uint32 para){
    st_timer.funaddr=funaddr;
    st_timer.This = para;
}


1个回答

回调函数可以用一个回调函数类型的map存起来,触发的时候,找到该回调地址,可以直接用this调用

smallstar02
smallstar02 谢谢回答,但是如果我不知道回调函数类型呢?比如这里,事先定时器并不知道将要回调的是A对象的方法。
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐