Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/10/2009, 04:01
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Funcion con numero indefinido de parametros

Si. Es exactamente el principio de printf: accepta cualquier numero de parametros. Esta manera de hacer necesita alugunas macro (va_list, va_start, va_end,..., ver la pagina de la msdn, por ejemplo. No encuentro nada en español).

No hay que cunfundir una funccion con paremetros que tienen valores por defecto, con una funccion con parametros opcionales. Poner valores por defecto a los parametros permite tambien que algunos parametros sean opcionales, pero el numero de parametros es fijo, aunque en una funccion con parametros opcionales, el numero de parametros es ilimitado. Hay algunas limites, como pro ejemplo, todos los parametros opcionales tienen que ser del mismo tipo, pero no me acuerdo de todo, eso es C y soy mas de C++.

Mirad por ejemplo la funccion del ejemplo de la msdn:

Código:
void testit ( int i, ...) // el secreto esta esto, lo tres puntos
{
   va_list argptr; // esta linea declara la lista de parametros
   va_start(argptr, i); // esta linea empieza el bucle sobre la lista de parametros (sin saber el numero de parametros)

   if ( i == 0 ) {
      int n = va_arg( argptr, int ); // esto es para recuperar el valor de cada parametro segun su tipo
      printf( "%d\n", n );
   } else {
      char *s = va_arg( argptr, char* );
      printf( "%s\n", s);
   }
}
Hope it helps.
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web