MAKEWORD w WinAPI

0

http://msdn.microsoft.com/en-us/library/windows/desktop/ms632663%28v=vs.85%29.aspx

Jest sobie makro MAKEWORD w WinAPI. Teraz muszę pokodzić w WinAPI i jest tam tworzenie zmiennej, na przykład:

wVersionRequested = MAKEWORD(2, 0);

Rozumiem, że idea jest taka, aby zmiennej przepisać wartość 2. Czy za tym idzie jakaś większa logika, czy też po prostu WinAPI jest niemiłosiernie brzydkie w stosunku do POSIX?

0

Pozwala to na ewentualnego "little endian" bez zmiany kodu.
Co prawda nie wiem po kiego to w windows skoro i tak działają tylko na jednym sprzęcie.

0

Wbrew pozorom Windows, a czasem jego wersje, z którymi miał wspólną część codebase działały na procesorach PowerPC, MIPS, ARM, Alpha, Itanium. O ile te procesory wspierają big-endiannes to i tak były przełączane na little-endian. Bardzo dawno temu Microsoft jeszcze zastanawiał się nad utrzymaniem całego codebase endian-neutral, ale w końcu zrezygnowali. I tak część API jest endian-neutral, a część little-endian.
Co ciekawe, procesor w Xbox 360 jest big-endian i zapewne przy portowaniu wielu API Microsoft musiał wziąć na to poprawkę.

0

te makra sa po to by w word/dword... mozna bylo latwo zapisac kilka wartosci
word ma 16 bitow(2 bajty) dzieki temu makru latwo jest zapisac 2 osobne bity na odpowiednim miejscu w zmiennej
zamiast tego mozna uzyc samej zmiennej word z odpowiednia wartoscia

zreszta sam windows sle tak komunikaty w glownej petli
gdzie np dostajemy w 1 zmiennej id kontrolki + akcje jaka sie naniej wykonalo (np klik)

1 użytkowników online, w tym zalogowanych: 0, gości: 1