Потихоньку погружаюсь в программирование на WinAPI, и некоторые макросы меня немного озадачивают. Среди них макрос LOWORD(I)
.
Не могли бы Вы объяснить, что происходит в строке ниже?)
#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
Делает ровно то, о чём и говорит его название - возвращает 2 младших байта.
Например:
DWORD l = 0x11223344;
WORD w = LOWORD(l); // w = 0x3344
Вы инициализируете макрос LOWORD, то есть, если в функции main у вас есть LOWORD(L)
, то у вас будет выводится число, которое считается по этой "формуле": ((WORD)(((DWORD_PTR)(L)) & 0xffff))
.
Что делает эта формула?
1) Возвращает первые два младших байта числа L: ((DWORD_PTR)(l)) & 0xffff)
2) Явно приводит это все к типу WORD: ((WORD)(((DWORD_PTR)(L)) & 0xffff))
Вот ссылка на документацию: MSDN
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Почему объект класса B=16, а объект A=4? Как влияет виртуальная функция на размер?
Рассмотрим класс итератора для массивов stdext::checked_array_iterator, который определен в заголовочном файле <iterator>Экземпляр класса можно использовать...
У меня есть объект который иногда мне нужно будет скопировать в другойесли быть точнее, то у меня в классе client_t есть 3 одинаковых объекта,...
Я работаю на C#, но полагаю, это касается любого языка использующий объектно - ориентированную парадигму