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