Votre question

compiler en c++ avec gcc

Tags :
  • G++
  • Programmation
Dernière réponse : dans Programmation
13 Mars 2006 21:10:46

Bonjour , je suis sous Mandriva 2006 et je me lance dans le c++.
J'ai bien sur gcc et gcc++ mais je trouve pas comment compiler en c++ . J'ai commencé avec le c et tout allait bien . Je créait mon fichier test.c et je le compilais commme ceci :
  1. gcc test.c -o test

Donc quand je suis passé au c++ j'ai fait exactement la meme chose . J'ai crée mon fichier test.c . J'ai ecrit la chose suivante :
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5. cout<<"J'aime pc-tests";
  6. system("PAUSE");
  7. return EXIT_SUCCESS;
  8. }

Normalement , pas d'erreure . Et pourtant , quand je le compile avec ma fidele commande :
  1. gcc test.c -o test

Il me dit :
  1. essai.c:1:20: error: iostream: Aucun fichier ou répertoire de ce type
  2. essai.c: In function 'main':
  3. essai.c:5: error: 'cout' undeclared (first use in this function)
  4. essai.c:5: error: (Each undeclared identifier is reported only once
  5. essai.c:5: error: for each function it appears in.)
  6. essai.c:7: error: 'EXIT_SUCCESS' undeclared (first use in this function)

Donc voila , est ce que quelqu'un pourrait me dire qu'est ce qu'il ne va pas .
Merci

Autres pages sur : compiler gcc

13 Mars 2006 21:15:20

Escusez moi , mon fichier s'appelle essai.c . Ca n'a pas beaucoup d'importance mais ca explique la presence de "essai" dans le rapport d'erreure .
13 Mars 2006 21:17:38

Pour le c++, l'extension utilisée d'habitude est .cpp ... Je sais pas si ca change grand chose, mais bon..
Contenus similaires
13 Mars 2006 21:20:22

Et bien apparament , ca joue parce que j'ai tapper ma commande en remplancant essai.c par essai.cpp et il n'y a plus qu'une seule erreure , apparament , il y en a une dans mon fichier . Si quelqu'un sait ... Moi je sais pas je debute et j'ai trouvé ca sur un tuto . Si il y a des fautes dans les tuto maintenant on s'en sort plus . :-)
13 Mars 2006 21:42:31

gcc est fait pour le C !
et C <> C++

voilà, tout est dit
13 Mars 2006 21:51:14

Tu es sur ?
Parce que si il existe gcc++ se n'est pas pour rien .
Bon disons , et tu connais pas un autre programme dans le meme genre pour compiler le c++ .
13 Mars 2006 22:02:01

gcc <> gcc++
13 Mars 2006 22:03:40

Escuses moi mais je ne comprend pas tout de ce que tu me dis avec tes "<>" .
13 Mars 2006 22:07:00

C'est g++ qui compile le c++ je crois... Mais il est bien souvent mis avec gcc je crois...
Essaye de voir le manuel de gcc ou essaye celui de g++ (je sais pas si c'est ça...)
Citation :
l n'y a plus qu'une seule erreure , apparament , il y en a une dans mon fichier .

C'est quoi cette erreur?
13 Mars 2006 22:09:25

Mon erreur est :
  1. essai.cpp: In function 'int main()':
  2. essai.cpp:5: error: 'cout' was not declared in this scope
13 Mars 2006 22:12:23

std::cout<<"machin"; avec un peu de chance...

mais je persiste, c'est pas avec un compilo C qu'on compile du C++ !
a b L Programmation
13 Mars 2006 22:38:09

Oui en fait gcc est assez puissant pour compiler du petit code C++, mais si tu pousses trop, ça compileras plus (je pense notamment aux templates). Et tu peux perdre beaucoup de temps à ne pas comprendre pourquoi ça ne compile pas, alors compile tout avec g++ et pas gcc.

Pour le cout, tu as 2 possibilités:
- utilise std::cout partout
- déclarer: using namespace std;
pour indiquer que l'espace de nommage std est utilisé en tant qu'espace général.
14 Mars 2006 17:20:44

J'ai enfin réussit à compiler en utilisant g++ . Donc mon fichier marche et j'ai fait celui ci ( qui est tres tres simple , et oui je debute seulement ) que j'essaie d'analyser .
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. cout << "Bonjour tout le monde"<< endl;
  7. char fin;
  8. cout << "Appuyer sur une touche puis sur Entrer pour quitter "<< endl;
  9. cin>>fin;
  10. }

