考虑:
struct mystruct_A
{
char a;
int b;
char c;
} x;
struct mystruct_B
{
int b;
char a;
} y;
结构尺寸分别为12和8。
这些结构是填充的还是压缩?
发布于 2018-03-23 13:12:09
例如:
struct mystruct_A {
char a;
char gap_0[3]; /* inserted by compiler: for alignment of b */
int b;
char c;
char gap_1[3]; /* -"-: for alignment of the whole struct in an array */
} x;
另一方面,避免编译器执行填充(这必须是明确请求的),在gcc下,它的__attribute__((__packed__))
,如下:
struct __attribute__((__packed__)) mystruct_A {
char a;
int b;
char c;
};
发布于 2018-03-23 13:31:28
一些编译器提供#pragma
以抑制填充或使其打包为n个字节数。如下:
#pragma pack(n)
https://stackoverflow.com/questions/-100003670
复制相似问题