Actualmente estoy escribiendo una función que tomará una cantidad variable de argumentos. Paso el número de argumentos en la función y luego iteraré a través de la lista de argumentos.Verificando los argumentos variables son del tipo esperado
Cada uno de los argumentos pasados debe ser un número entero. Agregaré este entero a un vector de números enteros que se usarán más adelante.
Me gustaría asegurarme de que algún comodín no intente pasar esta función a otra cosa que no sea un número entero en el futuro. Reconozco que puedo verificar el argumento actual de va_arg para asegurarme de que no es NULL y puedo usar algo como isanum (va_arg()) para determinar si es un entero válido. Supongo que podría incluso verificar el tamaño de (va_arg) y compararlo con el tamaño de (int) y asegurar que sean iguales.
¿Hay algún otro control que pueda ejecutar para verificar que se me haya pasado un número entero válido?
Gracias de antemano por la ayuda
Qué compilador está usando? – Xeo
** Muy buena ** pregunta!+1 –
gcc puede hacer verificaciones de cordialidad en los argumentos 'printf', y estoy bastante seguro de que hay una forma de extender ese comportamiento a las funciones personalizadas. Obviamente, no es extremadamente portable, pero si usted está usando gcc de todos modos, puede valer la pena investigarlo. –