Erreur de compilation pour serpent
Fermé
osmi2013
Messages postés
4
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
2 avril 2013
-
Modifié par Chris 94 le 14/03/2013 à 17:14
osmi2013 Messages postés 4 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 2 avril 2013 - 19 mars 2013 à 09:48
osmi2013 Messages postés 4 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 2 avril 2013 - 19 mars 2013 à 09:48
A voir également:
- Erreur de compilation pour serpent
- Erreur 0x80070643 - Accueil - Windows
- Jeu serpent pomme - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur vidéo freebox ✓ - Forum TV & Vidéo
4 réponses
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 15/03/2013 à 10:23
Modifié par [Dal] le 15/03/2013 à 10:23
Bonjour osmi2013,
Ce programme n'est sans doutes pas le meilleur code source pour apprendre.
Vu l'ancienneté des outils sur lesquels il tourne, il a même peut-être été rédigé avant que le standard ANSI du C ne voit le jour, et en tout cas, il fait usage de fonctions non standard du C propres à Borland, et le style du programmeur laisse une grande place à la discussion.
Sinon, il est probable que le compilateur t'avertisse du fait que en définissant les prototypes des fonctions de la façon suivante :
Cela signifie implicitement en C que la fonction doit implicitement retourner un "int", ce qu'elle ne fait pas, puisque la fonction check() programmée dans ce code ne retourne rien (elle devrait utiliser return pour renvoyer un entier ayant une signification quelconque dans le cadre du programme). Pareil pour les deux autres, qui ne renvoient rien non plus et se contentent de terminer le programme (avec exit).
Je pense que le programmeur a fait une erreur de conception, et qu'il aurait dû explicitement spécifier que ces fonctions ne renvoient rien, et donc un prototype void check(); et une implémentation void check() { /* suite du code */, ou même, tant qu'à faire, void check(void) pour explicitement indiquer aussi qu'il n'y a pas d'arguments à la fonction.
Faire pareil pour les deux autres fonctions.
Enfin, utiliser Turbo C++ pour apprendre le C d'aujourd'hui n'est peut-être pas le meilleur choix. La première version du standard C n'a été finalisée qu'en 1989. J'ignore quelle version de Turbo C tu utilises. En ce qui me concerne, ma dernière utilisation de ce compilateur (que j'ai d'ailleurs adoré avec Turbo Pascal aussi) date d'avant le standard :-)
Dal
Ce programme n'est sans doutes pas le meilleur code source pour apprendre.
Vu l'ancienneté des outils sur lesquels il tourne, il a même peut-être été rédigé avant que le standard ANSI du C ne voit le jour, et en tout cas, il fait usage de fonctions non standard du C propres à Borland, et le style du programmeur laisse une grande place à la discussion.
Sinon, il est probable que le compilateur t'avertisse du fait que en définissant les prototypes des fonctions de la façon suivante :
check();
Cela signifie implicitement en C que la fonction doit implicitement retourner un "int", ce qu'elle ne fait pas, puisque la fonction check() programmée dans ce code ne retourne rien (elle devrait utiliser return pour renvoyer un entier ayant une signification quelconque dans le cadre du programme). Pareil pour les deux autres, qui ne renvoient rien non plus et se contentent de terminer le programme (avec exit).
Je pense que le programmeur a fait une erreur de conception, et qu'il aurait dû explicitement spécifier que ces fonctions ne renvoient rien, et donc un prototype void check(); et une implémentation void check() { /* suite du code */, ou même, tant qu'à faire, void check(void) pour explicitement indiquer aussi qu'il n'y a pas d'arguments à la fonction.
Faire pareil pour les deux autres fonctions.
Enfin, utiliser Turbo C++ pour apprendre le C d'aujourd'hui n'est peut-être pas le meilleur choix. La première version du standard C n'a été finalisée qu'en 1989. J'ignore quelle version de Turbo C tu utilises. En ce qui me concerne, ma dernière utilisation de ce compilateur (que j'ai d'ailleurs adoré avec Turbo Pascal aussi) date d'avant le standard :-)
Dal
Stolous
Messages postés
30
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
15 septembre 2014
4
14 mars 2013 à 23:59
14 mars 2013 à 23:59
Bonsoir,
D'ou viennent tes fameuses fonctions?
si c'est de ton programme tu doit avoir un
désolé si je ne t'ai pas beaucoup t'aider.
D'ou viennent tes fameuses fonctions?
si c'est de ton programme tu doit avoir un
returndans ta fonction, sinon si c'est une Bibliothèque regarde dans ses sources.
désolé si je ne t'ai pas beaucoup t'aider.
Merci c'est jentille de m'aider.Je crois que j'ai essaye d'ecrire un programme sans pour autant comprendre l'algorithme qui est traduit j'aimerais que quelqu'un qui a deja vu ce programme ou fait un programme similaire me donne des astuces sur le types de variables qui doivent etre retourne dans les fonctions car elles n'appartiennent pas a la bibliotheque.
osmi2013
Messages postés
4
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
2 avril 2013
18 mars 2013 à 09:21
18 mars 2013 à 09:21
Merci Dal.J'ai fait ce que tu m'as dit j'ai utilise void pour indiquer au compiler que la fonction ne retoune rien du tout et la compilation a marche.Ensuite j'ai tente d'executer le programme mais je recois ces erreur:
linker Error:Undefined symbol _getmaxx in module Snake.CCP
linker Error:Undefined symbol _cleardevice in module Snake.CCP
linker Error:Undefined symbol _outtextxy in module Snake.CCP
linker Error:Undefined symbol _settextstyle in module Snake.CCP
linker Error:Undefined symbol _initgraph in module Snake.CCP
Merci de bien vouloir me dire pourquoi cela s'affiche.Et a ton avis quel compiler je devrais utiliser j'avais installe Microsoft Visual c++ 2010 express mais la version ne dure que 15 jour
.
linker Error:Undefined symbol _getmaxx in module Snake.CCP
linker Error:Undefined symbol _cleardevice in module Snake.CCP
linker Error:Undefined symbol _outtextxy in module Snake.CCP
linker Error:Undefined symbol _settextstyle in module Snake.CCP
linker Error:Undefined symbol _initgraph in module Snake.CCP
Merci de bien vouloir me dire pourquoi cela s'affiche.Et a ton avis quel compiler je devrais utiliser j'avais installe Microsoft Visual c++ 2010 express mais la version ne dure que 15 jour
.
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 18/03/2013 à 13:10
Modifié par [Dal] le 18/03/2013 à 13:10
Salut osmi2013,
1.
Tu disais dans ton message d'origine "J'ai copier sur un site un programme du jeu serpent que j'ai entrer dans turbo c++".
Alors, je pensais que tu utilisais Turbo C de Borland et non Visual c++ 2010 express.
Comme je le disais dans mon message précédent, ce programme fait usage de fonctions non standard du C propres à Borland. Il est donc normal qu'un autre environnement de développement ne les trouve pas, et ne puisse pas produire l'exécutable. Là, ton Visual C++ se plaint de ne pas savoir où trouver les fonctions graphiques. Pour le faire fonctionner tel quel, il faudrait utiliser Turbo C, qui intègre les bibliothèques d'origine.
Mais je ne te recommande pas de travailler avec un compilateur si ancien.
2.
Le code pourrait être utilisable avec WinBGIm (une bibliothèque fonctionnant avec le compilateur libre MinGW sous Windows (MinGW est le portage du compilateur gcc sous Windows), pour reproduire les fonctions graphiques Borland).
http://winbgim.codecutter.org/
A partir de cette page, tu peux te procurer deux environnements de développement gratuits, sous Windows, qui incluent cette bibliothèque, et d'autres émulant des fonctions issues de Borland aussi, "conio" et "conio2" aussi par exemple, pour t'éviter d'avoir à installer toi même ces bibliothèques compatibles avec les environnements Borland (ce qui peut être une tâche ardue pour un débutant).
http://quincy.codecutter.org/
ou
http://codeblocks.codecutter.org/
Si tu veux utiliser un compilateur moderne (c'est mieux), Codeblocks avec MinGW est très bien, et gratuit, et plus complet que Quincy, a priori (d'après ce que j'ai lu, car je n'ai jamais utilisé "Quincy").
La version de Codeblocks accessible sur ce site est une version adaptée (non issue du projet officiel Codeblocks http://www.codeblocks.org/), et qui inclue WinBGIm (avec d'autres choses utiles préinstallées, comme GLUT, wxwidgets, FLTK,...).
Après avoir installé cette version utilise le wizard, qui d'après ce que j'ai vu devrait se trouver sur File - New - Project - WinBGIm Project pour un projet pré-paramétré gérant cette bibliothèque, et copie ton code dans le main.
Tente la compilation, puis l'exécution. Avec un peu de chance, cela devrait passer :-) ou peut-être avec des adaptations minimales au code ou aux paramètres du prrojet.
Dal
1.
Tu disais dans ton message d'origine "J'ai copier sur un site un programme du jeu serpent que j'ai entrer dans turbo c++".
Alors, je pensais que tu utilisais Turbo C de Borland et non Visual c++ 2010 express.
Comme je le disais dans mon message précédent, ce programme fait usage de fonctions non standard du C propres à Borland. Il est donc normal qu'un autre environnement de développement ne les trouve pas, et ne puisse pas produire l'exécutable. Là, ton Visual C++ se plaint de ne pas savoir où trouver les fonctions graphiques. Pour le faire fonctionner tel quel, il faudrait utiliser Turbo C, qui intègre les bibliothèques d'origine.
Mais je ne te recommande pas de travailler avec un compilateur si ancien.
2.
Le code pourrait être utilisable avec WinBGIm (une bibliothèque fonctionnant avec le compilateur libre MinGW sous Windows (MinGW est le portage du compilateur gcc sous Windows), pour reproduire les fonctions graphiques Borland).
http://winbgim.codecutter.org/
A partir de cette page, tu peux te procurer deux environnements de développement gratuits, sous Windows, qui incluent cette bibliothèque, et d'autres émulant des fonctions issues de Borland aussi, "conio" et "conio2" aussi par exemple, pour t'éviter d'avoir à installer toi même ces bibliothèques compatibles avec les environnements Borland (ce qui peut être une tâche ardue pour un débutant).
http://quincy.codecutter.org/
ou
http://codeblocks.codecutter.org/
Si tu veux utiliser un compilateur moderne (c'est mieux), Codeblocks avec MinGW est très bien, et gratuit, et plus complet que Quincy, a priori (d'après ce que j'ai lu, car je n'ai jamais utilisé "Quincy").
La version de Codeblocks accessible sur ce site est une version adaptée (non issue du projet officiel Codeblocks http://www.codeblocks.org/), et qui inclue WinBGIm (avec d'autres choses utiles préinstallées, comme GLUT, wxwidgets, FLTK,...).
Après avoir installé cette version utilise le wizard, qui d'après ce que j'ai vu devrait se trouver sur File - New - Project - WinBGIm Project pour un projet pré-paramétré gérant cette bibliothèque, et copie ton code dans le main.
Tente la compilation, puis l'exécution. Avec un peu de chance, cela devrait passer :-) ou peut-être avec des adaptations minimales au code ou aux paramètres du prrojet.
Dal
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 18/03/2013 à 13:18
Modifié par [Dal] le 18/03/2013 à 13:18
Sinon, tu peux te procurer le "vrai" Codeblocks, plus à jour que celui-là, ici : http://www.codeblocks.org/downloads/26 (version mingw-setup pour une version incluant le compilateur), ou tu as un lien de téléchargement direct ici : https://www.commentcamarche.net/telecharger/developpement/6161-code-blocks/
Il te faudra ensuite installer les bibliothèques additionnelles dont tu as besoin.
Si tu ne sais pas comment faire, tu peux t'inspirer des indications de cette fiche pratique :
https://forums.commentcamarche.net/forum/affich-37594493-codeblocks-installer-une-bibliotheque-librairie
La version disponible sur codecutter.org t'évite de le faire, au prix d'avoir à utiliser une version moins à jour de Codeblocks et de MinGW (actuellement, la dernière mise à jour faite par l'auteur de ce re-packaging date de 2011).
Dal
Il te faudra ensuite installer les bibliothèques additionnelles dont tu as besoin.
Si tu ne sais pas comment faire, tu peux t'inspirer des indications de cette fiche pratique :
https://forums.commentcamarche.net/forum/affich-37594493-codeblocks-installer-une-bibliotheque-librairie
La version disponible sur codecutter.org t'évite de le faire, au prix d'avoir à utiliser une version moins à jour de Codeblocks et de MinGW (actuellement, la dernière mise à jour faite par l'auteur de ce re-packaging date de 2011).
Dal
osmi2013
Messages postés
4
Date d'inscription
jeudi 14 mars 2013
Statut
Membre
Dernière intervention
2 avril 2013
19 mars 2013 à 09:48
19 mars 2013 à 09:48
merci ennormement,je vais faire ce que tu m'as dit et on vera le resultat