Probléme de lancement de programme lors de la compilation en C

Fermé
Nazimsh - Modifié le 15 avril 2019 à 23:47
 Nazimsh - 15 avril 2019 à 22:25
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:

#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

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 15 avril 2019 à 12:44
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) :

$ 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 - Rebuild
et fais un copier-coller du contenu intégral de l'onglet
Build log
en 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
.h
pour y mettre l'implémentation d'une fonction au lieu de te servir de cet entête
cal.h
seulement 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
0
Merci pour ta réponse
0