解释void( *信号(int signo,void *(func)(int)))(int)[英] Explain void (*signal(int signo, void *(func)(int)))(int)

本文是小编为大家收集整理的关于解释void( *信号(int signo,void *(func)(int)))(int)的处理方法,想解了解释void( *信号(int signo,void *(func)(int)))(int)的问题怎么解决?解释void( *信号(int signo,void *(func)(int)))(int)问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

请解释此类型签名:void (*signal(int signo, void *(func)(int)))(int)

推荐答案

signal函数的类型签名何时将typedef用于传递的函数指针:

typedef void (*sighandler_t)(int);
sighandler_t signal(int signo, sighandler_t func);

sighandler_t是一个指向int参数并没有返回的函数的指针. signal函数将这样的函数指针作为其第二个参数.它还返回该类型的功能指针.

其他推荐答案

c声明需要从内而外读取.复杂函数声明的棘手部分是弄清楚哪个是最内向的声明者(从哪里开始).它通常是第一个不是类型标识符的标识符.因此,在这种情况下:

void (*signal(int signo, void *(func)(int)))(int)

声明器是signal.在括号内,后缀比前缀更高,因此signal是一个取两个args((int signo, void *(func)(int)) part)的函数,它将指针(前缀*)返回到采用单个int arg( (int)末尾),然后返回void

本文地址:https://www.itbaoku.cn/post/359117.html