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