C 中具有可變參數的巨集
選用參數提供了一種指定具有預設值的參數的便捷方法,為函數呼叫提供了靈活性。雖然 C 本身不支援巨集中的可選參數,但有一些技術可以模擬這種行為。
一種方法涉及使用遞歸巨集模式。讓我們舉個例子:
#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)
PRINT_STRING 巨集採用可變數量的參數。巨集 PRINT_STRING_MACRO_CHOOSER 使用參數清單兩次:一次根據參數數量決定正確的輔助巨集(PRINT_STRING_1_ARGS、PRINT_STRING_2_ARGS 或 PRINT_STRING_3_ARGS),再次將參數傳遞給選定的輔助巨集。
以下是如何使用it:
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
這種方法在巨集中提供了可選參數,允許呼叫者只指定他們需要的參數。但是,它需要定義多個輔助宏,對於大量可選參數來說,這可能會變得冗長。
以上是如何模擬 C 宏中的可選參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!