返回信息流这里是 函数指针 把 常数0 给 强制转化了么?
那这样使用是什么意思呢
这是一条镜像帖。来源:北邮人论坛 / python / #6151同步于 2015/4/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
请问这个宏该如何理解~
henceman
2015/4/9镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
就是字面上的意思啊。就是signal的第二个参数本来要传入一个函数指针,这里偏偏要把一个整数0或者整数1冒充成函数指针传进去。
另外不建议去理解SIG_IGN和SIG_DFL到底是怎么定义的,只要知道这个宏可以用在这个参数上就行了。
【 在 nuanyangyang 的大作中提到: 】
: 就是字面上的意思啊。就是signal的第二个参数本来要传入一个函数指针,这里偏偏要把一个整数0或者整数1冒充成函数指针传进去。
: 另外不建议去理解SIG_IGN和SIG_DFL到底是怎么定义的,只要知道这个宏可以用在这个参数上就行了。
暖神,是不是0和1作为某个函数的地址了,然后编译器或系统会把0和1这个地址作某种转换,没太见过在应用程序中直接使用 函数地址的 值~
【 在 henceman 的大作中提到: 】
: 暖神,是不是0和1作为某个函数的地址了,然后编译器或系统会把0和1这个地址作某种转换,没太见过在应用程序中直接使用 函数地址的 值~
当然不常见,因为把整数转换成指针(除了0转换成void*以外)是“implementation-defined behaviour”,意思就是在有的机器和编译器上机器会冒烟,有的机器上是有意义的,这由平台决定。而且既然POSIX接口把它定义为宏,就是不想让你知道它是如何实现的。
看 http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html 绝对不会告诉你SIG_IGN会展开成什么。
如果一定要问这个是怎么实现的,可以这么说:在汇编的层次,没有函数类型,都是“字”,“字”可以是地址也可以是整数。接收方想把它当整数解读,或者想把它当地址解读,都可以。可以先判断一下它是不是0或者1,如果是,就特殊处理,如果不是,就按地址处理。当然,不要试图依赖这种实现方法,因为不是所有的平台都这样实现(有的平台上,指向函数的指针和指向存储空间的指针长度可以不一样),所以你的程序有时候会让机器冒烟,有时候“运气好”可能不会。
【 在 nuanyangyang 的大作中提到: 】
:
: 当然不常见,因为把整数转换成指针(除了0转换成void*以外)是“implementation-defined behaviour”,意思就是在有的机器和编译器上机器会冒烟,有的机器上是有意义的,这由平台决定。而且既然POSIX接口把它定义为宏,就是不想让你知道它是如何实现的。
: 看 http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html 绝对不会告诉你SIG_IGN会展开成什么。
: ...................
多谢暖神,崇拜你~