struct
的定义是这样的,
typedef struct
{
uint32_t length : 8;
uint32_t offset : 24;
uint32_t type : 8;
} A;
我之前没有见过这种定义,:8
和:24
是什么意思?
答案 0 :(得分:6)
它定义了位域。这告诉编译器length
是8位,offset
是24位,type
也是8位。
答案 1 :(得分:3)
请参阅以下链接。它们是位域。 http://www.cs.cf.ac.uk/Dave/C/node13.html {
{3}}
#include <stdio.h>
typedef unsigned int uint32_t;
#pragma pack(push, 1)
typedef struct
{
uint32_t length : 8;
uint32_t offset : 24;
uint32_t type : 8;
} A;
typedef struct
{
uint32_t length;
uint32_t offset;
uint32_t type;
} B;
#pragma pack(pop)
int main()
{
printf("\n Size of Struct: A:%d B:%d", sizeof(A), sizeof(B));
return 0;
}
结构A的大小为5个字节,其中B的大小为12个字节。
答案 2 :(得分:1)
这种表示法定义了位字段,即该结构变量的位数大小。