回调函数提问
一个回调函数指针指向NULL,程序会跑飞。#define NULL (void *)0
如果这样的话,回调函数指针想指向一片空区域,啥事儿也不干,应该付给它什么? 你直接定义个函数,里面什么也不干(或者就输出一些信息),然后用回调函数指向这个函数。 楼上说的当然可以。但为什么指向NULL会跑飞呢? 按照道理来讲,是不会跑飞的,你可以把代码贴出来分析撒。 不少单片机复位向量。。。 回调函数里如果没有 if (pFunc != NULL) 是肯定跑飞的....
没有return 凭啥不飞...
代码大体是这样:
定义结构
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]