Macros con parámetros variables en C
Los parámetros opcionales ofrecen una manera conveniente de especificar parámetros que tienen valores predeterminados, lo que proporciona flexibilidad para las llamadas a funciones. Si bien C no admite de forma nativa parámetros opcionales en macros, existen técnicas que pueden simular este comportamiento.
Un enfoque implica el uso de un patrón de macro recursivo. Tomemos un ejemplo:
#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)
La macro PRINT_STRING toma un número variable de argumentos. La macro PRINT_STRING_MACRO_CHOOSER utiliza una lista de argumentos dos veces: una para determinar la macro auxiliar correcta (PRINT_STRING_1_ARGS, PRINT_STRING_2_ARGS o PRINT_STRING_3_ARGS) en función del número de argumentos y otra vez para pasar los argumentos a la macro auxiliar seleccionada.
Aquí se explica cómo usarlo:
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
Este enfoque proporciona parámetros opcionales en macros, lo que permite a la persona que llama especificar solo los parámetros que necesita. Sin embargo, requiere definir múltiples macros auxiliares, que pueden volverse detalladas para una mayor cantidad de parámetros opcionales.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3