Estoy aprendiendo C++ de forma particular, leyendo foros por aqui y por alla, y principalmente guiandome por el libro "C++ con Clase".
En fin, venia bastante bien hasta que me topé con esto.
No entendí para nada el tema de la libreria stdarg, se que se usa para manipular las funciones cuando no definimos el numero de argumentos que se pasan como parametros, pero nada mas. No comprendo su funcionamiento y no he encontrado una buena guia o ayuda en internet, alguien me da una mano?
Citar
fichero de cabecera "stdarg.h", estas macros permiten manejar "fácilmente" las listas de argumentos desconocidos.
Tipos:
En el fichero de cabecera "stdarg.h" de define un tipo: va_list.
Será necesario declarar una variable de este tipo para tener acceso a la lista de
parámetros.
Macros:
También se definen tres macros: va_start, va_arg y va_end.
void va_start(va_list ap, ultimo);
Ajusta el valor de "ap" para que apunte al primer parámetro de la lista. <ultimo> es el identificador del último parámetro fijo antes de comenzar la lista.
tipo va_arg(va_list ap, tipo);
Devuelve el siguiente valor de la lista de parámetros, "ap" debe ser la misma variable que se actualizó previamente con "va_start", "tipo" es el tipo del parámetro que se tomará de la lista.
void va_end(va_list va);
Permite a la función retornar normalmente, restaurando el estado de la pila, esto es necesario porque algunas de las macros anteriores pueden modificarla, haciendo que el programa termine anormalmente.
Tipos:
En el fichero de cabecera "stdarg.h" de define un tipo: va_list.
Será necesario declarar una variable de este tipo para tener acceso a la lista de
parámetros.
Macros:
También se definen tres macros: va_start, va_arg y va_end.
void va_start(va_list ap, ultimo);
Ajusta el valor de "ap" para que apunte al primer parámetro de la lista. <ultimo> es el identificador del último parámetro fijo antes de comenzar la lista.
tipo va_arg(va_list ap, tipo);
Devuelve el siguiente valor de la lista de parámetros, "ap" debe ser la misma variable que se actualizó previamente con "va_start", "tipo" es el tipo del parámetro que se tomará de la lista.
void va_end(va_list va);
Permite a la función retornar normalmente, restaurando el estado de la pila, esto es necesario porque algunas de las macros anteriores pueden modificarla, haciendo que el programa termine anormalmente.
Luego sigue con unos ejemplos pero no me ayudaron mucho.
Necesitaria una pequeña simplificacion de esto
Por otro lado, me pueden dar un ejemplo concreto de una situacion en la que sea necesario/util utilizar funciones con cantidad de argumentos variable?
Gracias, Saludos!