romca Posted September 18, 2005 Share Posted September 18, 2005 Salut a tous, voilà mon souci. j'ai installé la version 3 open de kylix sous mandrake10.1. Tout est ok mais quand je veux compilé des unités d'un projet, j'ai des erreurs que je ne comprends pas. Les codes sources à compiler sont bons car sous Borland (sous Windows), il n'y aucune erreur. je vous met une des unités a compiler avec un morceau du code d'erreur. Kylix me sort un onglet "stdio.h" avec ce code dans l'onglet et l'erreur "2141 :erreur de syntaxe de déclaration": Je pense que c'est parce que sûrement je n'ai pas les bonnes librairies qui doivent contenir les headers? mais si c'est cela lesquels et comment faire pour les installer et ou? Merci par avance. __BEGIN_NAMESPACE_STD /* The opaque type of streams. This is the definition used elsewhere. */ typedef struct _IO_FILE FILE; __END_NAMESPACE_STD #if defined __USE_LARGEFILE64 || defined __USE_SVID ||defined __USE_POSIX \ || defined __USE_BSD || defined __USE_ISOC99 || defined __USE_XOPEN \ || defined __USE_POSIX2 __USING_NAMESPACE_STD(FILE) #endif code source //------------------testcardio--------------------------------------------------------- #pragma hdrstop //fin des fichiers en tête précompilés(ici il n'y en a pas) #include <iostream.h> #include "coeur.h" //--------------------------------------------------------------------------- #pragma argsused //evite un message d'avertissement int main(int argc, char* argv[]) //on pourrait utiliser sans pbm void main() { Coeur *leCoeur; char cc; int tmp; leCoeur=new Coeur(1000); leCoeur->Resume(); //affichage menu cout<<"Taper s pour accelerer le rythme cardiaque"<<endl; cout<<"Taper c pour calmer le rythme cardiaque"<<endl; cout<<"Taper a pour stopper le Coeur"<<endl; cout<<"Taper x pour sortir"<<endl; //boucle de traitement du caractere entré do { cc>>cin; if(cc=='a') leCoeur->terminated(); if(cc=='s') leCoeur->majtempo(-10); if(cc=='c') leCoeur->majtempo(+10); }while(cc!='x'); delete leCoeur; //Destruction de l'objet cree dynamiquement return (0); } Link to comment Share on other sites More sharing options...
lorinc Posted September 18, 2005 Share Posted September 18, 2005 je croyais qu'en C++ onb ne devait plus mettre le .h dans les include (mais ça fait ben longtemps que j'ai pas fais de C++, d'ailleurs faut que je m'y remette ) sinon, peux-tu mettre ton code entre balise parce que j'ai pas eu le courage de le lire Link to comment Share on other sites More sharing options...
tuXXX Posted September 19, 2005 Share Posted September 19, 2005 je croyais qu'en C++ onb ne devait plus mettre le .h dans les include (mais ça fait ben longtemps que j'ai pas fais de C++, d'ailleurs faut que je m'y remette ) ça dépend des headers... Mais oui, normalement pour iostream c'est : #include <iostream> using namespace std; /* pour ne pas devoir utilsier std::cout, std::endl, std::cerr mais cout, endl, cerr */ et ça marche : #include <iostream> using namespace std; int main(int argc, char* argv[]) { char cc; cout<<"Touche?"<<endl; cin >> cc; if(cc=='a') cout << "bonne réponse!" << endl; else cout << "mauvaise réponse!" << endl; return 0; } (à compiler avec g++ ça se fait sans pb) (remarque aussi comment marche le cin...) //on pourrait utiliser sans pbm void main() Erreur, il faut obligatoirement que la fonction main retourne un int, en tout cas sous unix, avec les dernières versions de gcc (3/4) Link to comment Share on other sites More sharing options...
romca Posted September 19, 2005 Author Share Posted September 19, 2005 ok j'ai essayé tout ce que vous m'avez conseillé mais ça change rien? Auriez une autre idee? Code source modifié: //------------------testcardio--------------------------------------------------------- #pragma hdrstop //fin des fichiers en tête précompilés(ici il n'y en a pas) #include <iostream> #include "coeur.h" //--------------------------------------------------------------------------- #pragma argsused //evite un message d'avertissement using namespace std; int main(int argc, char* argv[]) //on pourrait utiliser sans pbm void main() { Coeur *leCoeur; char cc; int tmp; leCoeur=new Coeur(1000); leCoeur->Resume(); //affichage menu cout<<"Taper s pour accelerer le rythme cardiaque"<<endl; cout<<"Taper c pour calmer le rythme cardiaque"<<endl; cout<<"Taper a pour stopper le Coeur"<<endl; cout<<"Taper x pour sortir"<<endl; //boucle de traitement du caractere entré do { cin>>cc; if(cc=='a') leCoeur->terminated(); if(cc=='s') leCoeur->majtempo(-10); if(cc=='c') leCoeur->majtempo(+10); }while(cc!='x'); delete leCoeur; //Destruction de l'objet cree dynamiquement return (0); } Link to comment Share on other sites More sharing options...
lorinc Posted September 19, 2005 Share Posted September 19, 2005 oui, mais du coup, as-tu bien fais un coeur.h/coeur.cpp qui contient les déclaration de Coeur ? au fait, ça devrait aller dans programmation, ça... le problème ne vient pas de l'environnement linux Link to comment Share on other sites More sharing options...
romca Posted September 19, 2005 Author Share Posted September 19, 2005 [terminé]je pense que tu as raison, je me suis trompé de forum. je vais reposé la question dans "programmation". Désoléet merci quand même. Link to comment Share on other sites More sharing options...
gallean Posted September 19, 2005 Share Posted September 19, 2005 je déplace dans programmation ---------------------------------------------------- Salut,Et si t'essayes de compiler avec g++ ? Il te mettra surement des erreurs plus parlantes. g++ coeur.cpp main.cpp -o ton_prog Parce que les ide des fois ça fait des trucs bizzares. ---------------------------------- Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.