Ci sono diversi possibili firme per main()
:
void main()
void main(string[] args)
void main(char[][] args)
void main(wstring[] args)
void main(wchar[][] args)
void main(dstring[] args)
void main(dchar[][] args)
int main()
int main(string[] args)
int main(char[][] args)
int main(wstring[] args)
int main(wchar[][] args)
int main(dstring[] args)
int main(dchar[][] args)
Se int è il tipo di ritorno, allora è praticamente la stessa cosa in C o C++. Il valore restituito è ciò che vede il sistema operativo/shell. Se viene generata un'eccezione, viene stampata una traccia dello stack e il sistema operativo/shell vede un valore diverso da zero. Non so cosa sia. Può variare in base al tipo di eccezione.
Se vuoto è il tipo restituito, il sistema operativo/shell visualizza 0. Se viene generata un'eccezione, viene stampata una traccia dello stack e il sistema operativo visualizza un valore diverso da zero. Di nuovo, non so cosa sia.
Essenzialmente, con void principale non ti devi preoccupare di restituire un valore all'OS/shell. Molti programmi non sono minimamente interessati al ritorno o al fallimento del sistema operativo/shell. Quindi, con void, il sistema operativo/shell ottiene sempre 0 a meno che non venga lanciata un'eccezione, il che ha senso, poiché l'unico errore del programma a quel punto è se un'eccezione fuoriesce dallo main()
. Se si fare si preoccupa di restituire il successo o l'errore al sistema operativo/shell, quindi è sufficiente utilizzare una delle versioni che restituisce int.
La pletora di firme a causa di diversi tipi di stringhe è che è possibile utilizzare praticamente tutti i tipi di stringa possibili come input per main()
. main()
e main(string[] args)
sono probabilmente i più usati.
fonte
2010-10-08 08:55:46
@Michal Ho accettato la tua risposta perché è la più chiara. Ma penso che se vedi main con void è nel migliore dei casi confondere se qualcuno dice che restituisce qualcosa. Non è la scelta migliore sulla parte D secondo me. –
È un po 'fuorviante, ma non più di qualcosa come "main" restituisce un valore al sistema operativo ". Qual è il contenuto della documentazione per la maggior parte delle lingue, in questi termini :) C'è sempre un livello intermedio a 1) gestire le interazioni specifiche del sistema operativo e 2) applicare la semantica del linguaggio. – shambulator
@shambulator ma il valore restituito da main (in C++) è il valore restituito al sistema, quindi per me come per "un utente di una lingua" non importa davvero quali altri livelli ci saranno - dichiaro chiaramente che dall'ultimo punto ho il controllo su (main) il mio programma restituisce i principali rendimenti e avendo vuoto come tipo di ritorno e restituendo qualcosa "implicitamente" è solo una cattiva idea. Per me comunque. E quando stai dicendo che non è vero che il valore di ritorno principale al sistema operativo non è vero perché un main è il primo punto (o l'ultimo) dipende da come lo guardi - –