IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème modulation


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut Problème modulation
    Bonjour tout le monde.
    Je suis désespéré, celà fait des heures que je cherche, je trouve pas, j'espère trouver ma réponse ici, voilà mon problème :
    J'apprend le C depuis très peu de temps, je suis les cours de C du site et j'en suis a la partie sur la programmation par modulation, c'est à dire tout simplement le fait de ne pas mettre toutes nos fonctions dans le même fichiers.

    Alors c'est sa mon problème, ce que j'en ai compris, je fais un fichier exemple.c dans lequel j'écris mes fonctions, ensuite je crée un autre fichier exemple.h dans lequel je met les prototypes de ces fonctions, et ensuite dans le main.c je met au début #include "exemple.h" et ensuite je peux appeler mes fonctions comme si elles étaient juste avant ma fonction main, c'est celà ?

    Donc, si je n'ai pas dit de bêtise je ne comprend vraiment pas, je vous montre l'exemple tout con que j'ai fais, si vous pourriez me dire pourquoi sa ne fonctionne pas vous me feriez faire un grand pas parce-que je suis vraiment bloqué à ce stade depuis 3 jours.



    fichier math.c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <stdlib.h>
    #include "math.h"
     
     
    //Ici je met les foctions permettant de faire le carré d'un nombre ect...
     
    double triple (double nt)
    {
     double resultat=0;
     resultat= 3 * nt;
     return resultat;
    }


    fichier math.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifndef MATH_H_INCLUDED
    #define MATH_H_INCLUDED
     
    double triple (double nt);
     
    #endif // MATH_H_INCLUDED

    fichier main.c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    #include <stdlib.h>
    #include "math.h"
     
     
    int main(int argc, char *argv[])
    {
        double nt=0;
     printf("tapes un nombre je te donnes son triple\n\n");
     scanf("%ld", &nt);
     printf("le triple du nombre que tu as taper est %lf\n\n", triple(nt));
       system("PAUSE");
        return 0;
    }




    Alors ?fouttez vous de moi oui mais aidez moi silvouplais....

    EDIT : J'ai oublié, voici le message d'erreur lors de la compilation :


    ||=== Test MODULATION, Debug ===|
    obj\Debug\main.o||In function `main'
    C:\Documents and Settings\xxxx\Bureau\Caca\C\Test MODULATION\main.c|11|undefined reference to `_triple'|
    ||=== Build finished: 1 errors, 0 warnings ===|

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    3 choses principales :

    • tu definis un double et tu lis avec un format entier (%d).
    • dans le .h, il faut mettre "extern double triple(double nt);"
    • Appeler son fichier "math.h" n'est pas une bonne idee, vu que c'est le nom de l'entete standard...


    et enfin il faut que tu linkes les 2 fichiers ensemble...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut C'est fait
    Oké, je l'ai fait, mais toujours le même message d'erreur.
    Pour math.h c'est pas grave puisqu'il fait la différence entre "math.h" et <math.h> non ?


    Pour link les 2 fichiers, je sais pa socmment on fait mais j'ai mit dans le propriétes de chacun "linf file" sa suffit ?

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par gadjopilo Voir le message
    Oké, je l'ai fait, mais toujours le même message d'erreur.
    Pour math.h c'est pas grave puisqu'il fait la différence entre "math.h" et <math.h> non ?
    Hum, à votre place, je ne tenterai pas le diable. La différence faite entre <> et "" intervient au niveau de la configuration du compilateur.

    Citation Envoyé par gadjopilo Voir le message
    Pour link les 2 fichiers, je sais pa socmment on fait mais j'ai mit dans le propriétes de chacun "linf file" sa suffit ?
    Quel est le compilateur / linkeur / IDE / environement utilisé ?
    Avec gcc, on aura un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -c main.c -o main.o
    gcc -c math.c -o math.o
    gcc main.o math.o -o main

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut Merci
    Merci pour ta réponse, alors j'ai modifié math.c et math.h par homme.c et homme.h j'ai essayé de linker les deux fichier, j'en suis arrivé a avoir 0 erro et 0 warning, mais l'executable ne s'est pas creer, 'jai compilé ect...je trouve pas, je suis sur Codeblocks.
    voilà le message après compilation

    -------------- Build: Debug in Test MODULATION ---------------

    Linking console executable: bin\Debug\Test MODULATION.exe
    homme.h.gch: file not recognized: File format not recognized
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)
    0 errors, 0 warnings

  6. #6
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    il y a une erreur dans le fichier homme.h

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut ok
    Main.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <stdio.h>
    #include <stdlib.h>
    #include "homme.h"
     
     
     
     
     
    int main(int argc, char *argv[])
    {
        double nt=0;
     printf("tapes un nombre je te donnes son triple\n\n");
     scanf("%ld", &nt);
     printf("le triple du nombre que tu as taper est %ld\n\n", triple(nt));
       system("PAUSE");
        return 0;
    }


    Homme.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <stdlib.h>
    #include "math.h"
     
     
    //Ici je met les foctions permettant de faire le carré d'un nombre ect...
     
    double triple (double nt)
    {
     double resultat=0;
     resultat= 3 * nt;
     return resultat;
    }

    Homme.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifndef HOMME_H_INCLUDED
    #define HOMME_H_INCLUDED
     
    extern double triple(double nt);
     
    #endif // HOMME_H_INCLUDED

    Où ?

  8. #8
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    dans homme.c il y a un include de math.h , il faut la remplacer aussi !!!!

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut ...
    J'ai corrigé, merci, mais, j'ai toujours le meme message et l'executable ne crée pas.

  10. #10
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par gadjopilo Voir le message
    J'ai corrigé, merci, mais, j'ai toujours le meme message et l'executable ne crée pas.
    ça marche chez moi !!!!

    le nom du fichier, il faut verifier si le nom est Homme.h ou homme.h

    et le recopier dans le main.c

    #include "Homme.h"
    ou
    #include "homme.h"

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut
    C'est homme.h partout, j'ai tout vérifié, mais je pense que maintenant sa marche puisqu'il m'affiche 0 erreur et 0 warning mais l'executable ne se crée pas.
    J'ai dèjà crée les executable mais seulement avec des logiciels contenant que le main.c, il doit me manque un truc pour que l'executable se crée, vous n'auriez pas une idée ?

  12. #12
    Invité(e)
    Invité(e)
    Par défaut
    Les fichiers homme.c et homme.h sont ils bien inclus dans le projet ? Il peut y avoir eut un problème suite au renommage de math.x en homme.x si ce n'a pas été fait depuis l'IDE.

    Est il possible de voir le makefile utilisé ?

  13. #13
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par gadjopilo Voir le message
    C'est homme.h partout, j'ai tout vérifié, mais je pense que maintenant sa marche puisqu'il m'affiche 0 erreur et 0 warning mais l'executable ne se crée pas.
    J'ai dèjà crée les executable mais seulement avec des logiciels contenant que le main.c, il doit me manque un truc pour que l'executable se crée, vous n'auriez pas une idée ?
    mais ça marche avec mon CodeBlocks, bizar


    Bon, je pense que l'erreur vient de CodeBlocks alors,
    1 - faire un clean du projet (Build -> Clean )
    2- verifier si tous les fichiers a compiler sont selectionnés pour la compilation
    (Project -> Properties / Build Targets)
    3- Si non selectionner tous les fichiers
    4 - compiler

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut .
    J'ai pas renommé j'ai supprimé math.h et math.c et refais homme.h et homme.c, je crois qu'il sont bien inclu oui puisque dans le dossier du programme il y a un fichier homme.h.gch

    vous pouvez voir la photo de l'IDE et du répertoire du programme ici, il faut la télécharger
    http://www.thelinkup.com/SharedPage....h=gnw4spu1aww7

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut .
    cmoibal, j'ai fait ce que tu as dit, mais pour sélectionner tous les fichiers, on peut pas.Et j'ai vérifié dans les propriétés comme tu as dis, les 3 fichiers sélectionnables sont sélectionnés (homme.c homme.h mainc.c)

  16. #16
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par gadjopilo Voir le message
    cmoibal, j'ai fait ce que tu as dit, mais pour sélectionner tous les fichiers, on peut pas.Et j'ai vérifié dans les propriétés comme tu as dis, les 3 fichiers sélectionnables sont sélectionnés (homme.c homme.h mainc.c)
    c'est quoi le problème, pour quoi il veut pas selectionné tous les fichiers ?

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut C'est bon !
    C'est bon !! Merci beaucoup pour votre aide.
    Au final j'ai refait un nouveau projet, j'ai fais copié coller de chaque fichier et sa fonctionne maintenant...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Redhat 5 problème module snapapi
    Par korova dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 02/04/2008, 22h40
  2. Problème module WIN32::OLE
    Par ffaure89 dans le forum Modules
    Réponses: 4
    Dernier message: 29/02/2008, 09h28
  3. Problème Module Geo::Google
    Par Pinoute dans le forum Modules
    Réponses: 1
    Dernier message: 03/01/2008, 14h48
  4. Réponses: 8
    Dernier message: 21/03/2007, 20h09
  5. problème module CGI.pm(debutant)
    Par Shyboy dans le forum Web
    Réponses: 2
    Dernier message: 13/06/2006, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo