C 宏的可選和重載參數
簡介
C 宏提供了一種便捷的方法用於程式碼重複使用和參數化。但是,預設情況下,巨集無法處理可選參數或重載參數。本文探討了一種克服此限制的技術。
解
以下基於巨集的方法允許使用可選參數和重載參數:
#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__)
用法
這個基於巨集的解提供了兩個主要的好處:
您可以如下使用PRINT_STRING 巨集:
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
實作詳細資訊
此解決方案採用了多種技術:
以上是如何使用 C 巨集建立可選參數和重載參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!