BYTE,WORD和DWORD宏定义

Lyc*_*cum 3 c

我想了解,这将是确定最佳方式BYTE,WORD并且DWORD有本的答案中提到的宏,问题.

#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))
Run Code Online (Sandbox Code Playgroud)

假设,这是正确的:

  • BYTE 是宏定义为 #define BYTE __uint8_t
  • WORD 是宏定义为 #define BYTE __uint16_t
  • DWORD 是宏定义为 #define BYTE __uint32_t

如果是,为什么要转换为另一个宏而不是转换为__uint8_t,__uint16_t__uint32_t?这样写是为了增加清晰度吗?

我还发现了另一个问题,答案包括typedef,通过更多的研究,我找到了关于比较#define和问题的typedef答案的答案.typedef在这种情况下使用会更好吗?

Jab*_*cky 5

这是一个便携式解决方案:

#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)