vincent0319 发表于 2012-6-18 15:08:31

回调函数提问

一个回调函数指针指向NULL,程序会跑飞。
#define NULL (void *)0

如果这样的话,回调函数指针想指向一片空区域,啥事儿也不干,应该付给它什么?

nvision 发表于 2012-6-18 15:16:39

你直接定义个函数,里面什么也不干(或者就输出一些信息),然后用回调函数指向这个函数。

vincent0319 发表于 2012-6-18 16:17:01

楼上说的当然可以。但为什么指向NULL会跑飞呢?

rkernel 发表于 2012-6-18 16:52:14

按照道理来讲,是不会跑飞的,你可以把代码贴出来分析撒。

learner123 发表于 2012-6-18 22:03:47

不少单片机复位向量。。。

adce 发表于 2012-6-19 01:41:16

回调函数里如果没有 if (pFunc != NULL) 是肯定跑飞的....
没有return 凭啥不飞...

vincent0319 发表于 2012-6-19 10:07:32

代码大体是这样:
定义结构
struct AT_CMD_BODY{
        const char * const setcmdString;       //发送的AT命令
        const int setData;//跟随的命令设置参数
        const U8 user;       //user=1,命令有效,需要用到user=1
        const char * const cmdreply; //返回的AT命令格式
        ERR_NUM (* const ProcCmd) (char ** argv,int argc); //接收到的AT命令解析回调
};
初始化结构体数组:
const struct AT_CMD_BODY setCmds_Pool[]={
//Enter CMD MODE
        {"$$$",                              NO_P,CMD_USED,   "CMD",Nullreturn},
};

回调这样写,写成内联函数,提高效率:
__inline ERR_NUM Nullreturn(char ** argv,int argc)
{
        return SUCESS;
}
OK,没问题。

我可以这样定义么?
#define Nullreturn (void *)0
如此定义后,跑飞,不知道飞到哪里去了。
页: [1]
查看完整版本: 回调函数提问