Parameter Pilihan dan Terlebih Beban dengan Makro C
Pengenalan
Makro C menyediakan kaedah yang mudah untuk penggunaan semula kod dan parameterisasi. Walau bagaimanapun, secara lalai, makro tidak boleh mengendalikan parameter pilihan atau lebih muatan. Artikel ini meneroka teknik untuk mengatasi had ini.
Penyelesaian
Pendekatan berasaskan makro berikut membenarkan parameter pilihan dan lebihan beban:
#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__)
Penggunaan
Penyelesaian berasaskan makro ini menyediakan dua faedah:
Anda boleh menggunakan makro PRINT_STRING seperti berikut:
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
Butiran Pelaksanaan
Penyelesaian ini menggunakan beberapa teknik:
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mencipta Parameter Pilihan dan Terlebih Beban dengan Makro C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!