Ух ты, это действительно отвратительный код.О способе only я мог видеть, что работа (как функции) заключается в том, что функции возвращают ссылки на переданные части переменных. Другими словами, что-то вроде:
#include <iostream>
unsigned short int & HIWORD(unsigned int & x) {
return *(reinterpret_cast<unsigned short int *>(&x) + 1);
}
unsigned short int & LOWORD(unsigned int & x) {
return *(reinterpret_cast<unsigned short int *>(&x) + 0);
}
int main() {
unsigned int v1 = 0x11112222;
unsigned int v2 = 0x33334444;
std::cout << "Before: " << std::hex << v1 << ' ' << v2 << '\n';
HIWORD(v2) = HIWORD(v1);
LOWORD(v1) = LOWORD(v2);
std::cout << "After : " << std::hex << v1 << ' ' << v2 << '\n';
}
Это (по крайней мере, в моей системе) генерирует то, что вы, вероятно, видите:
Before: 11112222 33334444
After : 11114444 11114444
Но, если вы действительно видите такой код, я бы предложил один из двух курсовдействие:
- Исправить это.Есть около ста лучших способов сделать то же самое.
- Уходи.Просто оставить.Не собирай свои вещи.Просто встаньте со стула, выйдите из двери, садитесь в машину, уезжайте и никогда не возвращайтесь: -)
Теперь это возможно они могут бытьскорее макросы, чем функции, но мой совет остается в отношении двух возможных вариантов.