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

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
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
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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mohammed
 
salut,
je ne sais pa ssi sa peut vous aider mais va faire un tour
http://www.lri.fr/~aze/page_c/aide_c/void.html
http://www.lri.fr/~aze/page_c/aide_c/void.html
bon courage.
merci.
1
jim
 
Ok merci, si quelqu'un connai les autre raison merci de me le dire svp .
0
blurk Messages postés 487 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
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
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
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
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
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
Pierre
 
Ok, merci !
0
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
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
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
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