Declaraciones de variables C después del encabezado de la función en la definición

Al leer algún código fuente de FreeBSD (Ver: radix.h líneas 158-173), encontré declaraciones de variables que seguían el “encabezado de la función” en la definición.

¿Es esto válido en ISO C (C99)? ¿Cuándo debería hacerse esto en el código de producción en lugar de simplemente declarar las variables dentro del “encabezado de la función”? ¿Por qué se está haciendo aquí?

Me refiero a la función que encabeza la cadena que se ve así: int someFunction(int i, int b) {

Eso se parece al estilo K & R (previo a ANSI). No creo que sea válido C99, pero ¿están usando C99? Joel

Creo que te estás refiriendo a la manera “pretérita” pre-ANSI de declarar parámetros en C. Parecía algo así:

 int foo(a, b) int a, int b { /* ... */ } 

Eso puede seguir siendo válido en C99, y los comstackdores lo aceptarán por razones de compatibilidad con versiones anteriores, pero debe considerarse obsoleto / arcaico.

Er. Tal vez malinterprete su pregunta, pero i y b en ese fragmento son parámetros de la función. No es una forma compacta de declarar variables dentro de la función, como:

 int someFunction() { int i, b; 

Cuando llamas a someFunction , le pasas esos argumentos:

 someFunction(1, 2); // `i` will be `1` and `b` `2` within `someFunction`