El estándar C establece que, para una definición de función, si el declarador incluye una lista de identificadores, los tipos de los parámetros se declararán en una lista de declaraciones siguiente. Aparentemente, esto hace la diferencia.Declaración de parámetros fuera del declarador
extern int max(int a, int b)
{
return a > b ? a : b;
}
extern int max(a, b)
int a, b;
{
return a > b ? a : b;
}
Aquí int a, b; es la lista de declaraciones para los parámetros. La diferencia entre estas dos definiciones es que la primera forma actúa como como una declaración de prototipo que fuerza la conversión de los argumentos de llamadas subsiguientes a la función, mientras que la segunda forma no.
¿Qué significa esto para el programador y afecta el código que produce el compilador?