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 typedef ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Par défaut problème de typedef ?
    Bonjour tout le monde !

    Je suis entrain d'essayer de faire tourner FreeRTOS sur une carte HC12. Pour gérer les sources et la compilation, j'utilise metrowerks CodeWarrior.

    Voici mon problème lors de la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Error   : C1815: xTaskHandle not declared (or typename)
     
    main.c line 27
    Le typedef se trouve normalement dans un fichier .h pour être sûr, j'ai directement inséré ce typedef dans le code source du main, mais j'ai toujours la même erreur.

    Voici le code et le problème concerne le type xTaskHandle:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #include <hidef.h>      /* common defines and macros */
    #include <mc9s12dp256.h>     /* derivative information */
     
    //#include "FreeRTOS.h"
     
    typedef void * xTaskHandle;
     
    #pragma LINK_INFO DERIVATIVE "mc9s12dp256b"
     
     
     
    void tacheTest() {
     
      for(;;) {
     
        PORTB = 1 ;
      }
     
    }
     
     
    void main(void) {
      /* put your own code here */
      EnableInterrupts;
     
    unsigned char ucParameterToPass;
    xTaskHandle xHandle;
     
    xTaskCreate(tacheTest, "TEST", 8,  &ucParameterToPass, 6, &xHandle) ;
     
     
    vTaskStartScheduler();
     
    vTaskDelete(xHandle);
     
    vTaskEndScheduler();
     
    /*
      for(;;) {}  //wait forever 
      // please make sure that you never leave this function */
    }
    Auriez-vous une explication ? Car moi je ne vois aps du tout !

    merci d'avance Bonne journée !

  2. #2
    Membre émérite Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Par défaut
    Pour tester simplement ton typedef, j'ai fait :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef void * xTaskHandle;
     
     
    int main(void) {
    	xTaskHandle handler;
     
    	return 0;
    }

    ça marche nickel, donc la je vois pas trop d'où peut venir ton problème, mais ce qui est sûr c'est que ta façon d'écrire la fonction main() est incorrecte !

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int main(void);
    // ou
    int main(int argc, char **argv);

    Et rien d'autre !

    Es-tu sûr que ton typedef ne serait pas déjà défini dans l'un de tes fichiers d'en-tête ?

    Sinon, bon développement

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Par défaut
    Justement, le format du main devrait fonctionner. C'est celui qui est créé par CodeWarrior à la création du projet. De plus mes autres applis marche correctement comme ca.

    En ce qui concerne la provenance du "typedef", je l'ai justement sorti du fichier en-tête pour le mettre directement dans le main.c pour être sûr. Mais cela ne marche pas mieux

    J'vois vraiment pas le problème, car d'après moi il n'y a pas d'erreur de syntaxe (j'ai vérifié comme ce sont des sources télécharger sur le site de FreeRTOS)...


  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    C'est quoi ce
    qui tombe du ciel? C'est un #define habilement deguise?

  5. #5
    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
    Citation Envoyé par Spootnik
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int main(void);
    // ou
    int main(int argc, char **argv);

    Et rien d'autre !
    Pour les applications hébergées (hosted), oui. En embarqué (embedded) c'est différent.

    D'autres formes sont possibles, mais je ne veux pas les voir.

    Attention, une application tournant sous Linux embarquée est en mode 'hébergée'...

  6. #6
    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
    Citation Envoyé par omega67
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Error   : C1815: xTaskHandle not declared (or typename)
     
    main.c line 27
    <...>
    Auriez-vous une explication ? Car moi je ne vois aps du tout !
    Je ne vois rien qui explique cette erreur dans le code posté (est-ce bien un copié/collé), à moins qu'il y ait une redéfinition ou une macro dans un des deux headers.

    Pour moi, l'erreur est ailleurs, ou tu as une faute de frappe (2 caractères inversés dans un identificateur long est monnaie courante...)

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Par défaut
    Finalement, j'ai réussi à résoudre le problème... C'était tout simplement une question de chemin des en-tete. J'ai donc tout mis dans le même répertoire, mais la ca fait désordre

    En tout cas merci à vous

  8. #8
    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
    Citation Envoyé par omega67
    Finalement, j'ai réussi à résoudre le problème... C'était tout simplement une question de chemin des en-tete. J'ai donc tout mis dans le même répertoire, mais la ca fait désordre
    Horrible !

    Tous les compilateurs que je connais ont une option pour définir les chemins des includes :

    Par exemple :

    -Ichemin1 -Ichemin2 etc.

    Ca m'étonnerait que le tien n'ai pas ça. Tu as lu la doc ?

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

Discussions similaires

  1. Problème utilisation typedef
    Par Kasyon dans le forum Débuter
    Réponses: 1
    Dernier message: 01/03/2013, 11h06
  2. Réponses: 5
    Dernier message: 04/11/2010, 11h01
  3. problème rencontré avec Typedef
    Par kayenne77 dans le forum Débuter
    Réponses: 10
    Dernier message: 19/11/2008, 21h50
  4. Problème de typedef avec template
    Par Kaelian dans le forum Langage
    Réponses: 6
    Dernier message: 21/07/2008, 23h04
  5. problème avec un typedef
    Par salseropom dans le forum C
    Réponses: 7
    Dernier message: 19/12/2007, 10h33

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