重读APUE(9)-SIG_ERR、SIG_DFL、SIG_IGN定义无参数

下面这几个函数定义,每次看到都会纠结一阵子,奇怪的是为什么没有参数?

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语言中前向声明是可以省略参数的,意味着可以有任意多个参数;

 

posted @ 2019-10-30 08:28  AlexAlex  阅读(450)  评论(0编辑  收藏  举报