免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 18885 | 回复: 10
打印 上一主题 下一主题

内核代码中的 _be32是什么数据类型? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-25 16:49 |只看该作者 |倒序浏览
最近在学习romfs,看它的源代码时不知道 _be32是什么数据类型.



知道 _u32的意思是32位整数类型 _u32 = unsigned long int

但是不知道_be32

列如 在函数romfs_checksum(void *data, int size)中有:
const _be32 *ptr = data;

(新手拜求)

论坛徽章:
0
2 [报告]
发表于 2010-08-25 17:30 |只看该作者
抱歉,有点问题··

是 __be32


我在<include/linux/types.h>
看到了这一行
typedef __u32 __bitwise __be32;

但是依旧不太理解

论坛徽章:
0
3 [报告]
发表于 2010-08-26 10:22 |只看该作者
..貌似明白了·
由··
typedef __u32 __bitwise __be32;
就知道__be32 就是__u32数据类型··即·unsigned long int


但是现在我有个问题就是 u32,_u32,__u32这几个有什么区别?

论坛徽章:
0
4 [报告]
发表于 2010-08-26 15:30 |只看该作者
u32 是无符号 32bit 整型
be32 是有符号 32bit 整型

u32 和 __u32 实际是一样的,但没见到过 _u32

论坛徽章:
0
5 [报告]
发表于 2010-08-27 10:40 |只看该作者
回复 4# platinum


您好!
首先,嗯,应该是我看的这本书有错误···  _u32是不存在的
然后我想说的是:
对于您说的__be32是有符号整型,我有点异议:

__bitwise 是一中类型属性,位整数

那么typedef __u32 __bitwise __be32应该说明的是__be32 和__u32是一样的,表示的是无符号长整型?

论坛徽章:
0
6 [报告]
发表于 2010-08-30 16:35 |只看该作者
内核中是那么用的,具体二者到底有什么实质性区别,我没有研究过,实在是惭愧,呵呵

论坛徽章:
0
7 [报告]
发表于 2010-08-30 17:20 |只看该作者
回复 6# platinum



嗯··呵呵···差不多理解了···

谢谢哈···

论坛徽章:
0
8 [报告]
发表于 2010-09-05 13:10 |只看该作者
回复 7# wykitty


    一般情况下,在内核中变量名加两个下划线的,是内核内部用的底层数据结构。当然,我们也可以用,不过最好是用不加下划线的。

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
9 [报告]
发表于 2010-09-09 18:02 |只看该作者
be = big endian

论坛徽章:
0
10 [报告]
发表于 2010-09-11 16:04 |只看该作者
be是big endian,之所以用__be32是为了避免用int在16位和32位处理器上定义出来的变量长度不一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP