16 réponses
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...
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...
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 ?
#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 ?
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!
//
void main(void)
{
cout << "test";
return;
}
//
si cela fait plaisir!
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;
}
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;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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)
¤
(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)
¤
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
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
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
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
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.
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.
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 ?
#include <iostream>
using namespace std;
void main()
{
cout << "test";
}
//fin
Quand je met ça avec mon compilateur (devc++)
Il me signal une erreur , bizarre ?
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 !
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 !
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.~
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.~
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 !
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 !
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.~
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.~