楼主给出的宏:
#define LD_WORD(ptr) (WORD)(*(WORD*)(BYTE*)(ptr))
里面有两个多余的地方:
1、(BYTE*)
ptr 先强制为 BYTE* 后,没有任何访问操作,就又强制为了 WORD*,那么这个没有意义的 BYTE* 强制,会被编译器忽略掉的。
2、(WORD)
当 ptr 强制为 WORD* 后,使用这个“指针”访问的数据(读和写),都会被编译器按照数据转换规则自动转换为 WORD,无法转换的数据就会报错,所以,再加一个 (WORD) 就是多余了。
|
|