IT-lexikon › Programmering › Bitfält

Bitfält

Programmering In English → Uppdaterad: 2026-11-03

C:s sätt att ge enskilda bitar i ett heltal egna namn i en struct — bekvämt att läsa och nästan helt odefinierat i hur det läggs ut i minnet.

Med unsigned ready : 1; blir en struct-medlem en bit bred, och kod som reg.ready = 1 ser ut som en vanlig tilldelning. Det är lockande när man beskriver ett hårdvaruregister. Problemet är att standarden lämnar bitordning, utfyllnad och vilken heltalstyp som används åt kompilatorn, så samma struct kan hamna olika på två kompilatorer eller mellan två arkitekturer med olika endianness.

Varje skrivning blir dessutom läs-modifiera-skriv, vilket kan rensa statusbitar som nollställs vid läsning. Därför använder CMSIS och de flesta tillverkarhuvudfiler masker och skift i stället, och MISRA C begränsar bitfält kraftigt.

← Tillbaka till lexikonet