我MAKEWORD(2,2)
在一段教学代码中遇到了这个宏.我在MSDN中读到它" 通过连接指定的值创建一个WORD值. "
问题是,WORD不是无符号整数,为什么我需要做一个如此奇怪的程序,如使用MAKEWORD()
?
qua*_*dev 13
宏期望两个字节作为其参数:
WORD MAKEWORD(
BYTE bLow,
BYTE bHigh
);
Run Code Online (Sandbox Code Playgroud)
其定义Windef.h
如下:
#define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
Run Code Online (Sandbox Code Playgroud)
它基本上从两个1字节字构建一个16位字(并且看起来不太便携)
带有1个字节(WORD)的数字2的二进制表示形式为:| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
如果我们将这些字节中的两个连接起来MAKEWORD(2,2)
,我们得到:
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
这是512 + 2 = 514:现场演示.
这个特定宏的唯一真实例子是在Winsock的初始化中,生成期望的版本控制字WSAStartup
.
归档时间: |
|
查看次数: |
11462 次 |
最近记录: |