C语言signal函数原型末尾(int)括号的语法含义问询
C语言signal函数原型语法解析
首先先纠正你之前的一个认知偏差:你给出的void (*example(int sig, void (*func)(int)));声明中,example的返回值并不是void类型,而是指向「接收1个int参数、返回值为void的函数」的指针。
你疑惑的原signal函数原型末尾的(int),作用是明确指定signal函数的返回值(也就是那个函数指针)所指向的目标函数的参数列表。
我们可以通过typedef简化写法来更直观理解:
// 先定义信号处理函数的指针类型:接收int参数,返回void typedef void (*sighandler_t)(int); // 等效的signal函数声明,和你给出的复杂原型完全等价 sighandler_t signal(int sig, sighandler_t func);
你原来看到的复杂写法,本质上就是把typedef定义的sighandler_t类型手动展开到了声明里,末尾的(int)就是sighandler_t类型定义中对应的参数列表部分。
内容的提问来源于stack exchange,提问作者RobJob
相关产品推荐
相关产品推荐

