Probléme de lancement de programme lors de la compilation en C
Nazimsh
-
Nazimsh -
Nazimsh -
Bonsoir,
je suis un débutant en C , j' utilise Code:Blocks comme IDE pour programmer en c , et je voulais programais une mini calculatrice pour mes premier lancement dans ce domaine , j'ai creer un fichier main.c et un autre cal.h(header) , j'ai bien ecrit le code quand on le débogue on trouve aucune erreur mais y on a une choses , quand je clique sur Build&Run il ne se passe rien , RIEN DU TOUU!! , il y a aucain message erreur et il y a aucune console qui se lance donc mon programe ne s'est pas lanceé , donc j'ai consulté ce site Web pour résoudre ce problème , vouliez m'aidez svp le plus tot possible , et Merci d'avance ????????
voici le code de compilation dans le main.c:
et voici le code de compilation dans le cal.h :
je suis un débutant en C , j' utilise Code:Blocks comme IDE pour programmer en c , et je voulais programais une mini calculatrice pour mes premier lancement dans ce domaine , j'ai creer un fichier main.c et un autre cal.h(header) , j'ai bien ecrit le code quand on le débogue on trouve aucune erreur mais y on a une choses , quand je clique sur Build&Run il ne se passe rien , RIEN DU TOUU!! , il y a aucain message erreur et il y a aucune console qui se lance donc mon programe ne s'est pas lanceé , donc j'ai consulté ce site Web pour résoudre ce problème , vouliez m'aidez svp le plus tot possible , et Merci d'avance ????????
voici le code de compilation dans le main.c:
#include <stdio.h> #include <stdlib.h> #include <math.h> #include "cal.h" int main() { Menu(); int op; scanf("%d", &op); switch(op) { case 1: sum(); break; case 2: sub(); break; case 3: mul(); break; case 4: DIV(); break; case 5: SIN(); break; case 6: COS(); break; case 7: TAN(); break; case 8: POW(); break; case 9: SQRT(); break; default: printf("vouliez choisissez la bone operation\n"); } return 0; }
et voici le code de compilation dans le cal.h :
#ifndef CAL_H_INCLUDED #define CAL_H_INCLUDED void Menu() { printf("les operations desponibles : \n"); printf("1. +\n"); printf("2. -\n"); printf("3. *\n"); printf("4. /\n"); printf("5. sin\n"); printf("6. cos\n"); printf("7. tan\n"); printf("8. pow\n"); printf("9. sqrt\n"); printf("choisissez l'operation"); } #endif // CAL_H_INCLUDED
A voir également:
- Probléme de lancement de programme lors de la compilation en C
- Qu'est ce qui se lance au démarrage de l'ordinateur - Guide
- Comment lancer un programme automatiquement au démarrage de windows - Guide
- Mettre en veille un programme - Guide
- Fermer un programme de force - Guide
- Application de programmation - Guide
1 réponse
Salut Nazimsh,
Voilà les messages d'erreur que devrait produire la tentative de compilation de ton code avec gcc (testé en ligne de commande sous Linux avec gcc 6.3.0) :
Il est très étonnant que Codeblocks ne te fournisse aucun message d'erreur.
Fait
Sinon, il y a pas mal de problèmes dans ton code, le plus visible étant que tu appelles des fonctions inexistantes, un autre étant que et que tu utilises un
Pour t'aider à comprendre comment utiliser les .h, tu peux lire ce polycopié d'un professeur de l'Université du Michigan, David Kieras, que je trouve très clair :
http://umich.edu/~eecs381/handouts/CHeaderFileGuidelines.pdf
Dal
Voilà les messages d'erreur que devrait produire la tentative de compilation de ton code avec gcc (testé en ligne de commande sous Linux avec gcc 6.3.0) :
$ gcc -Wall main.c cal.h main.c: In function ‘main’: main.c:16:4: warning: implicit declaration of function ‘sum’ [-Wimplicit-function-declaration] sum(); ^~~ main.c:19:4: warning: implicit declaration of function ‘sub’ [-Wimplicit-function-declaration] sub(); ^~~ main.c:22:4: warning: implicit declaration of function ‘mul’ [-Wimplicit-function-declaration] mul(); ^~~ main.c:25:4: warning: implicit declaration of function ‘DIV’ [-Wimplicit-function-declaration] DIV(); ^~~ main.c:28:4: warning: implicit declaration of function ‘SIN’ [-Wimplicit-function-declaration] SIN(); ^~~ main.c:31:4: warning: implicit declaration of function ‘COS’ [-Wimplicit-function-declaration] COS(); ^~~ main.c:34:4: warning: implicit declaration of function ‘TAN’ [-Wimplicit-function-declaration] TAN(); ^~~ main.c:37:4: warning: implicit declaration of function ‘POW’ [-Wimplicit-function-declaration] POW(); ^~~ main.c:40:4: warning: implicit declaration of function ‘SQRT’ [-Wimplicit-function-declaration] SQRT(); ^~~~ cal.h: In function ‘Menu’: cal.h:6:2: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration] printf("les operations desponibles : \n"); ^~~~~~ cal.h:6:2: warning: incompatible implicit declaration of built-in function ‘printf’ cal.h:6:2: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’ /tmp/ccP3j7fb.o : Dans la fonction « .L4 » : main.c:(.text+0x12d) : référence indéfinie vers « sum » /tmp/ccP3j7fb.o : Dans la fonction « .L6 » : main.c:(.text+0x134) : référence indéfinie vers « sub » /tmp/ccP3j7fb.o : Dans la fonction « .L7 » : main.c:(.text+0x13b) : référence indéfinie vers « mul » /tmp/ccP3j7fb.o : Dans la fonction « .L8 » : main.c:(.text+0x142) : référence indéfinie vers « DIV » /tmp/ccP3j7fb.o : Dans la fonction « .L9 » : main.c:(.text+0x149) : référence indéfinie vers « SIN » /tmp/ccP3j7fb.o : Dans la fonction « .L10 » : main.c:(.text+0x150) : référence indéfinie vers « COS » /tmp/ccP3j7fb.o : Dans la fonction « .L11 » : main.c:(.text+0x157) : référence indéfinie vers « TAN » /tmp/ccP3j7fb.o : Dans la fonction « .L12 » : main.c:(.text+0x15e) : référence indéfinie vers « POW » /tmp/ccP3j7fb.o : Dans la fonction « .L13 » : main.c:(.text+0x165) : référence indéfinie vers « SQRT » collect2: error: ld returned 1 exit status $
Il est très étonnant que Codeblocks ne te fournisse aucun message d'erreur.
Fait
Build - Clean, puis
Build - Rebuildet fais un copier-coller du contenu intégral de l'onglet
Build logen bas de ton interface.
Sinon, il y a pas mal de problèmes dans ton code, le plus visible étant que tu appelles des fonctions inexistantes, un autre étant que et que tu utilises un
.hpour y mettre l'implémentation d'une fonction au lieu de te servir de cet entête
cal.hseulement pour déclarer son prototype, en mettant l'implémentation dans un autre fichier
cal.c. Si tu fais comme tu as fait, tu ne pourras pas utiliser la fonction dans plus d'un fichier source, ce qui n'est pas le but dans une approche modulaire de la programmation.
Pour t'aider à comprendre comment utiliser les .h, tu peux lire ce polycopié d'un professeur de l'Université du Michigan, David Kieras, que je trouve très clair :
http://umich.edu/~eecs381/handouts/CHeaderFileGuidelines.pdf
Dal
Nazimsh
Merci pour ta réponse