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 du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut implicit declaration of function!
    bonjour, tous le monde,

    j'ai le Warning suivant quand je compile mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    src/Main.c: In function `Main':
    src/Main.c:13: warning: implicit declaration of function `Hello'
    pourtant que j'ai inclu le header du fichier qui contient la définition de la fonction hello!!!!!


    merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par moon93
    j'ai le Warning suivant quand je compile mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    src/Main.c: In function `Main':
    src/Main.c:13: warning: implicit declaration of function `Hello'
    pourtant que j'ai inclu le header du fichier qui contient la définition de la fonction hello!!!!!
    Mais en C, 'hello' n'est pas 'Hello'...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre averti Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Points : 396
    Points
    396
    Par défaut
    Fais voir le code.

    Sinon fais attention a la casse, le C est sensible aux majuscules / minuscules. Ca peut venir de la (et c'est souvent le cas).
    Don't worry, be serious.
    La vie est courte. Prenez votre temps.

    Jack.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut
    oui, j'ai bien respecté les MAj/Min, j'ai d"fini une simple fonction Hello dans un fcihier Entry.c
    et je l'appel depuis ma fonction Main de mon fichier Main.c, tout en incluant le fichier Entry.h

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par moon93
    oui, j'ai bien respecté les MAj/Min, j'ai d"fini une simple fonction Hello dans un fcihier Entry.c
    et je l'appel depuis ma fonction Main de mon fichier Main.c, tout en incluant le fichier Entry.h
    Mais oui... une fonction Main()...

    On veut voir le code. (Copié/collé ou mieux, joint).
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int Main(unsigned int size, StructPt *data)
    {
        bool test;
        test=0;
        OS_ScrInit();
        Hello();
        if(!test) 
        {
        exit (0x2000);
        }
        	return FCT_OK;
    }

  7. #7
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par moon93
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int Main(unsigned int size, StructPt *data)
    {
        bool test;
        test=0;
        OS_ScrInit();
        Hello();
        if(!test) 
        {
        exit (0x2000);
        }
        	return FCT_OK;
    }
    Rassure moi, ce n'est pas ton programme principal???
    Ca voudrait dire que tu as une fonction main() et une fonction Main()...
    Attention, car ce n'est pas très lisible!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut
    si, c'est mon pgm principale .Mais je travail sur un kit ou j'ai deux Entry point (Main et Entry)

  9. #9
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Quel est ton environnement de développement?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut
    j'utilise GCC3.4.3 sous windows, je compiler pour une cible ARM

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par moon93
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int Main(unsigned int size, StructPt *data)
    {
        bool test;
        test=0;
        OS_ScrInit();
        Hello();
        if(!test) 
        {
        exit (0x2000);
        }
        	return FCT_OK;
    }
    Code incomplet. Ne compile pas.
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut
    tu parle des includes?????

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 572
    Points
    41 572
    Par défaut
    et de l'absence de main() standard, sans doute.
    OS_ScrInit() doit également être disponible sur un compilo commun, ou retiré de ton code.
    Hello(), idem.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par moon93
    tu parle des includes?????
    Par exemple !

    C'est ton code. C'est toi qui sait ce qu'il faut pour qu'il compile...
    Pas de Wi-Fi à la maison : CPL

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut
    le 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
    15
    16
    17
    18
     
    #include "SDK30.H"
    #include "os.h"
    #include "Entry.h"
     
     
    int Main(unsigned int size, StructPt *data)
    {
        bool test;
        test=0;
        OS_ScrInit();
        Hello();
        if(!test) 
        {
        exit (0x2000);
        }
        	return FCT_OK;
    }
    le fichier Entry.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
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    #include "SDK30.H"
    #include "OEM.H"
     
     
    void entry(void)
    {
     
     
    	/*............*/
    };
     
    void Hello()
    {
     
    	FILE *visu; 
     
     
    	visu=fopen("DISPLAY","w");
     
                fprintf("Hello world\n");
     
    	fclose(visu) ;
    	};

  16. #16
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    editeur de liens ca te dit quelque chose ?
    tu compiles tes sources et tu link Hello.o avec Main.o

    compilation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gcc -c -Wall Hello.c -o Hello.o
    gcc -c -Wall Main.c -o Main.o
    linkage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc Main.o Hello.o -o Main
    et tu ajoutes un prototype de la fonction Hello() dans ton Main.c ou mieux dans un Main.h ou encore mieux tu includes le Entry.h qui a le prototype de la fonction Hello()

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 60
    Points
    60
    Par défaut
    toi ta pas lu le dernier message que j'ai poster, j bien inclu le fichier entry.h, ki contien le prototype de la fonction Hello,
    et pour la compilation et l'edition des lines, c evident

  18. #18
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par moon93
    toi ta pas lu le dernier message que j'ai poster, j bien inclu le fichier entry.h, ki contien le prototype de la fonction Hello,
    et pour la compilation et l'edition des lines, c evident
    Je viens de relire, je ne pouvais pas deviner que tu avais mis le prototype dans Entry.h. L'inclusion d'un .h n'assure pas que tu ais mis le prototype.

    Désolé.

  19. #19
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Puisque l'on a pas le Entry.h, Tu n'as pas mis des mots clefs préprocesseur qui ne déclarerai pas le prototype

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef __ENTRY__
    #define __ENTRY__
    ...
    #endif
    ou il te manquerai le 'n' qui fait la différence

  20. #20
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gnto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef __ENTRY__
    #define __ENTRY__
    ...
    #endif
    Attention identificateur réservé.

    http://emmanuel-delahaye.developpez....htm#id_reserve
    Pas de Wi-Fi à la maison : CPL

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 guillaume_pfr dans le forum C
    Réponses: 7
    Dernier message: 12/06/2003, 10h59
  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