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 :

[Préprocesseur] définition de fonction


Sujet :

C

  1. #1
    x0r
    x0r est déconnecté
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [Préprocesseur] définition de fonction
    Voilà le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #define ls_error(error) ls_error_f(error,__FILE__,__LINE__)
     
    void ls_error_f(char* error, char* file, int line)
    {
    	fprintf(stderr,"%s,%d: %s",file,line,error);
    }
     
    int main()
    {
      ls_error("Erreur test");
      return 0;
    }
    Lorsque je compile j'ai un warning (déclaration implicite de ls_error) et ensuite impossible de linker. Et forcément je ne sais pas d'ou provient l'erreur...

  2. #2
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut
    tu peu nous donner le message de warning exact de ton compilateur?

    sinon :
    as-tu inclut le fichier qui contient la déclaration/définition de la fonction ls_error(...) ?
    as-tu déclaré ta fonction void ls_error_f(char* error, char* file, int line) avant de l'utiliser dans main (quoique c'est pas obligé, en C, vu qu'elle est déclarée avant main()...)

    [EDIT]

    et __FILE__, __LINE__ , ils sont définis ??

  3. #3
    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 jbx2004
    as-tu inclut le fichier qui contient la déclaration/définition de la fonction ls_error(...) ?
    C'est une macro. Tu n'as pas lu le code ?
    as-tu déclaré ta fonction void ls_error_f(char* error, char* file, int line) avant de l'utiliser dans main (quoique c'est pas obligé, en C, vu qu'elle est déclarée avant main()...)
    C'est déjà dans le code...
    et __FILE__, __LINE__ , ils sont définis ??
    Oui, ça fait partie du langage C.
    Pas de Wi-Fi à la maison : CPL

  4. #4
    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 Re: [Préprocesseur] définition de fonction
    Citation Envoyé par x0r
    Lorsque je compile j'ai un warning (déclaration implicite de ls_error) et ensuite impossible de linker. Et forcément je ne sais pas d'ou provient l'erreur...
    A part qu'il manque <stdio.h> et que j'ajouterais un '\n' au message, ce code est correct:
    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
     
    #include <stdio.h>
     
    #define ls_error(error) ls_error_f(error,__FILE__,__LINE__)
     
    void ls_error_f (char *error, char *file, int line)
    {
       fprintf (stderr, "%s,%d: %s\n", file, line, error);
    }
     
    int main ()
    {
       ls_error ("Erreur test");
       return 0;
    }
    et il produit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    D:\DEVELOPP\X\X0R>bc proj.prj
    MAIN.C,12: Erreur test
    Le problème doit être ailleurs...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    x0r
    x0r est déconnecté
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Ah ben décidement dans la série des bêtises, je suis le champion en ce moment !!
    Encore une erreur bête: j'ai déclaré ls_error_f(...) à la fin de mon fichier et je n'avais pas mis de prototype ay début...

    Merci pour votre aide.
    @+

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

Discussions similaires

  1. [fminsearch] Définition de fonction
    Par sssssssam dans le forum MATLAB
    Réponses: 11
    Dernier message: 05/06/2008, 10h51
  2. Définition des fonctions librairies
    Par solar dans le forum C
    Réponses: 6
    Dernier message: 04/06/2008, 16h49
  3. [C#] définition de fonction
    Par dsr57 dans le forum C#
    Réponses: 4
    Dernier message: 05/07/2007, 08h50
  4. Réponses: 19
    Dernier message: 18/03/2007, 16h57
  5. Réponses: 2
    Dernier message: 17/08/2005, 11h20

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