2 smallstar02 smallstar02 于 2016.09.23 15:37 提问

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个回答

feng1790291543
feng1790291543   Ds   Rxr 2016.09.23 16:27

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

smallstar02
smallstar02 谢谢回答,但是如果我不知道回调函数类型呢?比如这里,事先定时器并不知道将要回调的是A对象的方法。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!