Приведение, которое нарушает правила строгого псевдонима

У меня есть функция, которая принимает unsigned long * и должна передать ее внешней библиотеке, которая принимает unsigned int *, а на этой платформе unsigned int / long имеют тот же размер.

void UpdateVar(unsigned long* var) {
   // this function will change the value at the address of var
   ExternalLibAtomicUpdateVar((unsigned int*)var); // lib atomically updates variable
}

Это генерирует предупреждение о нарушении правил строгого псевдонима. Есть ли какие-то обходные пути?

Спасибо

Редактировать: Прошу прощения за непонятность. Код представляет собой атомарное обновление, поэтому обход библиотеки для его хранения не вариант. Я мог бы перейти к сборке, но я бы хотел сделать это на C ++.

6
задан curiousguy 21 July 2012 в 04:21
поделиться