stdarg.h
es 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.h
se 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_list
en la función variadic. A va_start
continuació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_arg
macro produce el siguiente argumento. El primer argumento de va_arg
es the va_list
y el segundo es el tipo del siguiente argumento que se pasa a la función. Finalmente, se va_end
debe llamar a la macro va_list
antes 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 va1
en va2
.