LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1153|回复: 1

[讨论]关于rbtree.h里的struct rb_node.rb_parent_color 的长度

[复制链接]
发表于 2010-5-15 18:57:16 | 显示全部楼层 |阅读模式
很明显为了充分利用空间,把parent和color两个“信息”都放在这个字段里了。

这里有个问题,就是他是用unsigned long类型定义的。经我测,在32位linux里,sizeof(unsigned long) == sizeof(struct rb_node *) == 4
在64位机器上,sizeof(unsigned long) == sizeof(struct rb_node *) == 8
所以这样使用没问题。

但是我发现在其它的系统里(比如AIX 64位系统),
sizeof(unsigned long) == 4
sizeof(struct rb_node*) == 8

意味着这样的代码有一点不确定性?,能不能在定义时,直接这样定义:

struct rb_node * rb_parent_color;
发表于 2010-5-15 19:27:16 | 显示全部楼层
可以,处理时做下相应的类型转换就可以了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表