Optionale und überladene Parameter mit C-Makros
Einführung
C-Makros bieten eine praktische Methode zur Wiederverwendung und Parametrisierung von Code. Allerdings können Makros standardmäßig keine optionalen oder überladenen Parameter verarbeiten. In diesem Artikel wird eine Technik zur Überwindung dieser Einschränkung untersucht.
Lösung
Der folgende makrobasierte Ansatz ermöglicht optionale und überladene Parameter:
#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__)
Verwendung
Diese makrobasierte Lösung bietet zwei Hauptfunktionen Vorteile:
Sie können verwenden das PRINT_STRING-Makro wie folgt:
PRINT_STRING("Hello, World!"); // No size or style specified PRINT_STRING("Hello, World!", 18); // Size specified PRINT_STRING("Hello, World!", 18, bold); // Size and style specified
Implementierungsdetails
Diese Lösung verwendet mehrere Techniken:
Das obige ist der detaillierte Inhalt vonWie können Sie mit C-Makros optionale und überladene Parameter erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!