web-dev-qa-db-fra.com

int main () vs void main () en C

En C, je sais que int main () renvoie un int où void main () ne le fait pas. Autre que cela, y a-t-il une différence entre eux? est le premier meilleur que le second?

33
madU

La plus grande partie du temps, l'un des int main(void) ou int main(int argc, char* argv[]) est ce que vous devez utiliser. En particulier, si vous écrivez un programme qui sera compilé par un compilateur important pour être exécuté sur un ordinateur personnel, avec le jeu complet des bibliothèques standard C, vous devrez certainement renvoyer un int à partir de main.

(J'éviterais aussi d'utiliser une liste d'arguments vide, voir " Pourquoi n'utilisons-nous pas (void) dans main? ")

Le standard C99 autorise d'autres signatures définies par l'implémentation. Vous pouvez les utiliser si vous avez lu le manuel de votre compilateur et que vous pouvez le faire. .

(5.1.2.2.1) Il doit être défini avec un type de retour de type int et sans paramètre ... ou avec deux paramètres ... ou d'une autre manière définie par l'implémentation

Personnellement, je les éviterais même s'ils sont autorisés (si possible), parce que c'est une chose de plus à craindre si vous avez besoin de transférer à un autre système.

Voir les commentaires ci-dessous " Pourquoi n'utilisons-nous pas (vide) dans main? " pour une discussion intéressante à ce sujet.

22
detly

Si votre livre dit void main() il est très très dépassé, a été écrit par un idiot (ou les deux)

edit: OK sauf si vous êtes dans un système très improbable où vous avez un principal indépendant - voir Pourquoi le type de la fonction principale en C et c ++ est-il laissé à l'utilisateur?

4
Martin Beckett