我正在使用 Windows 版 MSVC++ Express 2010 编写软件光栅化器。我正在使用 SSE 并且需要对齐的数据结构。我有许多针对不同基本数据类型(float、int 等)的独立 vector 结构,为了方便起见,我想将它们合并到一个模板化结构中。 _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() ,但我认为当这些结构是更高级别结构的成员时,这不会产生任何对齐效果。
最佳答案
declspec
位于错误的位置。它应该位于struct
之后。
template<typename T>
struct _declspec(align(16)) baseVector
{
T v[4];
};
关于c++ - 对齐 SSE 的模板 vector 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460829/