打印

指针,函数指针,函数指针指向的函数的参数!!!

[复制链接]
1516|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luocolor|  楼主 | 2007-10-18 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎样传递一个参数给指向函数的指针呢?
首先有:
void (*InterruptHandlers[MAXHNDLRS])(void)={NULL,};

然后有:
void SetIsrInterrupt(INT32S vector, void (*handler)(void *data), void *data,INT32S ExInt)
{
        。。。。。

        if(vector>=MAXHNDLRS || vector<0)
        return;
    
    InterruptHandlers[vector] = handler;//?how

    。。。。。
}
现在要想实现的是SetIsrInterrupt的参数data可以传递给handler函数使用。即在另外的地方,可以调用InterruptHandlers[vector](*data)
在?how的地方怎样更改下呢?我想不到,也没有见过。dx指导啊!!

相关帖子

沙发
dld2| | 2007-10-18 10:31 | 只看该作者

是不是这个意思

typedef struct

     void (*InterruptHandlers)(void *data);
     void *dat;
}T_HANDLER;
T_HANDLER hdl[MAXHNDLRS];

使用特权

评论回复
板凳
computer00| | 2007-10-18 10:50 | 只看该作者

你的函数本来定义的就是没有参数啊,怎么传递?

void (*InterruptHandlers[MAXHNDLRS])(void)??

使用特权

评论回复
地板
luocolor|  楼主 | 2007-10-18 10:52 | 只看该作者

o,不好意思!

写快了,
void (*InterruptHandlers[MAXHNDLRS])(void *data)={NULL,};

使用特权

评论回复
5
computer00| | 2007-10-18 11:18 | 只看该作者

必须要有一个地方保存这个值,可以像2楼那样,建立一个结

set时将data参数保存在结构体内,调用时将值取出来。

使用特权

评论回复
6
luocolor|  楼主 | 2007-10-18 11:29 | 只看该作者

i see

使用特权

评论回复
7
luocolor|  楼主 | 2007-10-18 12:02 | 只看该作者

下面是我写的函数,功能是实现了。

多谢两位。

帮我看看有没有内存方面及其他的问题啊!我就怕这个

typedef struct t_hand
{
     void (*InterruptHandlers)(void *data);
     void **dat;
}T_HANDLER;
T_HANDLER *hdl[10]; 

void counter(void *data){
    
    printf("%s ",(char*)data);
}
void install(int i,void (*handler)(void *data), void **data){
    T_HANDLER *test = (struct t_hand*)malloc(sizeof(struct t_hand));
    test->InterruptHandlers = handler;
    test->dat = data;
    hdl = test;
}

int main(int argc, char* argv[])
{
    char *p = (char *)malloc(10);
    p = "111";
    void **p1 = (void **)&p;
    install(1,counter,p1);
    p = "2222";
    printf("install ok ");
    hdl[1]->InterruptHandlers(*(hdl[1]->dat));
    return 0;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

105

帖子

0

粉丝