[英]__attribute__((packed)) on a struct with only 1 element
我正在研究由超级巨星开发的一些遗留代码,这些遗留代码不再与该公司合作。 通过他的代码,他都打包了结构。 但是,我看到他也对只有1个元素的结构成员执行此操作。 我不确定以这种方式做事对他是否有任何好处。 我想念什么吗?
样例代码:
struct A {
uint32_t a __attribute__((packed));
};
它取决于目标体系结构,并且主要会影响数组。 对于32位体系结构,您的示例将完全无效。 另一方面,对于64位体系结构,如果没有压缩属性,则编译器可能会将结构A数组中的条目对齐为64位,每个条目之间留有32位的间隙。
除非您面临严重的内存限制,否则这可能不是一个好主意。
埃里克·雷蒙德(Eric Raymond)的“ C结构包装的失落的艺术”在这个主题上非常值得一读。
根据gcc的文档 __attribute__ ((packed))
指定结构字段应具有尽可能小的对齐方式。
因此,对于仅使用一个字段或不使用它的结构,应该没有任何区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.