为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
红颜莎娜 2019-11-05 15:24:46
它是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;请告诉我它的含义以及如何使用此关键字。
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

  • packed意味着它将使用最小的空间struct Ball-即它将填充字段而不会填充

  • aligned表示每个地址都struct Ball将以4字节边界开始-即对于任何一个struct Ball,其地址都可以除以4

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


查看完整回答
反对 回复 2019-11-05
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

该属性packed表示编译器不会在的字段之间添加填充struct。填充通常用于使字段与它们的自然大小对齐,因为某些体系结构会对未对齐的访问施加惩罚或完全不允许这样做。

aligned(4) 表示该结构应与可被4整除的地址对齐。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 1292 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信