我想了解,这将是确定最佳方式BYTE,WORD并且DWORD有本的答案中提到的宏,问题.
Run Code Online (Sandbox Code Playgroud)#define LOWORD(l) ((WORD)(l)) #define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF)) #define LOBYTE(w) ((BYTE)(w)) #define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))
假设,这是正确的:
BYTE 是宏定义为
#define BYTE __uint8_tWORD 是宏定义为
#define BYTE __uint16_tDWORD 是宏定义为
#define BYTE __uint32_t如果是,为什么要转换为另一个宏而不是转换为__uint8_t,__uint16_t或__uint32_t?这样写是为了增加清晰度吗?
我还发现了另一个问题,答案包括typedef,通过更多的研究,我找到了关于比较#define和问题的typedef答案的答案.typedef在这种情况下使用会更好吗?
这是一个便携式解决方案:
#include <stdint.h>
typedef uint32_t DWORD; // DWORD = unsigned 32 bit value
typedef uint16_t WORD; // WORD = unsigned 16 bit value
typedef uint8_t BYTE; // BYTE = unsigned 8 bit value
Run Code Online (Sandbox Code Playgroud)