Embedded systemen en firmware
Waarop moet worden gelet wanneer in C met een structuur met bitvelden de registers van een randschakeling worden voorgesteld?
- ABitvelden maken het programma altijd twee keer zo snel
- BDe volgorde van de bits in bitvelden mag per compiler verschillen, dus met een andere compiler kunnen onbedoeld andere bits worden bewerkt
- CBitvelden kunnen geen waarden van 8 bit of meer weergeven
Antwoord en toelichting tonen
Antwoord: B. De volgorde van de bits in bitvelden mag per compiler verschillen, dus met een andere compiler kunnen onbedoeld andere bits worden bewerkt
Bitvelden zijn leesbaar te schrijven, maar de C-norm laat het aan de implementatie of bits in een structuur van hoog naar laag of van laag naar hoog worden geplaatst, hoe velden die een grens overschrijden worden behandeld en welke toegangsbreedte wordt gebruikt. Wat bij de ene compiler goed werkt, kan daarom bij een andere compiler of CPU andere bits lezen of schrijven. De headers van microcontrollerfabrikanten zijn vaak geschreven met maskers en verschuivingen.