问题描述
- socket 的signal函数看不懂
-
书上写:"用typedef简化函数原型
2~3 函数signal的正常函数原型因层次太多而变得很复杂:
void (*signal(int signo, void (*func)(int))) (int) ."
这是神马函数?
比如void (*p) (int)我知道这叫函数指针, 可是括号里的 *signal(int signo, void (*func)(int)) 是什么东西? 是一个名字叫做*signal的函数? 这是语法错误吧?
解决方案
不是语法错误,这个函数很复杂,当时学的时候就没有学太明白,我试着分析一下,我分析的不知道对不对。。。。。
给你个参考
从void(* func)(int) 开始看
这是一个函数指针,然后向右看,遇到括号往回返,一直看待再出现括号,
就是signal(int signo ,void(*func)(int))这是个函数,到这里就是说void(*func)(int)这个函数指针是函数signal的一个参数,
与int signo 一起做signal函数的参数,
然后前面加* 变幻成你给的形式 void(*signal(int signo,void(*func)(int)))(int),应该是一个函数指针。
晕了~~~你参考一下吧,我真心的不确定。
时间: 2024-08-24 21:44:22