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 de déclaration


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Par défaut problème de déclaration
    Salutations,

    j'ai un problème que je sais trivial mais qui me bloque totalement dans le développement de mon application. Je déclare des fonctions dans un fichier .c de cette facon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     #include "i2c.h"
     
    void AckI2C1(void)
    {
      SSP1CON2bits.ACKDT = 0;           // set acknowledge bit state for ACK
      SSP1CON2bits.ACKEN = 1;           // initiate bus acknowledge sequence
    }
    .....
    et le .h est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    /* ***** I2C1 ***** */
    void AckI2C1(void);
    Le compilateur me répond:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Error [1032] ')' expected in expansion of macro 'AckI2C1'
    qui correspond à :

    A closing parenthesis was expected when expanding the specified macro.
    Most likely cause is a missing parenthesis


    or ceci n'est pas censé être une macro et il ne me semble pas qu'il y ai de parenthese manquante.

    Si quelqu'un a une solution, pour info je developpe sur le compilateur C18 pour µcontroleur Microchip.

    Cordialement.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: problème de déclaration
    Citation Envoyé par dirty_boy
    j'ai un problème que je sais trivial
    Pas si sûr...
    mais qui me bloque totalement dans le développement de mon application. Je déclare des fonctions dans un fichier .c de cette facon
    Tu définis...

    http://emmanuel-delahaye.developpez....tm#definitions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "i2c.h"
     
    void AckI2C1(void)
    {
      SSP1CON2bits.ACKDT = 0;           // set acknowledge bit state for ACK
      SSP1CON2bits.ACKEN = 1;           // initiate bus acknowledge sequence
    }
    et le .h est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /* ***** I2C1 ***** */
    void AckI2C1(void);
    Le compilateur me répond:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Error [1032] ')' expected in expansion of macro 'AckI2C1'
    qui correspond à :

    A closing parenthesis was expected when expanding the specified macro.
    Most likely cause is a missing parenthesis


    or ceci n'est pas censé être une macro et il ne me semble pas qu'il y ai de parenthese manquante.
    Change le nom de la fonction et vérifie le résultat. Si c'est pareiil, c'est grave. Sinon, je soupçonne l'existence d'une définition de macro AckI2C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define AckI2C1 je ne sais quoi
    dans le header "i2c.h" ou dans un des headers inclus. Un petit 'grep' devrait lever le doute...

    Comme ça par exemple :

    http://www.victronics.cl/Inf_tecnica/Microchip/uC/Tools/MPLAB-C18/mcc18/h/i2c.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* AckI2C1
     * Generate bus ACK condition
     */
    #define AckI2C1()        SSP1CON2bits.ACKDT=0, SSP1CON2bits.ACKEN=1
    #define AckI2C AckI2C1
    Visiblement, tu es en train de réinventer la roue... Lit la doc, ça peut servir...

    http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf
    Page 26.

    Nota. Je ne connais pas ce microcontrôleur. Il m'a fallu 5 minutes de Google pour trouver la réponse. Je peux le faire, tu peux le faire.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Par défaut
    Salut,

    Je te rassure, je connais bien le user guide ainsi que le fichier d'en tête. Effectivement, le compilateur fait la confusion entre les librairies précompilées et celle que j'ai codé.
    Mais malgré le fait que j'indique clairement au compilateur quelle librairie utiliser, il se mélange les pinceaux.

    force à utiliser la librairie précompilée. force à utiliser la librairie se trouvant dans le projet.

    Le seul recours que j'ai trouvé à été de changer le nom des fichiers ( ou des fontions, ca marche aussi...) .

    Si je "réinventeé" la roue, c'est parceque la premiere tournait mal.
    En réalité, en cas de défaut du périphérique i2c, le programme restait coincer jusqu'au reset du watchdog... assez moyen. c'est pour cela que j'ai refait une librairie.

    Cordialement

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

Discussions similaires

  1. problème de déclaration de templates
    Par porco dans le forum C++
    Réponses: 4
    Dernier message: 14/10/2006, 21h12
  2. Inclusion de classes / problème de déclaration
    Par scal-80 dans le forum C++
    Réponses: 5
    Dernier message: 21/06/2006, 16h28
  3. Réponses: 2
    Dernier message: 27/05/2006, 12h13
  4. Réponses: 11
    Dernier message: 29/04/2005, 19h45
  5. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 10h17

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