Lo standard C dice:dichiarando correttamente la funzione main() in ANSI C
La funzione chiamata all'avvio del programma prende il nome principale. L'implementazione non dichiara alcun prototipo per questa funzione . Essa è definita con un tipo ritorno di int e senza parametri:
int main(void) { /* ... */ }
o con due parametri (di cui qui come argc e argv, se eventuali nomi possono essere utilizzati, in quanto sono locali alla funzione in cui sono dichiarate ):
int main(int argc, char *argv[]) { /* ... */ }
o equivalente o in qualche altro modo implementazione definita.
Tuttavia, Kernighan & Ritchie nella loro seconda edizione (la canonica ANSI C) bibbia basta usare:
main()
{
/* taram pampam ... */
return 0;
}
Chi ha ragione? Ha a che fare con la funzione senza il valore di ritorno che assume automaticamente il ritorno int
in C?
oh, non conoscevano la differenza tra 99 e 89 qui, forse questa è la ragione perché io citando da 99! Hai lo standard 89/90 e puoi citare il paragrafo parallelo su main da esso? – zaharpopov
Lo standard C89 ha detto più o meno la stessa cosa; ma in C89, una funzione senza un tipo di ritorno esplicito è stata implicitamente presupposta per restituire int, quindi la forma int-less era equivalente. –
@zaharpopov - Ho aggiunto dettagli del vecchio standard. –