Ez a bitfield egy elegge osszetett/rendszerkritikus kommunikacios protokoll resze, es a kapcsolodo konyvtarat/konyvtarakat eddig sikerrel, valtoztatas nelkul hasznaljuk mindenfele architekturan - x86, x86_64, ARM Cortex-M*, MSP430, AVRx, ezutobbiba beleertve a sajat soft CPU-s processzorokon/SoC-okon futtatott programokat is. Most nezzuk PIC-en, igazabol ezt a bitfieldet leszamitva az is megy.
Nem jó, ha shifteléseket, maszkolásokat írsz helyette?
De, vegul ez lesz/lett, belekerult egy plusz reteg plusz egy ENABLE_BITFIELDS jellegu feltetel, par makro, meg egy compile-time assert a sizeof()-ra. Ettol fuggetelnul azert erdekel a dolog hogy ez miert nem megy. Oke, a fenti listabol minden arch gcc-vel (is) fordulhat, kiveve a PIC. Ez vsz szamit...:)
Vagy írd assembly-ben, ilyen kis MCU-ra elég béna dolog C-ben programozni.
Nincs nagy ellenvetesem az assemblyvel kapcsolatban, sot, sok dialektusat gagyogom is - de ennyit azert nem akarnank atirni. Ezekre a problemakra adasulra a gcc eleg jo kodot csinal, mondjuk ugy :)