Alors , je pense que la premiere ligne sert à aller chercher une sorte de bibliotheque de commande ou quelque chose comme ca . La deuxieme sert à ne pas mettre sdt:::... tout le temps , ensuite cout... affiche du texte à l'écran . Par contre char fin; je ne sais pas ce que c'est . Est ce que ca definie la variable fin ? Ou est ce une commande deja existante dans le c++ qui permet de fermer ou quelque chose comme ca ? Ensuite sa réaffiche du texte , je pense que endl veux dire fin de ligne . Enfin , je pense que cin attend une réponse du clavier et que si il a une reponse , il lance fin .
Est ce que vous pouvez me dire si ce programme marche effectivement comme ca et m'expliquer se char fin;
Merci
14 Mars 2006 17:30:37

char fin; déclare la variable fin, de type char

C'est quoi comme merde ton cours ?
14 Mars 2006 17:35:03

C'est un petit tuto que j'ai trouvé . C'est vrai il est un peu bof parce qu'il explique rien mais bon . Faut faire avec ce qu'on a . :-) , si tu as mieux à me proposer moi je suis preneur . Bon maintenant j'aimerais bien un petit conseil histoire de me remonter ou de me rabaisser le moral . Sachant que j'ai deja une bonne experience en programmation . J'en ai aucune en language objet ni en developpement de logiciel mais par contre je connais très bien le PHP . Donc la programmation , je sais un peu se que c'est quand meme . Donc pensez vous que se sera si difficile pour moi le c++ ?
a b L Programmation
14 Mars 2006 19:10:41

Si tu connais les notions d'objets en PHP5, il ne te resteras "que" la gestion de la mémoire avec les pointeurs.
14 Mars 2006 19:13:22

En bien en fait , je suis en train de m'y mettre la et pour l'instant ca va j'avance bien . Et au fait , j'ai fait un petit truc avec un if qui marche pas , pouvez vous me dire ou est l'erreur dans ma syntaxe .
  1. char choix;
  2. cout<<"Tu veux vraiment quitter ?(o/n)"<<endl;
  3. cin>>choix;
  4. if(choix='o')
  5. {
  6. cout<<"ta di oui"<<endl;
  7. }
  8. else
  9. {
  10. cout<<"ta di nn"<<endl;
  11. }
14 Mars 2006 19:32:31

J'ai trouvé , il faut mettre
  1. if(choix=='o')

Et oui ca se devine pas ces choses la .
14 Mars 2006 19:36:21

Citation :

peacend_breack a écrit :
J'ai trouvé , il faut mettre
  1. if(choix=='o')

Et oui ca se devine pas ces choses la .


lool t'es sur que tu connais le php ??
14 Mars 2006 20:13:17

Oui oui j'en suis sur , mais je programme pas en php la , je savais pas que ca ressemblait autant que ca .
Alors , maintenant je m'attaque à un truc un peu plus complexe que je viens de faire et qui bien sur ne marche pas ,:-) :
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void calcul1()
  5. {
  6. cout<<"(a+b)(c+d)"<<endl;
  7. double a,b,c,d;
  8. cout<<"Quelle est la valeur de a "<<endl;
  9. cin>>a;
  10. cout<<"Quelle est la valeur de b "<<endl;
  11. cin>>b;
  12. cout<<"Quelle est la valeur de c "<<endl;
  13. cin>>c;
  14. cout<<"Quelle est la valeur de d "<<endl;
  15. cin>>d;
  16. cout<<"(a+b)(c+d):"<<(((a*c)+(a*d))+((b*c)+(b*d)))<<endl;
  17. main();
  18. }
  19.  
  20. void calcul2()
  21. {
  22. cout<<"(a+b)²"<<endl;
  23. double a,b;
  24. cout<<"Quelle est la valeur de a"<<endl;
  25. cin>>a;
  26. cout<<"Quelle est la valeur de b"<<endl;
  27. cin>>b;
  28. cout<<"(a+b)²:"<<((a*a)+(2*a*b)+(b*b))<<endl;
  29. main();
  30. }
  31.  
  32. int quitter()
  33. {
  34. char choix;
  35. cout<<"Voulez vraiment quitter ? (o/n)"<<endl;
  36. cin>>choix;
  37. if(choix=='o')
  38. {
  39. cout<<"Tchao"<<endl;
  40. }
  41. else
  42. {
  43. main();
  44. }
  45. }
  46.  
  47. int main(int calcul1)
  48. {
  49. cout<<"Petit programme de calcul"<<endl;
  50. cout<<"Que voulez faire ?"<<endl;
  51. char choix;
  52. cout<<"1-Calculer (a+b)(c+d)"<<endl;
  53. cout<<"2-Calculer (a+b)²"<<endl;
  54. cout<<"3-Quitter"<<endl;
  55. cin>>choix;
  56. if(choix=='1')
  57. {
  58. calcul1();
  59. }
  60. if(choix=='2')
  61. {
  62. calcul2();
  63. }
  64. if(choix=='3')
  65. {
  66. quitter();
  67. }
  68. }

