我正在使用MSVC ++ Express 2010 for windows编写软件rasteriser。我正在使用SSE并需要对齐的数据结构。我为不同的基本数据类型(float,int等)提供了许多单独的向量结构,为了方便起见,我想将其转换为一个模板化结构。已经很好地用于对齐结构的_declspec(align(16))标记似乎不适用于模板。我有什么选择?这就是我想要实现的目标:
/* _declspec(align(16)) */
template< typename T > struct baseVector
{
T v[ 4 ];
};
typedef baseVector< float > vector, vertex, point; // etc
我尝试过专门化模板并使用_declspec(align()),但编译器抱怨。我也试过使用#pragma pack(),但是当这些结构是更高级别结构的成员时,我认为没有任何对齐效果。
答案 0 :(得分:5)
declspec
位置错误。它应该在struct
之后。
template<typename T>
struct _declspec(align(16)) baseVector
{
T v[4];
};