麻烦哪位达人给解释一下这两句函数指针定义

lann64 2006-08-28 10:35:49
#define SIG_DFL ((void (*)(int))0) /* default signal handling */
#define SIG_IGN ((void (*)(int))1) /* ignore signal */

在linux里很多这样的define,我知道这是定义一个带int形参,返回类型void的函数,可后面的0呀1呀的是干什么的?
...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
goldendreams 2006-11-27
  • 打赏
  • 举报
回复
他有什么用?
怎么用了?
lann64 2006-08-28
  • 打赏
  • 举报
回复
明白了,多谢!
晨星 2006-08-28
  • 打赏
  • 举报
回复
首先,(void (*)(int))是一种函数指针类型,其含义正如你所说。
而一种类型加个括号再跟个变量,即:
(T)0
这种型式的,显然就是把后面这个变量强制转换成前面这种类型。

一般函数指针类型应该指向一个函数的地址,把一个整数强制转换成函数指针类型一般会有危险的,因为这两种类型的含义实在相去甚远

但这里恰恰是就要用这两个特殊的值来表示一种特殊的含义,估计库的作者不会真的把这两个冒牌的“函数指针”真的当函数来调用,而仅仅是利用它们的特殊值来标记两个特殊的信号而已。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