Void main ()

Bonjour, je debute en cpp et je voulais savoir ce que cela change de mettre ou :
void main ()
ou main () ?

16 réponses

  1. Hello Jim!
    Je débute également, mais si je ne dis pas de bêtises:
    la fonction "main" nécessite un renvoi de valeur par le biais de return (valeur)
    la fonction "void main" ne nécessite pas de renvoi de valeur...
    Après il doit y avoir peut-etre d'autres raisons, mais bon çà me dépasse un peu pour le moment...
    2
    1. c byzarre parce que quand je créer le programme suivant :
      #include <iostream>
      #include <stdlib.h>

      using namespace std;

      main()
      {

      cout << "test";
      return 0;
      }

      //fin

      il marche mais si je fait sa :

      #include <iostream>
      #include <stdlib.h>

      using namespace std;

      void main()
      {

      cout << "test";
      }

      // fin

      il y a une erreur ?
      1
      1. Une application peut renvoyer un code d'erreur ou un code d'execution à l'application appelante. La déclaration "void" signifie que l'on ne renvoie pas de données.
        0
      2. il faut quand même mettre return mais sans le zero!!! Cà donne:
        #include <iostream>
        #include <stdlib.h>

        using namespace std;

        void main( )
        {

        cout << "test";

        return( );
        }

        // fin
        0
    2. return n'est pas nécessaire si la fonction est de type "void". Cependant on peut écrire :
      //
      void main(void)
      {
      cout << "test";
      return;
      }
      //

      si cela fait plaisir!
      1
      1. le plus complet:

        int main(int argc, char** argv)
        {
        // affichage des paramètres du programme s'il y en a
        // (il y en a toujours au moins 1: argv[@) est le nom du
        // programme lui même ...)
        for (int i=0; i<argc; i++)
        printf("argument %d = %s", i, argv[i]);

        // TES instructions ici
        // ...

        // code de retour
        // 0 indique pas d'erreur en UNIX en général
        return 0;
        }
        1
        1. Ok merci, si quelqu'un connai les autre raison merci de me le dire svp .
          0
          1. par défaut, en C, le type est toujourss int
            (et en C, tout a un type, sauf peut être les opérateurs de comparaison et d'incrémentation)
            main ( ) signifie donc int main( )
            L'exécutable est alors capable de retourner une variable
            au système d'exploitation. Sous dos, on la récupère avec "errorlevel"
            void main() est autorisé, mais ce n'est pas très poli de faire des programmes qui ne disent pas au système d'exploitation si ça a marché ou pas.

            un truc aussi: return () ; équivaut à : return(0);
            (là, c'est 0 par défaut)

            ¤
            0
            1. salut jim,
              voilàla fonction main ( ) retourne un résultat sachant qu'on n'a pas besoin de l'affichage du résultat ni du résultat lui même donc on l'init à vide donc void main( ).
              bonb courage.
              merci
              0
              1. Salut Jim,

                Observation :

                Dans ton exemple, il n'est pas nécessaire
                d'inclure la librairie <stdlib.h>

                #include <iostream>
                using namespace std;

                void main()
                {
                cout << "test";
                }

                // fin

                Conseil :

                Ne charge une librairie que si tu en as besoin.

                Lupin
                0
                1. Salut jim,
                  voici un site où vous trouverez beaucoup d'info sur le c++ et sur main(principal en anglais) et void(vide pour ne rien retourner)
                  http://time.runner.free.fr/
                  Bonnes études.
                  Bon courage.
                  Merci.
                  0
                  1. C'est bizarre:
                    #include <iostream>
                    using namespace std;

                    void main()
                    {
                    cout << "test";
                    }

                    //fin

                    Quand je met ça avec mon compilateur (devc++)
                    Il me signal une erreur , bizarre ?
                    0
                    1. Hello !

                      En C : warning (avertissement => void n'est pas recommandé pour main() ),
                      En C++ : error (erreur => void ne doit pas être utilisé pour main() ).

                      Take care !
                      0
                      1. Bonjour,

                        En fait pour être sur j'ai refait l'exercice sous MSVC++6.0, voici le résultat:

                        #include <iostream>
                        using namespace std;

                        void main()
                        {
                        cout << "test";
                        }

                        --------------------Configuration: testvoid - Win32 Debug--------------------
                        Compiling...
                        princi.cpp
                        Linking...

                        testvoid.exe - 0 error(s), 0 warning(s)

                        // Mode console

                        >dir
                        Le volume dans le lecteur I s'appelle Donnees
                        Le numéro de série du volume est 0000-000000

                        Répertoire de o:\.............\testvoid\Debug

                        2004-08-22 18:15 <REP> .
                        2004-08-22 18:15 <REP> ..
                        2004-08-22 18:15 33 558 princi.obj
                        2004-08-22 18:15 225 367 testvoid.exe
                        2004-08-22 18:15 350 644 testvoid.ilk
                        2004-08-22 18:15 2 001 516 testvoid.pch
                        2004-08-22 18:15 541 696 testvoid.pdb
                        2004-08-22 18:15 74 752 vc60.idb
                        2004-08-22 18:15 102 400 vc60.pdb
                        7 fichier(s) 3 329 933 octets
                        2 Rép(s) 16 916 054 016 octets libres

                        >testvoid
                        test
                        >

                        Bon, ceci dit, tel que dit dans le fil de cette idée, il m'apparait important de souligner l'importance du type de l'objet. L'objet étant la fonction "main" (fonction principal) pouvant être paramètré pour les i/o (entrée/sortie) du programme.

                        comme spécifier en 10.) par blurk, tout est une question de paramètrer le bon type, imagine lorsque tu utilise le transtypage à l'intérieur d'un liage dynamique sur une classe dérivé. La définition clair des types est impératif en C++ pour ma part.

                        Amicalement
                        Lupin

                        ~L'essentiel est invisible pour les yeux.~
                        ~On ne voit bien qu'avec le coeur.~
                        0
                        1. Hello !

                          Pour information, Microsoft Visual C++ n'est pas un C++ conforme ISO. Par exemple, dans l'exemple cité il aurait dû signaler une erreur :
                          main() ne retourne pas int.

                          Il y a d'autres non-conformités, cf MSDN pour les détails.
                          Avec Visual C++ .NET, la conformité a été améliorée mais ce n'est toujours pas un C++ standard.

                          Pour un compilateur plus standard : GNU C++ ou Metrowerks C++ par exemple.

                          Take care !
                          0
                          1. Bonjour Jolkdarr,

                            Merci pour l'info, celle-ci m'était inconnu, je savais qu'il y avait des différences car mon bouquin de Deitel traite un peu le sujet. N'étant pas programmeur de cpp à temps plein, je n'ai travaillé qu'avec quelques versions de c de borland (2) et la version cpp (6.0) de MS.

                            Amicalement
                            Lupin

                            ~L'essentiel est invisible pour les yeux.~
                            ~On ne voit bien qu'avec le coeur.~
                            0
                        2. Techniquement, ce n'est pas pareil ! Il y a un mot de plus dans void main() ! :-p

                          "Si tout va bien, c'est qu'il y a un GROS problème !"
                          "Born to Troll !"
                          -1