可能重复:
这段代码的含义是什么?void(*signal(int sig,void(*func)(int)))(int);
我有一个复杂的声明,它取自"signal.h"头文件,下面是声明.
void (*signal(int sig, void (*func)(int)))(int);
Run Code Online (Sandbox Code Playgroud)
现在,我该如何解析它?如
signal是带有两个参数'sig'的int类型和'func'的函数,它是一个指向函数的指针,该函数将int作为参数并返回void类型; 它返回一个指向函数的指针,该函数将int作为参数并返回void.
可以,或者信号是指向功能的指针吗?
Joh*_*ode 63
先从最左边的标识和工作的方式了,记住,[]
并()
结合之前*
,所以*a[]
是一个指针数组,(*a)[]
是一个指向数组的指针,*f()
返回一个指针的函数,并且(*f)()
是指向一个功能:
signal -- signal
signal( ) -- is a function
signal( sig, ) -- with a parameter named sig
signal(int sig, ) -- of type int
signal(int sig, func ) -- and a parameter named func
signal(int sig, (*func) ) -- which is a pointer
signal(int sig, (*func)( )) -- to a function
signal(int sig, (*func)(int)) -- taking an int parameter
signal(int sig, void (*func)(int)) -- and returning void
*signal(int sig, void (*func)(int)) -- returning a pointer
(*signal(int sig, void (*func)(int)))( ) -- to a function
(*signal(int sig, void (*func)(int)))(int) -- taking an int parameter
void (*signal(int sig, void (*func)(int)))(int); -- and returning void
Run Code Online (Sandbox Code Playgroud)
signal
将信号处理函数func
与信号关联sig
,并将指针返回到旧信号处理函数:
void new_interrupt_handler(int sig)
{
... // do something interesting with interrupt signal
}
int main(void)
{
void (*old_interrupt_handler)(int);
...
/**
* Set up our new interrupt handler
*/
old_interrupt_handler = signal(SIGINT, new_interrupt_handler);
...
/**
* Restore original interrupt handler
*/
signal(SIGINT, old_interrupt_handler);
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1831 次 |
最近记录: |