c / intermediate
Snippet
Effizientes Packen von Daten mit Bitfeldern
Bitfelder ermöglichen die Definition von Strukturmitgliedern mit einer spezifischen Bitanzahl, um Speicher zu sparen oder Hardware-Register abzubilden.
snippet.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>struct FilePermissions {unsigned int read : 1;unsigned int write : 1;unsigned int execute : 1;unsigned int owner_id : 5;};int main() {struct FilePermissions p = {1, 0, 1, 15};printf("Size: %zu bytes\n", sizeof(p));if (p.read) printf("Read access granted.\n");return 0;}
Erklärung
1
unsigned int read : 1;
Allokiert genau 1 Bit für das 'read'-Mitglied.
2
unsigned int owner_id : 5;
Allokiert 5 Bit, was Werte von 0 bis 31 erlaubt.