Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich optionale Parameter in C-Makros simulieren?

Barbara Streisand
Freigeben: 2024-11-17 04:46:03
Original
268 Leute haben es durchsucht

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)
Nach dem Login kopieren

Das Makro PRINT_STRING benötigt 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
Nach dem Login kopieren

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.

Das obige ist der detaillierte Inhalt vonWie kann ich optionale Parameter in C-Makros simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage