c / expert
Snippet
Weiterleitung variadischer Funktionsargumente über va_list-Durchlauf
C bietet in stdarg.h Standard-Makros zur Verarbeitung variabler Argumentzahlen. Der Typ va_list verfolgt den Zustand der Argumente, va_start initialisiert Zeigerpositionen nach dem Pflichtparameter, vprintf verarbeitet formatierte Ausgaben und va_end stellt das Bereinigen des Stacks sicher.
snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>#include <stdarg.h>void log_message(const char *level, const char *fmt, ...) {va_list args;va_start(args, fmt);printf("[%s] ", level);vprintf(fmt, args);va_end(args);printf("\n");}
Erklärung
1
va_list args;
Deklariert eine interne Argumentzeiger-Struktur zur Nachverfolgung des Parameterzustands.
2
va_start(args, fmt);
Bindet va_list, um Argumente direkt nach dem Pflichtparameter fmt zu durchlaufen.
3
vprintf(fmt, args);
Überträgt das formatierte Drucken an vprintf unter Verwendung der va_list.
4
va_end(args);
Bereinigt den mit va_list verbundenen Speicherzustand vor dem Verlassen der Funktion.