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

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

 

相关文章:

  • 2022-12-23
  • 2021-09-26
  • 2022-03-02
  • 2021-08-20
  • 2021-10-15
  • 2022-01-01
  • 2021-08-23
猜你喜欢
  • 2022-02-08
  • 2021-09-22
  • 2022-01-07
  • 2021-11-08
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
相关资源
相似解决方案