QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1132|回复: 5

[求教] GCC4 如何编译 Grub的ntfs模块

[复制链接]
发表于 2005-12-1 16:17:35 | 显示全部楼层 |阅读模式
尝试了一天了
发现我始终无法编译成功
问题出现在
ntfs.c这个文件中
[code:1]
runl->clen += v * *((__u8 *)runl->ptr)++;
[/code:1]

这行代码始终提示复值错误,
我尝试如下方法修改
[code:1]            unsigned int lv = *((__u8 *)runl->ptr);
            lv++;
            runl->clen += v * (lv);[/code:1]

编译成功,但。。好像错误了不能够正常的使用

请各位帮忙看看怎么解决
发表于 2005-12-1 17:06:53 | 显示全部楼层
优先级都忘了
不过错误在

[code:1]
*((__u8 *)runl->ptr)++;
[/code:1]

这里对runl->ptr里的值变更了,所以你的
[code:1]
lv++
[/code:1]
是错的

而且__u8一般是unsigned char
回复

使用道具 举报

 楼主| 发表于 2005-12-1 17:15:42 | 显示全部楼层
那里只是一个
typedef unsigned char __u8;


正确的代码应该如何写呢?
回复

使用道具 举报

 楼主| 发表于 2005-12-1 17:20:26 | 显示全部楼层
原有代码编译时候提示
[code:1]fsys_ntfs.c:256: 错误:自增运算中的左值无效[/code:1]

另外就是。。我到现在还没明白后面那段怎么理解

runl->clen += v * *((__u8 *)runl->ptr)++;
这样理解还是下面这样理解
runl->clen += v * *((__u8 *)runl->ptr)++;
回复

使用道具 举报

 楼主| 发表于 2005-12-1 20:28:35 | 显示全部楼层
我如果这样写是否是正确的呢?
runl->clen += v * (*((__u8 *)runl->ptr))++;
回复

使用道具 举报

发表于 2005-12-2 11:40:05 | 显示全部楼层
我记得没错的话

*的优先级没有++高,所以

((__u8 *)runl->ptr)++

应该是做地址自增

然后*取它的值
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-3 02:32 , Processed in 0.152138 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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