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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 confirmé
    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
    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 émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    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