gcc (GCC) 4.7.0
c89
x86_64
你好,
我想知道使用__attribute__ ((__packed__))
on 结构是否值得。在我看来,有了它,结构的尺寸会更小。通过我在下面进行的测试。所以使用它在尺寸上将是一个优势。
不使用它的情况,因为它不能跨其他编译器移植。因此,对于 Visual Studio C++,这是行不通的。加上其他编译器。
编译器不会优化代码吗?所以真的让编译器来决定做什么会更好地提高性能吗?
使用对齐的属性会有什么不同吗?__attribute__((packed, aligned(4)))
当我添加它返回 12 的大小时。
非常感谢您的任何建议,
#include <stdio.h>
struct padded {
int age; /* 4 */
char initial; /* 1 + 3 padded bytes */
int weight; /* 4 --> total = 12 */
};
struct __attribute__ ((__packed__)) unpadded {
int age; /* 4 */
char initial; /* 1 */
int weight; /* 4 --> total = 9 */
};
int main(int argc, char **argv)
{
struct padded padded_test;
struct unpadded unpadded_test;
printf("Padded [ %ld ]\n", sizeof(struct padded));
printf("Unpadded [ %ld ]\n", sizeof(struct unpadded));
return 0;
}