cpp / intermediate
Snippet
Platzoptimierte Strukturen über Bitfelder
Bitfelder ermöglichen eine präzise Kontrolle über die Datendarstellung, indem sie Member auf eine spezifische Bitbreite beschränken, was für die speichereffiziente Speicherung von Flags oder Hardware-Schnittstellen nützlich ist.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>struct DeviceStatus {// Use only the specified number of bits for each memberunsigned int powerOn : 1;unsigned int error : 1;unsigned int mode : 3; // Allows values 0-7};int main() {DeviceStatus status = {1, 0, 5};std::cout << "Size of struct: " << sizeof(status) << " bytes" << std::endl;if (status.powerOn) {std::cout << "Mode: " << status.mode << std::endl;}return 0;}
Erklärung
1
unsigned int powerOn : 1;
Allokiert genau 1 Bit für das powerOn-Flag anstelle eines ganzen Integers oder Boolean-Bytes.
2
unsigned int mode : 3;
Allokiert 3 Bits, was einen Bereich von 8 verschiedenen Werten (0 bis 7) ermöglicht.