猿问

“ __attribute __((packed,aligned(4)))”的含义是什么?

它是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;

请告诉我它的含义以及如何使用此关键字。


红颜莎娜
浏览 1293回答 3
3回答

三国纷争

packed意味着它将使用最小的空间struct Ball-即它将填充字段而不会填充aligned表示每个地址都struct Ball将以4字节边界开始-即对于任何一个struct Ball,其地址都可以除以4这些是GCC扩展,不属于任何C标准。

慕勒3428872

该属性packed表示编译器不会在的字段之间添加填充struct。填充通常用于使字段与它们的自然大小对齐,因为某些体系结构会对未对齐的访问施加惩罚或完全不允许这样做。aligned(4) 表示该结构应与可被4整除的地址对齐。
随时随地看视频慕课网APP
我要回答