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. 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
      1. Ok merci, si quelqu'un connai les autre raison merci de me le dire svp .
        0
        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. 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