c语言packed,C 语言中 __packed
关键字: __packed,C语言,内存对齐【正文】简单的说,__packed用于表示C语言中结构的压缩,即:没有填充和对齐。定义如下:__packed struct P { ... };struct P pp; /* pp is a packed struct */__packed也可以定义为:struct my_unpacked_struct{char c;int i...
关键字: __packed,C语言,内存对齐
【正文】
简单的说,__packed用于表示C语言中结构的压缩,即:没有填充和对齐。
定义如下:
__packed struct P { ... };
struct P pp; /* pp is a packed struct */
__packed也可以定义为:struct my_unpacked_struct { char c; int i; } __attribute__ ((__packed__));
如果一个结构体定义为 __packed,那么其子结构体也必须为__packed(如果有的话)例如:
struct S {...};
__packed struct P {...};
struct T {
struct S ss; /* OK */
struct P pp; /* OK */
};
__packed struct Q {
struct S ss; /* faulted - sub-structs must be packed */
struct P pp; /* OK */
};
__packed struct P { char c; int x; };
__packed struct {
struct P X;
char z;
struct P Y;
}Q;
此时,Q的内存映像如下:
+---+---+---+---+---+---+---+---+---+---+---+
byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
| c | ------x------ | z | c | ------x------ |
+---+---+---+---+---+---+---+---+---+---+---+
参考文献:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)