平常的函数指针都是这么写的:
typedef void (*Action)();
这种写法只能用于一种函数结构,当有多个函数结构时,每个结构都需要定义,维护起来比较麻烦的。
可用宏定义实现一个泛型的函数结构,如下:
#define Function(name, ret, …) ret (*name)(__VA_ARGS__)
使用如下语法:
Function(f, void, int, char*);
f(1,"abc");
将等价替换为:
void(*f, int, char*);
f(1,"abc");
非常方便,本宏定义也可用于参数声明;

Categories: 计算机