Trong rpc.h, cấu trúc GUID được khai báo như sau:Tại sao cấu trúc GUID lại tuyên bố nó như thế nào?
typedef struct _GUID
{
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data[8];
} GUID;
Tôi hiểu Data1, Data2, và Data3. Chúng xác định nhóm chữ số thập phân thứ nhất, thứ hai và thứ ba khi viết GUID (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX).
Điều tôi chưa bao giờ hiểu là lý do tại sao 2 nhóm cuối cùng được khai báo cùng nhau trong cùng một mảng byte. Nó sẽ không có ý nghĩa hơn (và dễ dàng hơn để chống lại mã)?
typedef struct _GUID
{
DWORD Data1;
WORD Data2;
WORD Data3;
WORD Data4;
BYTE Data5[6];
} GUID;
Bất kỳ ai biết tại sao nó được khai báo theo cách này?
tôi giả định nó được khai báo là '4,2,2,8' thay vì' 4,2,2,2,6' để 8 byte cuối cùng có thể được truy cập dưới dạng biến 64 bit nếu muốn. –
Có vẻ quan trọng để phân biệt hai cấu trúc đặc biệt trong trường hợp tuần tự hóa thành luồng byte cho rằng Dữ liệu [8] từ định nghĩa đầu tiên có thể khác trên luồng so với kết hợp Data4 Data5 [6] từ định nghĩa thứ hai. endianness. – bvj