Je trouve des erreurs qui sont logiques en fait . Il lit la fonction main et il vois calcul1 , c'est normal qui ne sache pas se que c'est vu que je ne l'ai pas défini . Donc comment fait on dans ces cas la ?
14 Mars 2006 20:35:11

Non en fait je sais pas pourquoi ca marche pas , j'ai vu d'autres script qui etaient fait suivant le meme principe , s'il vous plait , pouvez vous me dire qu'est ce qui ne va pas .
14 Mars 2006 21:04:32

Citation :

peacend_breack a écrit :
script

non
a b L Programmation
14 Mars 2006 21:09:43

le compilateur lit ligne par ligne, quand il lit le main, il a déjà lu le calcul1() donc c'est définit quand il est sur le main.
Par contre enlève le paramètre calcul1 du main, ça ne veut rien dire.
14 Mars 2006 21:17:45

Oui j'ai compri ca , mais alors comment je pourrait faire , le main est forcement en bas car il appelle toute les autres fonctions donc elles doivent etre en haut . Mais apres les autres fonctions rappellent le main . Donc comment je peux faire ?
14 Mars 2006 21:21:40

tu ne peux pas appeler main(), c'est la fonction principale du programme. D'ailleurs si c'était possible tu me ferais une récursivité infinie
14 Mars 2006 21:23:02

Et donc comment je peux résoudre ce probleme ?
14 Mars 2006 21:28:55

j'ai pas vraiment compris ton raisonnement. Tu veux retourner à main() lorsque ta fonction est exécutée, c'est ca ?
Dasn ce cas, tu ne fais rien, le programme rend automatiquement la main à la fonction appelante (ici main()) lorsque la fonction est terminée
14 Mars 2006 21:34:09

Et bien non , lorsque disons la fonction calcul1 est terminée et que je met rien à la fin , il quitte le programme .
14 Mars 2006 21:37:34

ben oui, puisqu'il n'y a plus rien dans main()
tu veux retourner au début ?
14 Mars 2006 21:39:46

Et bien en fait , la fonction main affiche un menu à plusieur choix , imaginon qu'on a choisi le choix 1 , on va aller dans la fonction calcul1 , et a la fin de la fonction calcul1 , je veux retourner automatiquement au menu , donc dans la fonction main .
14 Mars 2006 21:46:47

tu fais une boucle dans main(). Puisque tu connais le PHP ca devrait pas te poser de problème
14 Mars 2006 21:47:52

Avec la meme syntaxe qu'en PHP ?

P.S : On dirait que tu me crois pas que je programme en PHP . Et au fait , je sais pas ce que c'est qu'une boucle , je sais programmer mais je ne connais pas les noms de ce que je fait .
C'est pas while(truc);{} par hasard ?
14 Mars 2006 22:07:49

tu sais programmer mais sans savoir ce que tu fais. De mieux en mieux
14 Mars 2006 22:11:34

Arretes de te moquer de moi s'il te plait , je vois pas qu'est ce qu'il y a de mal à ca . Bon passons , j'ai réussit à mettre une boucle mais le probleme c'est que il me repette toujours le main , et donc quand il doit quitter , il revient . Bon je verais ca plus tard , et merci quand meme !!!
14 Mars 2006 22:15:03

Je ne me moque pas de toi, mais je pense qu'il faut connaître certaines bases pour affirmer que l'on sait programmer.
Le C++ est bien plus complexe que le PHP, avec lequel tu pouvais sortir un code très moche qui fonctionnait quand meme. Si tu n'étudies pas en détail les bases du langage tu n'iras malheureusement pas loin
14 Mars 2006 22:19:09

Et bien , je n'ai pas dit que je savais programmer mais que j'avais quand meme des bonnes bases et de l'experience en PHP . Ce n'est pas comme si j'avais jamais vu un script et que je disais " Je veux apprendre le c++ " . Il y a beaucoup de gens qui font comme ca . Mais bon mine de rien je m'en tire pas mal quand meme pour l'instant . :-) . Pour avoir commencé le c++ il y a 3h je suis assez satisfait .
Finalement j'ai fait en une seule fonction . ;-)
Bon je te remercie beaucoup quand meme !!!
14 Mars 2006 22:21:18

