pragma pack打包数据结构
Packing data structures(编译器入门 Gulde:打包数据结构)
通过将数据打包到结构中,可以减少应用程序所需的内存量。如果您需要在嵌入式系统中存储和访问大型数据阵列,这一点尤为重要。
如果结构中的各个数据成员没有打包,编译器可以在结构中添加填充,以便根据每个成员的自然对齐方式更快地访问各个成员。Arm®编译器提供了一个杂注和属性,用于在没有任何填充的情况下将成员打包到结构或联合中。
将成员打包到结构体或联合体中
编译指示或属性
#pragma pack(n)
对于每个成员,如果n字节小于该成员的自然对齐方式,则将对齐方式设置为n字节,否则对齐方式为该成员的自然对齐方式。 有关详细信息,请参阅#pragma pack (n)
和 __alignof__
。
__attribute__((packed))
这相当于#pragma pack (1)。 但是,该属性也可以用于结构或联合中的各个成员。
要打包整个结构或联合,请使用 __attribute__((packed))
或 #pragma pack(n)
来声明结构,
使用#pragma pack(n)
时,结构的对齐方式是将#pragma pack(n)
应用于结构后最大成员的对齐方式。
指定字节几个字节对其方式,n可以指定 1 2 4 8
热评话题