0 Tage Serie
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 member
unsigned 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.