首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MAKEWORD是用来干什么的?

MAKEWORD是用来干什么的?
EN

Stack Overflow用户
提问于 2014-06-10 02:14:20
回答 2查看 18.9K关注 0票数 8

我在一段教学代码中遇到了这个宏MAKEWORD(2,2)。我在MSDN中读到它“通过连接指定的值来创建一个单词值”。

问题是,难道一个词不像一个无符号整数,为什么我需要做这样一个奇怪的过程,比如使用MAKEWORD()

EN

Stack Overflow用户

回答已采纳

发布于 2014-06-10 02:27:27

宏需要两个字节作为其参数:

代码语言:javascript
运行
复制
WORD MAKEWORD(
  BYTE bLow,
  BYTE bHigh
);

它在Windef.h中的定义为:

代码语言:javascript
运行
复制
#define MAKEWORD(a,b)   ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))

它基本上是从两个1字节字构建一个16位字(而且看起来不是很可移植)。

具有一个字节(一个单词)的数字2的二进制表示形式是:x 0、0、0、0、2、0、0、0、0、0、2、0、0、0、0、0、2、0、0、0、0、0、0、0、0、0、0、1、1、1、1、1、1、1、1、1、0、1、0、1、0、0、0、0、0、0、0、0、0、0、0、0、0、2、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、2、1、2、1、2、1、2、1、2、1、0、2、0、0、0、0、0、0、0

如果我们像在MAKEWORD(2,2)中那样将其中的两个字节连在一起,就会得到:

\x{e76f}\x{e76f}0\x{e76f}\x{e76f}0\x{e76f}\#**##.

为512 +2= 514:现场演示。

这个特定宏的唯一实际示例是在Winsock初始化中,以生成WSAStartup所期望的版本控制单词。

票数 20
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24131843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档