c / intermediate
Snippet
Kompilierzeit-Assertionen mit _Static_assert
_Static_assert (eingeführt in C11) ermöglicht es, Bedingungen während der Kompilierungsphase statt zur Laufzeit zu prüfen. Wenn die Bedingung falsch ist, generiert der Compiler einen Fehler und bricht ab, wodurch die Erstellung eines ungültigen Binärprogramms verhindert wird.
snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>// Ensure the code is only compiled on systems with 4-byte integers_Static_assert(sizeof(int) == 4, "Error: int must be 32-bit for this protocol");struct DataPacket {char header[2];int payload;};_Static_assert(sizeof(struct DataPacket) == 8, "Warning: Unexpected padding in struct");int main() {printf("Architecture check passed.\n");return 0;}
Erklärung
1
_Static_assert(condition, "message");
Testet einen konstanten Ausdruck; löst einen Compilerfehler aus, wenn der Ausdruck zu Null ausgewertet wird.
2
sizeof(int) == 4
Ein konstanter Ausdruck, der vom Compiler basierend auf der Zielarchitektur ausgewertet wird.