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
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.