Pour info j'ai fait ca finalement :
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int main()
  6. {
  7. cout<<""<<endl;
  8. cout<<"Petit programme de calcul"<<endl;
  9. cout<<""<<endl;
  10. cout<<"Que voulez faire ?"<<endl;
  11. char choix;
  12. cout<<"1-Calculer (a+b)(c+d)"<<endl;
  13. cout<<"2-Calculer (a+b)²"<<endl;
  14. cout<<"3-Quitter"<<endl;
  15. cin>>choix;
  16. if(choix=='1')
  17. {
  18. cout<<""<<endl;
  19. cout<<"Calculer (a+b)(c+d)"<<endl;
  20. double a,b,c,d;
  21. cout<<"Entrez la valeur de a "<<endl;
  22. cin>>a;
  23. cout<<"Entrez est la valeur de b "<<endl;
  24. cin>>b;
  25. cout<<"Entrez est la valeur de c "<<endl;
  26. cin>>c;
  27. cout<<"Entrez est la valeur de d "<<endl;
  28. cin>>d;
  29. cout<<"(a+b)(c+d):"<<(((a*c)+(a*d))+((b*c)+(b*d)))<<endl;
  30. main();
  31. }
  32. if(choix=='2')
  33. {
  34. cout<<""<<endl;
  35. cout<<"Calculer (a+b)²"<<endl;
  36. double a,b;
  37. cout<<"Entrez est la valeur de a"<<endl;
  38. cin>>a;
  39. cout<<"Entrez est la valeur de b"<<endl;
  40. cin>>b;
  41. cout<<"(a+b)²:"<<((a*a)+(2*a*b)+(b*b))<<endl;
  42. main();
  43. }
  44. if(choix=='3')
  45. {
  46. char choix;
  47. cout<<"Voulez vraiment quitter ? (o/n)"<<endl;
  48. cin>>choix;
  49. if(choix=='o')
  50. {
  51. cout<<"Tchao"<<endl;
  52. }
  53. else
  54. {
  55. main();
  56. }
  57. }
  58. }


Sa fait un peu bourin mais bon , je me pardonne , c'est mon premier essai .
14 Mars 2006 22:42:01

  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int main()
  6. {
  7. cout<<""<<endl;
  8. cout<<"Petit programme de calcul"<<endl;
  9.  
  10. while( true )
  11. {
  12.  
  13. cout<<""<<endl;
  14. cout<<"Que voulez faire ?"<<endl;
  15. char choix;
  16. cout<<"1-Calculer (a+b)(c+d)"<<endl;
  17. cout<<"2-Calculer (a+b)²"<<endl;
  18. cout<<"3-Quitter"<<endl;
  19. cin>>choix;
  20. if(choix=='1')
  21. {
  22. cout<<""<<endl;
  23. cout<<"Calculer (a+b)(c+d)"<<endl;
  24. double a,b,c,d;
  25. cout<<"Entrez la valeur de a "<<endl;
  26. cin>>a;
  27. cout<<"Entrez est la valeur de b "<<endl;
  28. cin>>b;
  29. cout<<"Entrez est la valeur de c "<<endl;
  30. cin>>c;
  31. cout<<"Entrez est la valeur de d "<<endl;
  32. cin>>d;
  33. cout<<"(a+b)(c+d):"<<(((a*c)+(a*d))+((b*c)+(b*d)))<<endl;
  34. }
  35. if(choix=='2')
  36. {
  37. cout<<""<<endl;
  38. cout<<"Calculer (a+b)²"<<endl;
  39. double a,b;
  40. cout<<"Entrez est la valeur de a"<<endl;
  41. cin>>a;
  42. cout<<"Entrez est la valeur de b"<<endl;
  43. cin>>b;
  44. cout<<"(a+b)²:"<<((a*a)+(2*a*b)+(b*b))<<endl;
  45. }
  46. if(choix=='3')
  47. {
  48. char choix;
  49. cout<<"Voulez vraiment quitter ? (o/n)"<<endl;
  50. cin>>choix;
  51. if(choix=='o')
  52. {
  53. cout<<"Tchao"<<endl;
  54. return EXIT_SUCCESS;
  55. }
  56. }
  57. }
  58. }


toujours aussi bourrin mais comme tu le voulais ;-)
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS