如何实现结构填充与压缩?

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

考虑:

struct mystruct_A
{
   char a;
   int b;
   char c;
} x;

struct mystruct_B
{
   int b;
   char a;
} y;

结构尺寸分别为12和8。

这些结构是填充的还是压缩?

深圳酷深圳酷提问于
网偶回答于
已采纳

例如:

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;
};
wbw520希望每天都过得充实回答于

一些编译器提供#pragma以抑制填充或使其打包为n个字节数。如下:

#pragma pack(n)

所属标签

可能回答问题的人

  • 红双喜经典VS中华

    1 粉丝0 提问8 回答
  • LemonLu

    社区 · 运营 (已认证)

    45 粉丝0 提问4 回答
  • 13火麒麟

    0 粉丝0 提问4 回答
  • 吉_Gi

    0 粉丝3 提问3 回答

扫码关注云+社区