typedef __packed struct 是C语言中用于定义紧凑结构体的语法。__packed关键字用于告诉编译器不要为结构体成员添加填充字节,从而使得结构体的大小更加紧凑。typedef关键字用于为数据类型定义一个新的名称。
下面是一个使用__packed和typedef的示例代码:
typedef __Packed struct
{
char c;
double d;
char e;
}
Packed_S;
则该结构体将只占用10个字节。
如果定义:
__packed关键字的意思是在struct和union结构中不添加填充字节:
struct S{char c;double d;char e;};
此处假设char占用1个字节,double占用8个。
则在c后面会有7个字节的填充字节,在e后面也一样。结构体共占用24个字节。