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

原文地址:https://www.cnblogs.com/wanpengcoder/p/11762755.html