2017-02-20 2 views
-2

En int main(), return valeur devrait indiquer comment le programme est sorti. Généralement, Nous avons représenté par une valeur de retour 0 pour la terminaison normale et 1 pour la terminaison anormale.Confusion à propos de void main() dans C

Ensuite, je suis juste curieux de savoir, Si void main() fonction ne renvoie aucune valeur de retour, puis Comment faire fonctionner le système savoir que le programme normal se terminent ou non en C?

+3

'void' ne figure pas dans la liste des types de retour autorisés pour' main'. Donc juste ne ... – StoryTeller

+1

utilise 'exit (1)' par exemple. –

+0

À moins que votre implémentation * spécifiquement * documente 'void main()' comme signature légale, le comportement n'est pas défini - * tout * résultat est possible (y compris une erreur d'exécution) et tout résultat est autorisé. Cela dépend de la manière dont le programme est appelé et de ce que le système d'exploitation s'attend à voir dans un emplacement spécifique. –

Répondre

1

void main() n'est pas autorisé par le standard C. main doit renvoyer int ou un type de données défini par l'implémentation.

+1

Ce n'est pas * déconseillé *; ce n'était jamais une signature standard pour commencer. 'main' était toujours destiné à retourner' int'. –

+0

@JohnBode; Ouais. Mais c'était dans K & R et je peux le rappeler à partir de là. – haccks

+2

Oui, malheureusement, il y a trop de références, même de bonne réputation, qui utilisaient 'void main()'. 27 ans depuis la première norme ISO, et nous * combattons * encore cette bataille. –