看代码的时候看到这样的typedef,看不明白,请教大家.
typedef void (*wndproc) (struct windowlist * window, GR_EVENT * ep);
使用例子:
win *add_window(GR_WINDOW_ID wid, GR_WINDOW_ID pid, GR_WINDOW_ID clid, wndproc proc);
谢谢!
wndproc是一个指向函数的指针,该函数有两个变量struct windowlist * window和GR_EVENT * ep。返回值是void!
定义wndproc为指向函数的指针的助记,该函数是参数为(struct windowlist * window, GR_EVENT * ep),返回值为void的函数。建议看看指向函数的指针的相关内容,就不难理解了
就相当于
win *add_window(GR_WINDOW_ID wid, GR_WINDOW_ID pid, GR_WINDOW_ID clid, void (*proc) (struct windowlist * window, GR_EVENT * ep));
typedef void (*wndproc) (struct windowlist * window, GR_EVENT * ep);
定义一个别名
可以用 wndproc来定义void (*) (struct windowlist * window, GR_EVENT * ep)类型的函数;
参看下面的:
doube(*)() (*pa)[9];
typedef pFun (*pFunParam)[9];
//整体声明一个新类型
pFunParam pa;
//使用定义的新类型来声明对象,等价于doube(*)() (*pa)[9];
把wndproc看做是一种类型,只不过它是函数类型,然后你就可以这样:
wndproc myProc = add_window;
win *add_window(GR_WINDOW_ID wid, GR_WINDOW_ID pid, GR_WINDOW_ID clid, wndproc proc);中的最后一个参数是前面定义的函数指针类型参数。前面三个参数就是一般类型的参数。
xuexi
typedef 的一个最经常的用法,就是定义函数指针,也就是指向函数的指针,你的这个就是这种用法,具体可以看看C语言的书!