类型转换问题

[复制链接]
 楼主| sioca 发表于 2012-1-13 17:45 | 显示全部楼层 |阅读模式
#define    LD_WORD(ptr)        (WORD)(*(WORD*)(BYTE*)(ptr))

这里的BYTE*是不是多余的?去掉不是也可以吗?
john_lee 发表于 2012-1-13 17:56 | 显示全部楼层
#define LD_WORD(ptr)     (*(WORD*)(ptr))
john_lee 发表于 2012-1-13 18:12 | 显示全部楼层
楼主给出的宏:
#define    LD_WORD(ptr)        (WORD)(*(WORD*)(BYTE*)(ptr))
里面有两个多余的地方:
1、(BYTE*)
ptr 先强制为 BYTE* 后,没有任何访问操作,就又强制为了 WORD*,那么这个没有意义的 BYTE* 强制,会被编译器忽略掉的。
2、(WORD)
当 ptr 强制为 WORD* 后,使用这个“指针”访问的数据(读和写),都会被编译器按照数据转换规则自动转换为 WORD,无法转换的数据就会报错,所以,再加一个 (WORD) 就是多余了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

419

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部