|
发表于 2019-2-19 14:31:10
|
显示全部楼层
短类型直接移位,不出错都是运气。ICCAVR 还负责一点,给出了提示:
先强制类型转换,再进行移位才安全。以下内容是 VS 中 windef.h 的数据拼接宏:
- #define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) | ((WORD)((BYTE)((DWORD_PTR)(b) & 0xff))) << 8))
- #define MAKELONG(a, b) ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | ((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16))
- #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
- #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
- #define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xff))
- #define HIBYTE(w) ((BYTE)((DWORD_PTR)(w) >> 8))
复制代码
类型转换、括号顺序几乎写到了啰嗦的地步
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|