[在Linux中学习Signals时,我遇到了这个声明:
typedef void (*sighandler_t)(int);
sighandler_t signal (int signo, sighandler_t handler);
处理程序函数必须返回void
,并且其原型具有以下形式:
void my_handler (int signo);
Linux使用typedef
,sighandler_t
定义此原型。
[当我看到signal()
功能的Linux手册页时,就在其中。
但是我不明白这里的typedef
语句是什么意思。
任何人都可以解释typedef sighandler_t
的含义吗?
这是一些C魔术,它说明以下内容:
typedef void (*sighandler_t)(int);
有一个称为
sighandler_t
的特殊类型,它是一个使用整数参数且不返回任何内容的函数的指针。
sighandler_t signal(int signo, sighandler_t handler);
有一个函数
signal
,它使用一个名为signo
的整数和一个函数指针handler
作为参数,并返回一个函数指针。
typedef
的字面意思是“类型定义”,用于定义复杂类型的占位符,例如函数指针或结构等。
函数指针的定义超出了此问题的范围,但是可以认为是用户编写的命令,框架将调用该命令,而并不确切知道该函数将是什么。