64,648
社区成员
发帖
与我相关
我的任务
分享
typedef int (*PF) (const char *, const char *);
PF Register(PF pf);
//下面我展示一下如果不用 typedef,我们是如何实现这个声明的:
int (*Register (int (*pf)(const char *, const char *))) (const char *, const char *);
/*
很少有程序员理解它是什么意思,更不用说这种费解的代码所带来的出错风险了。显然,这里使用 typedef 不是一种特权,而是一种必需。持怀疑态度的人可能会问:"OK,有人还会写这样的代码吗?",快速浏览一下揭示 signal()函数的头文件 <csinal>,一个有同样接口的函数。
*/
Register ( int (*pf)(const char *, const char *) /*这个括号里面的是参数 PF pf*/)
返回值类型也是 PF指针,即:
int (*)(const char *, const char *)
将这个返回值类型带入上面:
int ( *Register ( int (*pf)(const char *, const char *) ) (const char *, const char */* 返回值类型*/)