Lo standard C indica che, per una definizione di funzione, se il dichiarante include un elenco di identificatori, i tipi dei parametri devono essere dichiarati in un elenco di dichiarazione successivo. Apparentemente questo fa la differenza.Dichiarazione dei parametri all'esterno del dichiaratore
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;
}
Qui int a, b; è la lista di dichiarazione per i parametri. La differenza tra queste due definizioni è che il primo modulo agisce come una dichiarazione di prototipo che impone la conversione degli argomenti delle chiamate successive alla funzione, mentre il secondo modulo non lo fa.
Cosa significa questo per il programmatore e influisce sul codice prodotto dal compilatore?