社区
C语言
帖子详情
请问这一句是什么意思?#define IO (void(*)(int)) -1
哟西哟西地
2004-11-08 11:56:49
请问这一句是什么意思?
#define IO (void(*)(int)) -1
这后面的-1有什么用?
...全文
344
20
打赏
收藏
请问这一句是什么意思?#define IO (void(*)(int)) -1
请问这一句是什么意思? #define IO (void(*)(int)) -1 这后面的-1有什么用?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
哟西哟西地
2004-12-14
打赏
举报
回复
对不起,分太少了.:)
哟西哟西地
2004-12-14
打赏
举报
回复
谢谢大家.
因为这段时我的ip被csdn给ban了.无法上来及时结贴,向大家说声对不起.!
cdxiaogan
2004-11-13
打赏
举报
回复
怎么没人说了呢?高手快现身啊!
harvey93
2004-11-13
打赏
举报
回复
说说我的理解,高手请指教:
#define IO (void(*)(int)) -1 /* IO定义为一个函数的指针(由-1转化来的),这个函数返回值为void型,参数为int,原因烧后说 */
void (*signal(int,void(*Func)(int)))(int);
/* 这个语句是对signal函数的一个声明.
假设作一个宏: #define POINTER signal(int,void(*Func)(int)) 那么原句可以写成为 void (* POINTER)(int); POINTER代表了一个函数指针,它是函数signal(int,void(*Func)(int))的返回值,函数signal(int,void(*Func)(int))本身有两个参数,一个为int型,另外一个参数又是一个函数的指针Func.因为signal返回值是void(* POINTER)(int)这种形式,所以如果-1要作为signal函数的返回值,就必须作一次强行转换,至于signal返回-1的含义,请见LoveCreatesBeauty(爱产生美)的大作
*/
cdxiaogan
2004-11-10
打赏
举报
回复
to LoveCreatesBeauty(爱产生美):
/*************************
void ( *signal( int,void(*Func)(int) ) )(int);是这样一个函数:
1、它有两个参数。一个是int,一个是函数指针Func。
2、它的返回值是一个函数指针。在signal正确时它的返回值上一个函数的地址。这个用法可能与
Windows编程里有些概念相似,比如获取一个设备上下文句柄时,也会返回原始设备上下文的句
柄,以便恢复。
************************/
函数指针Func?Func是一个用typedefine定义过得自定义类型吗?
如果定义成void ( *signal( int,void(*)(int) ) )(int);会有什么区别呢?
cdxiaogan
2004-11-10
打赏
举报
回复
to LoveCreatesBeauty(爱产生美):
/*************************
void ( *signal( int,void(*Func)(int) ) )(int);是这样一个函数:
1、它有两个参数。一个是int,一个是函数指针Func。
2、它的返回值是一个函数指针。在signal正确时它的返回值上一个函数的地址。这个用法可能与
Windows编程里有些概念相似,比如获取一个设备上下文句柄时,也会返回原始设备上下文的句
柄,以便恢复。
************************/
函数指针Func?Func是一个用typedefine定义过得自定义类型吗?
如果定义成void ( *signal( int,void(*)(int) ) )(int);会有什么区别呢?
Zark
2004-11-09
打赏
举报
回复
根据不同的字长系统,这个宏可以变为
在16字长中
#define IO 0xFFFF
在32字长中
#define IO 0xFFFFFFFF
DiabloWalkOnTheEarth
2004-11-09
打赏
举报
回复
把-1强制转化为(void(*)(int)),不会吧,这么暴力.
zhangfjj
2004-11-09
打赏
举报
回复
在哪看到的?
单纯看的话,只是一个宏,不知道-1的作用。能不能给出更详细的代码?
jozosoft
2004-11-09
打赏
举报
回复
哎,别光是嘴巴上说,送分给大家呀。我也要一点呀!
LoveCreatesBeauty
2004-11-09
打赏
举报
回复
得到您的表扬,真是比三伏天吃西瓜还要高兴:)
Zark
2004-11-09
打赏
举报
回复
致: LoveCreatesBeauty(爱产生美)
正确.
yycec
2004-11-09
打赏
举报
回复
这个宏定义了一个函数指针,指向函数的首地址-1处。
LoveCreatesBeauty
2004-11-09
打赏
举报
回复
//signal.h
/* signal error value (returned by signal call on error) */
#define SIG_ERR (void (__cdecl *)(int))-1 /* signal error value */
signal函数失败时返回SIG_ERR,在标准C语言中SIG_ERR是-1。但不能直接用-1。用为signal的返回类型是 void(*)(int)。所以-1也要转换为signal的返回类型。地址毕竟跟整数还是有区别的。这与DiabloWalkOnTheEarth(毁灭小符 (Annihilus)(99)(3502)) 猜得是一样的。不知道楼主提到的那个为什么没有用SIG_ERR,而是自定义一个类似的IO。金陵五月大哥指教一下:)
void ( *signal( int,void(*Func)(int) ) )(int);是这样一个函数:
1、它有两个参数。一个是int,一个是函数指针Func。
2、它的返回值是一个函数指针。在signal正确时它的返回值上一个函数的地址。这个用法可能与
Windows编程里有些概念相似,比如获取一个设备上下文句柄时,也会返回原始设备上下文的句
柄,以便恢复。
hffaming
2004-11-09
打赏
举报
回复
void (*signal(int,void(*Func)(int)))(int);
该函数用来返回一个具有(int)参数的void函数句柄
cdxiaogan
2004-11-09
打赏
举报
回复
计算机对(void(*)(int))的具体处理过程呢,请 Zark(金陵五月) 能进一步详细解释一下吗?
我初学者,谢谢!~
sdusthd
2004-11-09
打赏
举报
回复
void (*signal(int,void(*Func)(int)))(int);
这个怎么理解?不理解为什么最后还有一个(int)?安它带入的参数好像不行呀
sdusthd
2004-11-09
打赏
举报
回复
这个问题要关注
哟西哟西地
2004-11-09
打赏
举报
回复
这是一本linux书中介绍的。
书中前面有定义:
void (*signal(int,void(*Func)(int)))(int);
#define IO (void(*)(int)) -1
void Text(int a){
..
}
后有
if(signal(10,text)==IO)
....
这样的语句。。。
哟西哟西地
2004-11-08
打赏
举报
回复
在线=
MATLAB产生2FSK、BPSK信号
MATLAB产生2FSK、BPSK信号 设置参数: fc_1=20;%载波频率1 fc_2=40;%载波频率2 fc_psk=40;%psk载波频率 fs=900;%采样频率 fb=10;%信息速率
调频三角波和锯齿波信号生成
不依赖任何第三方库,用C语言生成调频三角波以及锯齿波信号,并使用python进行数据频谱分析,确认C语言实现的正确性。
毕业设计-ssm320基于Java的网络音乐系统的设计与实现+vue.zip
源码+数据库+配套文档+答辩教程
计算机组成原理-D触发器的工程文件
计算机组成原理--D触发器的工程文件
SAMSUNG三星DDR4 RDIMM 3200-2933 Validat
io
n module服务器内存条供应
SAMSUNG三星DDR4 RDIMM 3200-2933 Validat
io
n module服务器内存条供应内容概要:本文档为三星DDR4 RDIMM 3200-2933验证结果报告,主要记录了不同供应商提供的DDR4 RDIMM内存模块在
Int
el服务器参考平台上的测试情况。测试涵盖了多种容量(8GB到256GB)、不同速率(2933 MT/s 和 3200 MT/s)以及不同配置(如CL值、电压、通道数等)。测试数据包括DIMM供应商、型号、大小、CAS延迟(CL)、原始卡、DRAM供应商、DRAM部件号、密度、宽度、生产日期、寄存器供应商及其版本等详细信息。此外,文档还强调了这些测试结果仅供参考,不能用于最终设计,且所有信息可能会随时更改。 适用人群:服务器硬件工程师、数据中心管理员、内存模块采购人员、系统集成商。 使用场景及目标:①帮助工程师评估不同品
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章