我不知道typedef中的ALIGMENT_ATTRIBUTE(B)是要做什么,因为它是一个空定义。它是否形成了一个函数?
#define ALIGNMENT_ATTRIBUTE(B)
typedef ALIGNMENT_ATTRIBUTE(8) UInt64 T_AUInt64;
我不知道typedef中的ALIGMENT_ATTRIBUTE(B)是要做什么,因为它是一个空定义。它是否形成了一个函数?
#define ALIGNMENT_ATTRIBUTE(B)
typedef ALIGNMENT_ATTRIBUTE(8) UInt64 T_AUInt64;
它可用于需要对齐的平台。
例如,它可以在需要 uint64
位于可被8整除的地址的平台上使用。
在这种情况下,您需要使用平台的对齐强制机制(通常是编译器特定的)扩展ALIGNMENT_ATTRIBUTE(B)
的定义,例如#pragma align(8)
或alignas(8)
或_declspec(align(8))
。
在您的具体示例中,它被定义为空,这意味着您的平台没有任何对齐限制。
alignof(UInt64)
的值为8,在另一些平台上则为4,这会影响结构体的填充(或是符合某些ABI约束条件)。因此,在32位平台上,该定义是这些对齐说明符之一。 - Artyer