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 pointer/string avec gcc


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut Problème pointer/string avec gcc
    Bonjour à tous,

    J'ai un petit problème à l'exécution de mon programme.
    Voici ma fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void lps_onVarDeclType(void *this, void *type)
    { 
        printf("lps_onVarDeclType: %s\n", (char*)type);
    }
    Le "void *type" est en fait un string, mon problème est que lorsque je le compile avec gcc, lors de l'exécution, j'ai un "segmentation fault":

    #0 0x2819cf9c in strlen () from /lib/libc.so.7
    #1 0x28195906 in open () from /lib/libc.so.7
    #2 0x0000000e in ?? ()
    #3 0x000000a5 in ?? ()
    #4 0x2806df2c in _rtld_error () from /libexec/ld-elf.so.1
    #5 0x28196a1b in vfprintf () from /lib/libc.so.7
    #6 0x28183643 in printf () from /lib/libc.so.7
    #7 0x08048ce4 in lps_onVarDeclType (this=0x0, type=0xe) at src/ast.c:331
    #8 0x0804ce5a in yy_11_ConventionalVarDecl (G=0x28404060, yytext=0x28493000 "Int", yyleng=3, thunk=0x284d71b0, core=0x28406000) at src/lps.c:3244
    #9 0x08049d2d in yyDone (G=0x28404060) at src/lps.c:556
    #10 0x08066564 in yyparse_from (G=0x28404060, yystart=0x80662fb <yy_Module>) at src/lps.c:8161
    #11 0x0806658d in yyparse (G=0x28404060) at src/lps.c:8181
    #12 0x08066753 in lps_parse (this=0x0, path=0x80667ef "test/test.ooc") at src/lps.c:8229
    #13 0x08048791 in main () at src/main.c:5

    Celui-ci est censé imprimer dans la console: "lps_onVarDeclType: Int" mais ce n'est pas le cas, alors que si je compile mon programme avec le compilateur "clang", tout fonctionne.
    Ma question est donc, y a-t-il quelque chose à faire "en plus" pour convertir un pointer en string avec gcc ?

    Merci d'avance pour votre réponse,
    Cordialement,
    Nicolas.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Difficile de dire quelque chose sans la séquence d'appel de la fonction. Si type est vraiment un tableau de char terminé par '\0', il n'y a aucune raison pour que ça plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    void lps_onVarDeclType(void *this, void *type)
    {
        printf("lps_onVarDeclType: %s\n", (char*)type);
    }
    int main(void)
    {
         char tab[]= "Int";
         lps_onVarDeclType(NULL,tab);
         return 0;
    }

  3. #3
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Citation Envoyé par nikobordx Voir le message
    #7 0x08048ce4 in lps_onVarDeclType (this=0x0, type=0xe) at src/ast.c:331
    Euh, un pointeur qui vaut 0xe, c'est bizarre ! Elle est appelé avec quoi cette fonction ?? À mon avis c'est un enum ou un int, mais en tout cas, pas avec un char *(valide).

Discussions similaires

  1. Problème de compilation avec gcc c++ 4.3.0
    Par micheldup dans le forum C++
    Réponses: 10
    Dernier message: 11/06/2008, 12h18
  2. Problème de compilation avec gcc et bibliothèques
    Par Fonzy007 dans le forum Linux
    Réponses: 1
    Dernier message: 13/02/2007, 12h14
  3. [linux] problème d'inclusion avec gcc
    Par wtfu dans le forum C
    Réponses: 3
    Dernier message: 12/07/2006, 14h49
  4. Problème pour compiler avec gcc
    Par Mick.Zen dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 28/06/2006, 14h05
  5. Réponses: 5
    Dernier message: 09/04/2006, 19h02

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