„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich optionale Parameter in C++-Makros simulieren?

Wie kann ich optionale Parameter in C++-Makros simulieren?

Veröffentlicht am 15.11.2024
Durchsuche:745

How Can I Simulate Optional Parameters in C   Macros?

Makros mit variablen Parametern in C

Optionale Parameter bieten eine bequeme Möglichkeit, Parameter mit Standardwerten anzugeben und bieten Flexibilität bei Funktionsaufrufen. Während C optionale Parameter in Makros nicht nativ unterstützt, gibt es Techniken, die dieses Verhalten simulieren können.

Ein Ansatz beinhaltet die Verwendung eines rekursiven Makromusters. Nehmen wir ein Beispiel:

#define PRINT_STRING(message, ...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)

#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)

Das PRINT_STRING-Makro akzeptiert eine variable Anzahl von Argumenten. Das Makro PRINT_STRING_MACRO_CHOOSER verwendet eine Liste von Argumenten zweimal: einmal, um das richtige Hilfsmakro (PRINT_STRING_1_ARGS, PRINT_STRING_2_ARGS oder PRINT_STRING_3_ARGS) basierend auf der Anzahl der Argumente zu bestimmen, und erneut, um die Argumente an das ausgewählte Hilfsmakro zu übergeben.

So verwenden Sie es:

PRINT_STRING("Hello, World!");  // Defaults to no size or style
PRINT_STRING("Hello, World!", 18); // Specifies only size
PRINT_STRING("Hello, World!", 18, bold); // Specifies both size and style

Dieser Ansatz stellt optionale Parameter in Makros bereit, sodass der Aufrufer nur die Parameter angeben kann, die er benötigt. Es erfordert jedoch die Definition mehrerer Hilfsmakros, die für eine größere Anzahl optionaler Parameter ausführlich werden können.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3