Salve.
Quello che segue potrebbe non essere vero,forse sono solo considerazioni di un povero pazzo, ma è un tarlo che mi perseguita da tanto tempo.
Sia in C che in C++, tutti i programmi iniziano con la funzione main()
Dopo molti programmi con codice sorgente libero visionati, ma anche semplici esempi di internet, molta gente ne scrive il prototipo in questi due modi
void main()
int main()
Per un bel po di tempo, quando non conoscevo il C++ (non è che ora lo conosca, ma almeno comprendo la sintassi di base, ma ad algoritmi sono a 0), non capivo il perchè di void e il perchè di int.
Facendo alcune considerazioni sono giunto a questa conclusione
int main() -> completamente inutile.
void main()-> è quello giusto per iniziare il programma.
Perchè?
Avendo scritto INT main(), vuol dire che questa funzione deve restituire un valore, come fa molta gente: quando il programma è stato eseguito correttamente, si fa return 0;, altrimenti return 1;
Per quanto io ne sappia, per controllare il valore di ritorno della funzione si fa
codice:
if (miafunzione() == parametroatteso) {codice}
Ma questo non lo si può fare dal main, poichè questa è la funzione principale e non ve ne sono altre (in ordine di tempo) prima di questa.
Impossibile quindi scrivere
codice:
if (main() == 0) {codice}
Quindi
Perchè scrivere int main() quando non potrai mai e poi mai controllarne il valore di ritorno?
Considerazioni
1) Non vi complessate: alla fine è una cazzata mortale, sono quasi certo che non influenzi il programma ne in termini di memoria ne in altro.
2) Con Gcc invece int main() può essere usato: ho sentito dire in giro che vi è una funzione prima di main, che si chiama void _start() dal quale il controllo si può fare: confermate?
Grazie a tutti!