C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
来源:互联网 发布:淘宝上有卖岛国片店 编辑:程序博客网 时间:2024/05/01 23:53
在ANSI标准中,signal()的声明如下:
void (*signal(int sig,void (*func)(int)))(int)
signal是一个函数,它返回一个函数指针,后者所指向的函数(signal的返回值)接受一个int参数并返回void。signal函数有两个参数,一个是sig(为int类型),另一个是func(为void(*)(int)类型)。
void (*func)(int)是一个函数指针,所指向的函数接受一个int参数,返回值是void。
下面用typedef进行简化:
typedef void(*ptr_to_func)(int);
ptr_to_func signal(int,ptr_to_func);
网上的一个例子:
#include <stdio.h>
enum { RED, GREEN, BLUE };
void OutputSignal(int sig)
{
printf("The signal you /'ve input is: ");
switch(sig)
{
case RED:
puts("RED!");
break;
case GREEN:
puts("GREEN!");
break;
case BLUE:
puts("BLUE!");
break;
}
}
void ( *signal( int sig, void (*func)(int) ) ) (int)
{
puts("Hello, world!");
func(sig);
return func;
}
int main(void)
{
(*signal(GREEN, &OutputSignal))(RED);
return 0;
}
Output:
Hello, world!
The signal you 've input is: GREEN!
The signal you 've input is: RED!
- C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
- C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
- 关于c语言声明 void (*signal(int sig, void(*func)(int)))(int)的理解
- c语言声明 void (*signal(int sig, void(*func)(int)))(int)
- signal函数的原型声明void (*signal(int signo, void (*fun(int))))(int)分析
- void (*signal(int sig, void (*func) (int))) (int)理解
- void (*signal(int sig, void (*func) (int))) (int)理解
- void ( *signal( int sig, void (__cdecl *func) ( int sig [, int subcode ] )) ) ( int sig );解释
- void (*signal(int signo, void (*func) (int))) (int) 理解
- void (*signal (int signo, void (*func)(int))) (int);
- signal函数:void (*signal(int,void(*)(int)))(int);
- 由(void (*)())0;到void ( *signal( int sig, void (* handler)( int ))) ( int );
- 理解(*(void(*)())0)()和void (*signal(int, void(*)(int)))(int)
- signal函数理解或者void (*signal(int signum,void(*handler)(int)))(int)理解
- signal函数理解或者void (*signal(int signum,void(*handler)(int)))(int)理解
- void (*signal(int signo, void (*fun(int))))(int)
- 对void (*signal(int , void (*) (int))) (int) 理解
- 简化void(*signal(int signum, void(*handler)(int)))(int)
- 人生在世
- 嘎嘎
- 基于对话框快捷键的实现
- ms932判断全角
- 三层嵌套分页
- C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
- Data Pump和Exp、Imp的区别
- VIM空格和TAB转换
- Terminate Activity的错用
- Windows与Linux下TLS实现
- DirectShow和媒体文件
- spring与struts2配置所需要的包
- Shift-JIS字符集判断,注意绿色的部分是ms932包含的,用getlength()方法获得的length都是1,判断成半角会出现bug
- 程序安装时几种有错误提示的解决办法