Koukam, ze tam pouziva structy s bit fieldy, takze jeho struktury maji layout zavisly na prekladaci. Coz mi neprijde zrovna idealni. Napr.
typedef struct {
uint8 left_button: 1;
uint8 right_button: 1;
uint8 middle_button: 1;
uint8 always_1: 1;
uint8 x_sign: 1;
uint8 y_sign: 1;
uint8 x_overflow: 1;
uint8 y_overflow: 1;
} MOUSE_STATUS;
Projekty tohoto typu často musí používat compiler-specific rozšíření C/C++, aby je bylo vůbec možné implementovat, nebo by kód bez nich byl nepřehledný. Takové Linux (kernel) taky používá GNU extensiony (které se ale vyskytují ve více či méně odlišné podobě i jinde). Je čistě na vývojáři, aby se rozhodnul, jak moc chce záviset na konkrétním překladači.
Problém s „bitfieldy“, a i strukturami obecně, je až když je chceme používat jako metodu (de)serializace. Taky mě napadá, že to autor mohl zvolit z důvodu, že se obdobný zápis vyskytuje i v originálních headerech k API. Win32 API moc neznám.