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 :

implicit declaration of function


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 32
    Par défaut [RESOLU] implicit declaration of function
    Bonjour ...

    j'aurai voulu savoir comment faire pour que disparaisse le message suivant lors de la compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning : implicit declaration of function 'nom_de_la_fonction'
    Je sais qu'il y a une histoire d'include de .h à faire mais je m'y suis cassé les dents !!!
    Aidez moi siouplait


    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Par défaut
    ce warning arrive lorsque le compilo detecte une fonction
    dont il ne trouve pas le prototype....

    normalement son prototype est declares dans header.h
    par exemple. Comme tu le dis toi meme et tu dois dans ton .c faire
    #include <header.h>

    il y a une autre solution qui consiste a faire dans ton .c
    externe void nom_de_la_fonction(....);

    c'est dans le cas ou tu ferais une utilisation tres ponctuelle
    d'une lib et que tu n;as pas envie d'inclure tout le .h associe

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 32
    Par défaut
    seulement la fonction n'est pas interne au .c dans lequel elle est appelée...
    Elle est écrite dans un autre .c !

    ya pas moyen de lier ces deux .c pour faire disparaître le message?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Par défaut
    c'est justement pour ca qu'il faut inclure un .h ou faire un
    extern dans ton fichier .c !

    mais je ne suis pas sur de tout comprendre:
    c'est juste un warning que tu as ou tu plantes apres lors du link ?

    c'est quoi exatctement le prototype de la fonction que tu utilises ?

  5. #5
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 32
    Par défaut
    ça ne plante pas mais je veux dégager le warning

    Dans mon prog, chaque .h correspond à un .c

    dans prog_ou_ya_la_fonction.c il y a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     #include "prog_ou_ya_la_fonction.h"
    et dans prog_qui_appelle_la_fonction.c il y a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     #include "prog_qui_appelle_la_fonction.h"
    C'est dans les .h que se trouvent les include de stdio.h, malloc.h, ...
    Seulement je sais pas comment faire pour que les 2 .h soient reliés afin que ce warning disparaisse

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Par défaut
    Comme le dit vagabond, tu crees un fichier .h

    Dans fichier_toto.h tu mets le prototype de ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void mafonction (int param1, char param2);
    Dans fichier_toto.c tu developpes ta fonction apres avoir inclu le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include fichier_toto.h
    ......
     
    void mafonction (int param1, char param2)
    {
    .....
    }
    Puis dans ton autre fichier .c tu appelles ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include fichier_toto.h
    ......
     
    void main ()
    {
    ....
         mafonction(monentier, monchar);
    ....
    }
    Ensuite tu as peut-etre un probleme au niveau de la compilation ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Par défaut
    alors dans prg_qui_appelle_la_fonction.c:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <prog_ou_ya_la_fonction.h>

  8. #8
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 32
    Par défaut
    Merci Vagabon et Jack69 !

    Con que je suis j'avais pas écrit le prototypage de la fonction dans le header du .c où elle était implémentée

    Merci !!!

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 16/01/2007, 17h47
  2. [gcc/warning] implicit declaration of function ‘close’
    Par TabrisLeFol dans le forum Réseau
    Réponses: 4
    Dernier message: 09/01/2007, 20h48
  3. Réponses: 3
    Dernier message: 18/10/2006, 20h42
  4. implicit declaration of function!
    Par moon93 dans le forum C
    Réponses: 48
    Dernier message: 16/06/2006, 14h55
  5. [Dev c++ 4] implicite declaration of function "int kbhi
    Par Torpedox dans le forum Dev-C++
    Réponses: 5
    Dernier message: 01/01/2003, 13h37

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