C/C++ avec GCC

Fermé
Foxysama - 2 déc. 2008 à 20:58
 IB - 6 oct. 2011 à 21:24
Bonsoir,


Léger soucis lors de la compilation du code suivant:

------------------------------------------------------------
#include <iostream.h>
#include <conio.h>

main(){
int valeur;
int essai;
int nbre = 1;

cout << "Entrer le nombre a chercher : ";
cin >> valeur;
clrscr();
cout << "Entrer un essai : ";
cin >> essai;
while (essai != valeur){
if (essai > valeur){
cout << "Trop grand!";
else
cout << "Trop petit!";
};
cout << "/nEntrer un nouvel essai : ";
cin >> essai;
nbre++;
}
cout << "Vous avez trouvé en " << nbre << " fois";
getch();
}
------------------------------------------------------------

Lors de la compilation j'obtiens le message suivant:

foxysama@fox-nr21s:~/Documents> gcc -c exo1.cpp
exo1.cpp:1:22: error: iostream.h: Aucun fichier ou dossier de ce type
exo1.cpp:2:19: error: conio.h: Aucun fichier ou dossier de ce type
exo1.cpp: In function ‘int main()’:
exo1.cpp:9: error: ‘cout’ was not declared in this scope
exo1.cpp:10: error: ‘cin’ was not declared in this scope
exo1.cpp:11: error: ‘clrscr’ was not declared in this scope
exo1.cpp:17: error: expected `}' before ‘else’
exo1.cpp: At global scope:
exo1.cpp:24: error: expected constructor, destructor, or type conversion before ‘<<’ token
exo1.cpp:25: error: expected constructor, destructor, or type conversion before ‘;’ token
exo1.cpp:26: error: expected declaration before ‘}’ token

------------------------------------------------------------

Je suppose que c'est un problème avec les librairies ... mais comment importer diverses librairies?

Merci d'avance,
Bonne soirée.

18 réponses

A noter aussi qu'en C++ on ne met pas d'extension aux headers de la lib std.
Donc ce n'est pas
#include <iostream.h>
mais
#include <iostream>
(ce qui était d'ailleur peut-etre l'origine du probleme...)
7
c'est pas les bib, c'est ton préprocesseur qui trouve pas les headers (.h)
2
Merci de ta réponse.

Peux tu être plus précis?
Comment puis-je y remédier?
0
othanga > Foxysama
2 déc. 2008 à 21:09
n'aurais-tu pas une option pour dire à gcc où se trouvent les includes ? genre -I (in http://www.licence.info.upmc.fr/lmd/licence/2005/ue/LI205-2005oct/public/fiches-cini.pdf

parce qu'en fait, je connais pas grand chose à C ou C++ :)
0
othanga > othanga
2 déc. 2008 à 21:11
damned ! la ')' est intégrée dans l'url :-(
l'url sans la ')' :
http://www.licence.info.upmc.fr/...

dsl de pas pouvoir t'aider plus
0
installes libstdc++6
0
ça va corriger quoi ?
0
Je viens d'installer "libstdc++", redémarrer le système: Aucun changements. =(
0
tu sais lire ?
0
tu vas chercher iostream.h & conio.h et tu vas coller le contenu de ces fichiers dans TON source à la place des include.
ensuite tu compiles et tu comprendras enfin d'où vient les 2 premières erreurs à l'origine de tout.
0

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

Posez votre question
Pour ce qui es de l'option de gcc pour lui dire où se trouve les includes, je cherche depuis tout à l'heure dans le 'man'...

Mais il y a tellement d'options pour gcc ...
0
En cherchant su le net, je vois un peu partout que iostream.h n'existe pas en standard on inclue "iostream" (sans le .h), en ajoutant un "namespace std".
Bref je ne pense pas que cela change quelques chose ....
Et je ne trouve pas le contenu de ces deux bibliothèques ....

Arf..
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
2 déc. 2008 à 21:53
salut,

tu peux donner le résultats des commandes suivantes :
gcc -v


find /usr/include/ -name "iostream.h"


find /usr/include/ -name "conio.h"
0
foxysama@fox-nr21s:~/Documents> gcc -v
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3 --enable-ssp --disable-libssp --with-bugurl=https://en.opensuse.org/openSUSE:Submitting_bug_reports --with-pkgversion='SUSE Linux' --disable-libgcj --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --program-suffix=-4.3 --enable-version-specific-runtime-libs --enable-linux-futex --without-system-libunwind --with-cpu=generic --build=i586-suse-linux
Thread model: posix
gcc version 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036] (SUSE Linux)
foxysama@fox-nr21s:~/Documents> find /usr/include/ -name "iostream.h"
foxysama@fox-nr21s:~/Documents> find /usr/include/ -name "conio.h"
foxysama@fox-nr21s:~/Documents>
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472 > Foxysama
2 déc. 2008 à 22:11
[redfox@mandriva ~]$ find /usr/include/ -name "iostream.h"
/usr/include/c++/4.2.3/backward/iostream.h
[redfox@mandriva ~]$ gcc -v
Utilisation des specs internes.
Target: i586-manbo-linux-gnu
Configuré avec: ../configure --prefix=/usr --libexecdir=/usr/lib --with-slibdir=/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-checking=release --enable-languages=c,c++,ada,fortran,objc,obj-c++,java --host=i586-manbo-linux-gnu --with-cpu=generic --with-system-zlib --enable-threads=posix --enable-shared --enable-long-long --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --enable-java-awt=gtk --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --enable-gtk-cairo --disable-libjava-multilib --enable-ssp --disable-libssp
Modèle de thread: posix
version gcc 4.2.3 (4.2.3-6mnb1)
[redfox@mandriva ~]$


chez toi on peut lire : --with-gxx-include-dir=/usr/include/c++/4.3

quand à "conio.h" .....je ne l'ai pas !
0
Ca ne dit pas grand chose ...

Je ne sais pas si "find" est reconnu par mon système.
0
...étrange ces fichiers qui n'existent pas.
j'étais persuadé avoir lu dans pas mal d'endroits que le C était portable.
Peut-être ne l'est-il pas partout ?
0
rappel: je suis un gros nul en C et encore plus en C++
néanmoins, ce n'était pas la peine d'aller chercher midi à 14h : https://www.google.com/search?q=iostream.h&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fr:official&client=firefox-a&gws_rd=ssl donne en 1er résultat http://www.commentcamarche.net/forum/affich 446579 iostream h pour le c :-)
je me permets quand même ce petit conseil : on ne peut pas se lancer dans la programmation sans connaître un minimum du processus de génération des exécutables. Parce que sinon, tu vas passer ta vie à chercher dans de mauvaises directions.
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
3 déc. 2008 à 18:32
salut,

j'étais persuadé avoir lu dans pas mal d'endroits que le C était portable

s'il y a bien un langage qui est portable, c'est bien le C !


néanmoins, ce n'était pas la peine d'aller chercher midi à 14h .............

et quelle est l'explication alors ?
0
Merci pour vos réponses.

Mr othanga, sachez que cela fait deux ans que je fais des études dans l'informatique, et que je fais de petit programmes en C/C++ (Reproduire une balle rebondissante à l'infinie dans une console en 24*80, création d'un morpion, le célèbre jeu pong etc...). La programmation en C, j'en ai mangé ... Même si je ne me proclame pas expert, loin de là, sinon je n'en serais pas réduit à poser ce genre de questions, étant novice certaines choses m'échappent. Donc permettez moi de bien vouloir, dans l'ignorance, exposer mon problème ....
De plus, l'adresse que vous m'avez fournit n'a pas réellement une réponse à ma question ...

Bref.

Aujourd'hui j'ai donc exposé mon problème à ma formatrice en développement, nous avons pas mal planché dessus, mais sans vraiment de réponses ...

Le truc est que j'ai le même problème que je sois sous Mandriva (2008.1) ou OpenSUSE (11.0).

L'an dernier, j'utilisais le même OS qu' actuellement (la Suse dans une version antérieure) et je n'avais pas rencontré ce problème. (Pourtant, c'est bien moi qui avais installé le système sur cette station... si mes souvenirs sont bons.... et tout avait fonctionner sans le moindre soucis.)

Serait-ce un paquet de librairie passé à la trappe ? J'avoue être un peu dans l'ignorance total sur ce point là, j'ai toujours suivis -comme un étudiant bête et discipliné- la programmation et les devoirs demandé, sans jamais vraiment me poser la question de "Mais d'où ça vient le iostream.h? Ca sert à quoi?". Etc...

Merci,
Bonne soirée.
0
@bob031 : Merci de ta précieuse info !!

Voilà ce que contient mon "/usr/include/c++/4.3/backward" :

foxysama@fox-nr21s:/usr/include/c++/4.3/backward> ls -l
total 116
-rw-r--r-- 1 root root  9666 juin  6 20:43 auto_ptr.h
-rw-r--r-- 1 root root  2665 juin  6 20:43 backward_warning.h
-rw-r--r-- 1 root root  6942 juin  6 20:43 binders.h
-rw-r--r-- 1 root root  4516 juin  6 20:43 hash_fun.h
-rw-r--r-- 1 root root 17935 juin  6 20:43 hash_map
-rw-r--r-- 1 root root 17355 juin  6 20:43 hash_set
-rw-r--r-- 1 root root 32981 juin  6 20:43 hashtable.h
-rw-r--r-- 1 root root  5769 juin  6 20:43 strstream
foxysama@fox-nr21s:/usr/include/c++/4.3/backward> 


Pas de iostream.h ni de conio ou autre bibliothèque connu ...

Un problème docteur ?
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
3 déc. 2008 à 20:53
1) il faut chercher avec la commande find pour savoir si le fichier iostream.h existe quelque part dans ton système. Si tu as des doute sur le fait que tu n'as pas eu de résultat dans le répertoire /usr/include, fait une recherche dans / . Tu peux tester ta commande find avec un ficheir qui existe, si tu as un retour, ta commande find est ok !

2) il faut savoir de quand date ton script que tu as probablement récuperé ! Tester un vieux script de 20 ans avec la dernière version gcc, c'est peut-être pas la meilleure chose !

3) apparemment il te manque des bibliothèques ....
0
Yes, la commande find marche bel et bien !

foxysama@fox-nr21s:/usr/include/c++/4.3/backward> find /usr/include/c++/4.3/backward
/usr/include/c++/4.3/backward
/usr/include/c++/4.3/backward/auto_ptr.h
/usr/include/c++/4.3/backward/hashtable.h
/usr/include/c++/4.3/backward/hash_map
/usr/include/c++/4.3/backward/binders.h
/usr/include/c++/4.3/backward/hash_fun.h
/usr/include/c++/4.3/backward/strstream
/usr/include/c++/4.3/backward/backward_warning.h
/usr/include/c++/4.3/backward/hash_set


Donc je n'ai bel et bien pas de fichiers iostream.h dans ce dossier.... ce qui reste problématique ...


Et le script n'est pas ancien, je l'ai écrit vite fait pour tester si il trouvait la(les) bibliothèques! (J'ai besoin de 'conio.h' pour pouvoir utiliser mon 'getch()', je crois...)

Merci en tout cas, c'est peut-être pour toi pas grand chose, mais au moins je sais que ces foutus bilibothèque ne sont pas par default sur les système que j'utilise. Thanks.
0
Comment ajouter les bibliotheques manquantes?

Un paquet de bibliotheques peut être ?

Je ne vois pas cela sous YaST sous OpenSUSE ..
0
razuki Messages postés 242 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 5 décembre 2012 1
15 mai 2009 à 17:58
Bonjour à tous,

Je débute avec C++. Je travaille sur ubuntu 8.10 et j'ai fait "built essential" permettant d'installer gcc, g++.

J'ai un problème à la compilation. Quand je compile mon prog echange_adr.cpp avec la commande :
g++ echange_adr.cpp -o echange_adr,
il m'affiche une erreur :
echange_adr.cpp: In function ‘int main()’:
echange_adr.cpp:16: erreur: ‘cout’ was not declared in this scope


Je me suis dit alors que peut être le compilateur c++ ne trouve pas l'endroit ou se trouve
<iostream> qui prend en charge cout.

J'ai fait la recherche manuellement pour localiser <iostream> :
find /usr/include/ -name "iostream"
et le résultat :
/usr/include/c++/4.3/iostream

J'ai recompilé avec l'option -I (puis avec -L) en faisant :
g++ echange_adr.cpp -o echange_adr -I /usr/include/c++/4.3/iostream mais pareil, toujours la meme erreur :
echange_adr.cpp: In function ‘int main()’:
echange_adr.cpp:15: erreur: ‘cout’ was not declared in this scope
echange_adr.cpp:16: erreur: ‘cin’ was not declared in this scope



La bibliothèque n'est elle donc pas installée sur le système alors qu'au début j'ai bien fait :
build essential
Si oui, je fais comment pour installer cette bibliothèque manquante ( iostream ) et surement, par la suite, il manque aussi d'autres bibliothèques de bases.

Foxysana, a tu identifier ton problème ? a tu trouvé une solution

merci d'avance
0
Lorsque tu sauvegarde ton fichier, après avoir tapé le nom du fichier, pense à mettre ".cpp" derrière
0
the F Messages postés 150 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 22 mars 2011 13
15 mai 2009 à 18:57
A tout les internautes : Pensez a utiliser code::blocks ,effcace et complet ?
-1