Void main ()

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

16 réponses

  1. seb
     
    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
  2. jim
     
    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. gpa
       
      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. seb
       
      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
  3. gpa
     
    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
  4. marvinrouge
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jim
     
    Ok merci, si quelqu'un connai les autre raison merci de me le dire svp .
    0
  7. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    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
  8. mohammed
     
    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
  9. Utilisateur anonyme
     
    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
  10. mohammed
     
    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
  11. Pierre
     
    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
  12. Jolkdarr
     
    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
  13. Utilisateur anonyme
     
    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
  14. Jolkdarr
     
    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. Utilisateur anonyme
       
      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
  15. Onde2Choc Messages postés 299 Statut Membre 4
     
    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