int main () vs void main() en C [dupliquer]

cette question a déjà une réponse ici:

En C, je sais que int main() retourne un int, où void main() ne fonctionne pas. Autre que cela, est-il une différence entre eux? la première est meilleure que la seconde?

30
demandé sur madU 2012-02-20 09:19:01

3 réponses

la grande majorité 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 va être compilé par n'importe quel compilateur majeur pour fonctionner sur un ordinateur personnel, avec l'ensemble complet des bibliothèques C standard, alors vous avez presque certainement besoin de retourner un int de main .

(je voudrais aussi éviter d'utiliser un argument vide de la liste, voir " Pourquoi n'utilisons-nous pas (void) principal? ")

la norme C99 permet d'autres signatures définies par implémentation, et vous pouvez les utiliser si vous avez lu le manuel de votre compilateur et qu'il dit que vous le pouvez.

(5.1.2.2.1) il doit être défini avec un type de retour int et sans paramètres ... ou avec deux paramètres ... ou d'une autre manière définie par la mise en œuvre

personnellement, je les éviterais même s'ils sont permis (si possible), parce que c'est une chose de plus à se soucier si vous avez besoin de porter à un autre système.

voir les commentaires ci-dessous " pourquoi n'utilisons-nous pas (nul) dans main? ", pour une discussion intéressante sur ce sujet.

20
répondu detly 2017-12-16 11:31:00

si votre livre dit void main() il est soit très très périmé, 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 main autoportant - voir pourquoi le type de la fonction principale en C et c++ est laissé à l'utilisateur pour définir?

5
répondu Martin Beckett 2017-05-23 12:17:52

void main() n'est pas valide C. int main() est. C'est la principale différence.

-5
répondu R.. 2012-02-20 05:36:18