c / expert
Snippet
Flüchtige Datenübertragung mittels dynamischer C99 Composite-Literale
C99 Composite-Literale erstellen unbenannte Objekte auf dem Stack mit Block-Gültigkeit. Ihre Adressierung erlaubt die Inline-Übergabe komplexer Strukturinstanzen an Funktionen ohne dynamischen Heap-Speicher oder explizite Variablen.
snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>typedef struct {int id;const char *tag;} ConfigHeader;void print_config(const ConfigHeader *cfg) {printf("ID: %d, Tag: %s\n", cfg->id, cfg->tag);}int main(void) {print_config(&(ConfigHeader){ .id = 404, .tag = "NOT_FOUND" });print_config(&(ConfigHeader){ .id = 200, .tag = "OK" });return 0;}
Erklärung
1
(ConfigHeader){ .id = 404, .tag = "NOT_FOUND" }
Konstruiert ein anonymes ConfigHeader-Objekt mit benannten Element-Initialisierern auf dem lokalen Stack-Frame.
2
&(ConfigHeader){ ... }
Ermittelt einen temporären Zeiger auf das Composite-Literal zur Erfüllung der Funktionssignatur.