c / expert
Snippet
Variadische Makros mit __VA_ARGS__
Der Identifikator __VA_ARGS__ wird in der Makro-Expansion verwendet, um die an das Makro übergebenen variablen Argumente darzustellen. Dies erlaubt die Erstellung mächtiger Wrapper um Funktionen wie printf, während automatisch Metadaten wie Dateinamen und Zeilennummern eingefügt werden.
snippet.c
c
1
2
3
4
5
6
7
8
9
#include <stdio.h>#define DEBUG_LOG(fmt, ...) \fprintf(stderr, "[DEBUG] %s:%d: " fmt "\n", __FILE__, __LINE__, __VA_ARGS__)int main() {DEBUG_LOG("Processing %d items", 42);return 0;}
Erklärung
1
#define DEBUG_LOG(fmt, ...)
Definiert ein Makro, das einen Format-String und eine variable Anzahl von Argumenten akzeptiert.
2
__VA_ARGS__
Spezieller Makro-Identifikator, der zu den zusätzlich bereitgestellten Argumenten expandiert wird.