Makro dengan Parameter Boleh Ubah dalam C
Parameter pilihan menawarkan cara yang mudah untuk menentukan parameter yang mempunyai nilai lalai, memberikan kefleksibelan untuk fungsi panggilan. Walaupun C tidak menyokong parameter pilihan dalam makro secara asli, terdapat teknik yang boleh mensimulasikan gelagat ini.
Satu pendekatan melibatkan penggunaan corak makro rekursif. Mari kita ambil contoh:
#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)
Makro PRINT_STRING mengambil bilangan argumen yang berubah-ubah. Makro PRINT_STRING_MACRO_CHOOSER menggunakan senarai argumen dua kali: sekali untuk menentukan makro pembantu yang betul (PRINT_STRING_1_ARGS, PRINT_STRING_2_ARGS atau PRINT_STRING_3_ARGS) berdasarkan bilangan argumen dan sekali lagi untuk menghantar argumen kepada makro pembantu yang dipilih.
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
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Parameter Pilihan dalam Makro C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!