0 Tage Serie
c / expert
Snippet

X-Makros zur Datensynchronisation

X-Makros sind eine Präprozessor-Technik zur Generierung von repetitivem Code aus einer einzigen Master-Liste. Dies stellt sicher, dass Enums, String-Arrays und andere verwandte Strukturen synchron bleiben, was Wartungsfehler reduziert und die Code-Konsistenz verbessert.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define STATUS_LIST \
X(IDLE, "System is waiting") \
X(BUSY, "Processing task") \
X(ERROR, "Fatal failure")
typedef enum {
#define X(name, desc) STATUS_##name,
STATUS_LIST
#undef X
} Status;
const char* status_strings[] = {
#define X(name, desc) desc,
STATUS_LIST
#undef X
};
// Usage: status_strings[STATUS_BUSY] returns "Processing task"
Erklärung
1
#define STATUS_LIST X(IDLE, ...) ...
Definiert eine Master-Liste, bei der jeder Eintrag in ein Platzhalter-Makro 'X' eingewickelt ist.
2
#define X(name, desc) STATUS_##name,
Definiert 'X' neu, um Enum-Elemente zu generieren, und expandiert dann die Master-Liste.
3
#undef X
Hebt die Definition von 'X' auf, damit es später für einen anderen Zweck (wie die Generierung von Strings) neu definiert werden kann.