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 :

je ne comprend pas un parse error


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 17
    Points
    17
    Par défaut je ne comprend pas un parse error
    salut !

    Je souhaite dans un programme lancer un nouveau thread concurrent à l'apellant.
    Pour cela, je fais appel à la fonction pthread_create dans la librairie <pthread.h>. Lors de la compilation, le message suivant apparait:
    In file included from /usr/local/lib/gcc-lib/m68k-elf/2.95.3/../../../../m68k-elf/sys-include/pthread.h:655,
    from gtriweb/mofication.c:1,
    from ./gtriweb/gtriweb.c:20:
    /usr/local/lib/gcc-lib/m68k-elf/2.95.3/../../../../m68k-elf/sys-include/bits/sigthread.h:32: parse error before `*'
    J'ouvre donc le fichier sigthread.h je me rend a la ligne 32, voici ce que j'y trouve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extern int pthread_sigmask (int __how,
    			    __const __sigset_t *__restrict __newmask,
    			    __sigset_t *__restrict __oldmask)__THROW;
    L'erreur se situe sur la ligne commencant par __const.
    Je ne trouve pas d'erreur particuliere.
    Quelqu'un aurait une idee du pourquoi de cette erreur.

    Voici comment je fais appel à la fonction pthread_create
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pthread_create( thread, NULL, (void*)*rampe_normale, NULL);
    thread est un pointeur sur pthread_t, rampe normale est une fonction retournant rien et ne demandant aucun argument.


    merci

    Bibi

  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 Re: je ne comprend pas un parse error
    Citation Envoyé par bibi_64
    Je souhaite dans un programme lancer un nouveau thread concurrent à l'apellant.
    Pour cela, je fais appel à la fonction pthread_create dans la librairie <pthread.h>. Lors de la compilation, le message suivant apparait:
    In file included from /usr/local/lib/gcc-lib/m68k-elf/2.95.3/../../../../m68k-elf/sys-include/pthread.h:655,
    from gtriweb/mofication.c:1,
    from ./gtriweb/gtriweb.c:20:
    /usr/local/lib/gcc-lib/m68k-elf/2.95.3/../../../../m68k-elf/sys-include/bits/sigthread.h:32: parse error before `*'
    J'ouvre donc le fichier sigthread.h je me rend a la ligne 32, voici ce que j'y trouve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extern int pthread_sigmask (int __how,
    			    __const __sigset_t *__restrict __newmask,
    			    __sigset_t *__restrict __oldmask)__THROW;
    L'erreur se situe sur la ligne commencant par __const.
    Je ne trouve pas d'erreur particuliere.
    Quelqu'un aurait une idee du pourquoi de cette erreur.
    Il est fort peu probable que l'erreur se situe à l'endoit où elle a été detectée (surtout si c'est un header appartenent à une implémentation). Il est par contre très possible qu'elle se situe ailleurs. Poste le code complet mais réduit au minimum montrant le défaut.
    Voici comment je fais appel à la fonction pthread_create
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pthread_create( thread, NULL, (void*)*rampe_normale, NULL);
    thread est un pointeur sur pthread_t, rampe normale est une fonction retournant rien et ne demandant aucun argument.
    Plutôt bizarre... En principe, on devrait avoir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       thread_t thread;
       pthread_create (&thread, NULL, rampe_normale, NULL);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void *rampe_normale (void *);
    http://emmanuel-delahaye.developpez.com/pthreads.htm
    Pas de Wi-Fi à la maison : CPL

  3. #3
    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 573
    Points
    41 573
    Par défaut
    Avec ce genre d'erreur, je dirais que __sigset_t n'est pas défini...
    Peut-être un header à inclure avant celui-ci... :
    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.

  4. #4
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Il faut plus de code pour comprendre !!

    D'autre part, le cast
    (void*)*rampe_normale
    est inutile, d'autant plus qu'il est faux : c'est (void *(*)(void *)) rampe_normale, meme si ton code fonctionne.

    Je vois pas comment ce code pourrait ne pas fonctionner, mais pour compiler il faut l'option -lpthread.
    En general, une parse error de ce type indique qu'un typedef n'est pas fait, mais il est fort probable que cela vienne de ton code dans le cas present.
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2008, 11h25
  2. Réponses: 8
    Dernier message: 20/09/2007, 17h31
  3. fatal error dans php je ne comprend pas
    Par patchouli dans le forum Langage
    Réponses: 10
    Dernier message: 09/01/2007, 23h34
  4. Une parse error que j'arrive pas à trouver
    Par Kerweb dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2006, 12h25
  5. error LNK 2019... comprends pas pourquoi ?
    Par MonsieurAk dans le forum MFC
    Réponses: 2
    Dernier message: 29/04/2005, 15h06

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