“__attribute __((packed,aligned(4)))”是什么意思

时间:2012-08-02 02:59:31

标签: c gcc

这是C语言。写道:

typedef struct __attribute__((packed, aligned(4))) Ball {
    float2 delta;
    float2 position;
    //float3 color;
    float size;
    //int arcID;
    //float arcStr;
} Ball_t;
Ball_t *balls;

请告诉我它是什么意思,以及如何使用这个关键字。

1 个答案:

答案 0 :(得分:74)

  • packed表示它将使用struct Ball的最小可能空间 - 即它将填充字段而不填充
  • aligned表示每个struct Ball将从4字节边界开始 - 即对于任何struct Ball,其地址可以除以4

这些是GCC扩展,不属于任何C标准。