我创建了一个名为AlignmentPolicy的模板化结构:
template<int range>
struct AlignmentPolicy;
template<>
struct __declspec(align(1)) AlignmentPolicy<1> { };
template<>
struct __declspec(align(2)) AlignmentPolicy<2> { };
template<>
struct __declspec(align(4)) AlignmentPolicy<4> { };
template<>
struct __declspec(align(8)) AlignmentPolicy<8> { };
template<>
struct __declspec(align(16)) AlignmentPolicy<16> { };
template<>
struct __declspec(align(32)) AlignmentPolicy<32> { };
当我想要一个16字节对齐的结构时,我就这样做:
struct MyContainer : public AlignmentPolicy<16>
{
//... insides
};
然而,当我使用sizeof()测试我的类时,它们最终会比预期的更大。例如:
struct float2 : public AlignmentPolicy<16>
{
float x;
float y;
};
2个浮点数=每个4个字节。当对齐到16时,它应该变成16个字节,不是吗?但是sizeof告诉我float2是32个字节...我在继承AlignmentPolicy&lt;&gt;的所有结构中得到类似的行为。有没有解决方法或者我只能使用__declspec(align(16))?