【发布时间】:2011-10-10 19:08:32
【问题描述】:
抱歉问了一个愚蠢的问题,但是如果我需要确保结构/类/联合的对齐,我应该在 typedef 声明中添加 attribute((aligned(align))) 吗?
class myAlignedStruct{} __attribute__ ((aligned(16)));
typedef myAlignedStruct myAlignedStruct2; // Will myAlignedStruct2 be aligned by 16 bytes or not?
【问题讨论】:
-
绝对不是一个愚蠢的问题。我认为 myAlignedStruct2 的对齐方式与 myAlignedStruct 相同,但希望确定这一点。你试过 printf("sizes: %d, %d", sizeof(myAlignedStruct), sizeof(myAlignedStruct2)); ?
-
@Shlublu:
sizeof检查包装,但对齐方式不同!没有标准运算符,但 GCC 提供了__alignof__(),如我的回答所示。 -
啊,对不起,我搞错了!这让您的问题更加有趣!