可能重复:
'unsigned temp:3' 是什么意思
Astruct
的定义是这样的,
typedef struct
{
uint32_t length : 8;
uint32_t offset : 24;
uint32_t type : 8;
} A;
我以前没见过这种定义,:8
and是什么意思:24
?
可能重复:
'unsigned temp:3' 是什么意思
Astruct
的定义是这样的,
typedef struct
{
uint32_t length : 8;
uint32_t offset : 24;
uint32_t type : 8;
} A;
我以前没见过这种定义,:8
and是什么意思:24
?
它正在定义位域。这告诉编译器length
是 8 位,offset
是 24 位,type
也是 8 位。
请参考以下链接。它们是位域。http://www.cs.cf.ac.uk/Dave/C/node13.html
http://en.wikipedia.org/wiki/Bit_field
#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 个字节。
该符号定义了位域,即该结构变量的位数大小。