下面这几个函数定义,每次看到都会纠结一阵子,奇怪的是为什么没有参数?
1 #define SIG_ERR (void (*)())-1 2 #define SIG_DFL (void (*)())0 3 #define SIG_IGN (void (*)())1
函数signal的回调明明是下面这样的,void (*func)(int)),有个int类型的参数;
1 void (*signal(int signo, void (*func)(int)))(int);
其实这个问题以前也写过一篇文章<C函数前向声明省略参数>;原因是:C语言中前向声明是可以省略参数的,意味着可以有任意多个参数;