stdarg.h



stdarg.hes una cabecera en la biblioteca estándar de C del lenguaje de programación C que permite a las funciones que acepten un número indefinido de argumentos . [1] Proporciona facilidades para recorrer una lista de argumentos de función de número y tipo desconocido. C ++ proporciona esta funcionalidad en el encabezado cstdarg.

El contenido de stdarg.hse usa típicamente en funciones variadas , aunque pueden usarse en otras funciones (por ejemplo, vprintf) llamadas por funciones variadas.

Las funciones variables son funciones que pueden tomar un número variable de argumentos y se declaran con puntos suspensivos en lugar del último parámetro. Un ejemplo de tal función es printf. Una declaración típica es

no está permitido en C. (En C ++, esta declaración está permitida). En C, una coma debe preceder a los puntos suspensivos; en C ++, es opcional.

Para acceder a los argumentos sin nombre, se debe declarar una variable de tipo va_listen la función variadic. A va_startcontinuación, se llama a la macro con dos argumentos: el primero es la variable declarada del tipo va_list, el segundo es el nombre del último parámetro nombrado de la función. Después de esto, cada invocación de la va_argmacro produce el siguiente argumento. El primer argumento de va_arges the va_listy el segundo es el tipo del siguiente argumento que se pasa a la función. Finalmente, se va_enddebe llamar a la macro va_listantes de que regrese la función. (No es necesario leer todos los argumentos).

C99 proporciona una macro adicional va_copy, que puede duplicar el estado de un va_list. La macro invocación se va_copy(va2, va1)copia va1en va2.