Документация для функции InterlockedExchangePointer гласит:
В 64-битной системе параметры составляют 64 бита, а параметр Target должен быть выровнен по 64-битным границам ;в противном случае функция будет вести себя непредсказуемо.В 32-битной системе параметры являются 32-битными, а целевой параметр должен быть выровнен по 32-битным границам .
I'm компиляция для 32-битных , и программа будет работать на 32-битных и 64-битных архитектурах ;обеспечивает ли следующая структура указатели, которые могут использоваться InterlockedExchangePointer в любой (32 или 64-битной) работающей архитектуре без адаптации кода ?
template <class T>
struct Foo {
enum { count = 3 };
__declspec(align(64)) T objects[count];
};
(я предполагаю, что если один указатель выровнен64 бита, он также выровнен на 32 бита - даже если есть заполнение, если работает на 32 бита)
Спасибо.