Heim > Artikel > Backend-Entwicklung > Wie können optionale Makroparameter in C implementiert werden?
Optionale Makros mit C-Präprozessor
In C können optionale Makroparameter die Codeflexibilität verbessern. Eine Methode, dies zu implementieren, sind Makros im Überladungsstil. Lassen Sie uns untersuchen, wie diese Technik funktioniert.
Ein Ansatz nutzt die Liste der Makroargumente zweimal. Zunächst wird der Name eines Hilfsmakros erstellt. Zweitens werden die Argumente an das entsprechende Hilfsmakro übergeben. Ein Standardtrick wird verwendet, um die Anzahl der Makroargumente zu bestimmen.
Betrachten Sie den folgenden Code:
enum { plain = 0, bold = 1, italic = 2 }; void PrintString(const char* message, int size, int style) { } #define PRINT_STRING_1_ARGS(message) PrintString(message, 0, 0) #define PRINT_STRING_2_ARGS(message, size) PrintString(message, size, 0) #define PRINT_STRING_3_ARGS(message, size, style) PrintString(message, size, style) #define GET_4TH_ARG(arg1, arg2, arg3, arg4, ...) arg4 #define PRINT_STRING_MACRO_CHOOSER(...) \ GET_4TH_ARG(__VA_ARGS__, PRINT_STRING_3_ARGS, \ PRINT_STRING_2_ARGS, PRINT_STRING_1_ARGS, ) #define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__) int main(int argc, char * const argv[]) { PRINT_STRING("Hello, World!"); PRINT_STRING("Hello, World!", 18); PRINT_STRING("Hello, World!", 18, bold); return 0; }
Dieser Ansatz vereinfacht den Makroaufruf für den Aufrufer und erhöht möglicherweise die Komplexität für den Makroschreiber.
Das obige ist der detaillierte Inhalt vonWie können optionale Makroparameter in C implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!