Probleme avec Dev-C++ - C++ - Programmation
Marsh Posté le 18-09-2005 à 13:37:56
ton premier exemple, ce n'est pas du C++.
La fonction "void main()" n'existe pas en C++, il n'existe que "int main()" ou "int main(int argc, char* argv[]).
ton tuto de programmation qui te parle de "void main()" est mauvais, trouves-en un autre. "void main" ça marche avec les compilos pas standard comme Visual C++.
Marsh Posté le 18-09-2005 à 13:43:53
ah oui, tant que j'y suis : ton tuto, non seulement il est mauvais, mais en plus il est obsolète.
Les entetes iostream.h et stdio.h ne doivent pas être utilisés. on utilise <iostream> et <cstdio>. Et encore, cstdio c'est pour mettre de "vieux C" dans ton code, comme ton getchar. C'est une pratique à éviter.
Voilà un bon hello world :
Code :
|
pas besoin de return dans le main, c'est optionnel. Avec <iostream>, il faut préciser std:: ou "using namespace std". Pour arreter ton prog le temps de lire ce qui est afficher, mets un breakpoint sur l'accolade fermante. Un breakpoint ça indique à ton debugger (ici dev-c++) de faire une pause, ce n'est pas écrit dans le code. Lit en diago la doc tu verras comment on fait un breakpoint.
Ne commence pas en faisant du "debogage au printf et au getchar" c'est une très mauvaise habitude.
[edit] : pourquoi le backslash de mon \n ne s'affiche pas ?? Jocebug ?
Marsh Posté le 18-09-2005 à 14:13:04
je remarque qu'avec la bibliotheque iostream, on ne peut pas utiliser "cin<<" alors qu'avec iostream.h c'est possible
comment on fait des input avec iostream ?
Marsh Posté le 18-09-2005 à 14:42:47
déjà c'est cin >> et pas cin <<
et puis tous les noms standards comme cout, cin, endl, string... sont dans l'espace de nom std.
Un espace de nom c'est comme un lieu où les variables sont visible. On dit pas "Miami", mais "Miami, Florida", on précise. En c++ c'est pareil. cin on connait pas, on précise "std::cin" ce qui veut dire "cin dans std"
pour pas avoir à écrire std:: à chaque fois, ecrit "using namespace std;" juste après les #include comme ça ça devient automatique
Marsh Posté le 18-09-2005 à 15:06:03
xav92210 a écrit : je remarque qu'avec la bibliotheque iostream, on ne peut pas utiliser "cin<<" alors qu'avec iostream.h c'est possible |
En utilisant <iostream> "cin" (qui fait partie de la standard template library) se trouve dans le namespace (*) "std".
Donc il faut préfixer par "std::" pour y accéder => std::cin.
Tu peux, si tu le désires et connais les noms (histoire d'éviter les collisions) placer tout le namespace STD dans le namespace courant avec "using namespace std".
*: un namespace (ou espace de nommage) est un conteneur abstrait, une boite virtuelle contenant des fonctions ou des variables. L'utilisation de namespaces permet de séparer proprement les différentes bibliothèques par exemple, et d'éviter les collisions (quand deux objets (variables, fonctions, classes) portent le même nom). C'est un contexte quoi, un espace spécifique séparé de tout le reste du langage.
Marsh Posté le 13-01-2008 à 00:55:21
Pour ton code essaye:
# include <iostream>
# include <stdio.h>
using namespace std
int main()
{
cout << "Hello world" <<endl;
return 0
system("PAUSE" )
}
Marsh Posté le 15-01-2008 à 19:46:09
Pour repondre a adlopho, <<system("PAUSE" ) >> se met AVANT <<return 0 >>.
Et il ne faut pas oublier les <<;>> apres chaque ligne...;
donc :
# include <iostream>
# include <stdio.h>
using namespace std ;
int main()
{
cout << "Hello world" <<endl;
system("PAUSE" ) ;
return 0 ;
}
Marsh Posté le 18-09-2005 à 13:11:02
Je suis noob en programmation
J'essai d'apprendre avec des sites de programmation et des bouquins
Mais le pb c'est que Dev-C++ refuse de me compiler un programme très basic comme un hello world (que j'ai mis dans Dev-C++ directement par copier-coller d'un tuto de programmation C++
Cependant j'ai remarqué que si je remplace "void" par "int" ça marche (ça complile mais evidemment, le programme est différent)
et voilà ce que Dev-C++ m'affiche lorsque je compile avec "void" (cliquer sur l'image et recliquer sur l'image agrandie pour que ça soit lisible)
comment je peux remédier à ce probleme ?
Message édité par xav92210 le 18-09-2005 à 13:11:46