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 :

erreur de compilation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 29
    Par défaut erreur de compilation
    Bonjour,

    J'ai créer un petit programme de test concernant les listes chainées mais je rencontre une erreur de compilation .

    Voilà le programme:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #include <stdio.h>
    #include <stdlib.h>
     
    //fonction permet d'ajoutter un nouveau element à la liste et retourne la nouvelle liste 
    lliste ajoutterEntet(lliste liste,int valeur);
     
    //permet de parcourir toute la liste et afficher les valeur des elements
    void afficher(lliste liste);
     
    typedef struct element element;
     
    struct element{
     
        int val;
        struct element* nxt;
     
    };
     
     
    int main(){
     
    int i;
     
    element* lliste;
     
    for(i=0;i<10;i++){
     
          lliste=ajoutterEntet(lliste,i);
     
    }
     
    afficher(lliste);
     
     
    return 0;
     
    }
     
    lliste ajoutterEntet(lliste liste,int valeur){
     
       element* newelement=malloc(sizeof(element));
     
       newelement->val=valeur;
       newelement->nxt=liste;
     
       return newelement;
     
    }
     
    void afficher(lliste liste){
     
       element* parc=liste;
     
       printf("%d%",parc->val);
     
     
       while(parc->nxt !=NULL){
     
         parc=parc->next;
         printf("%d%",parc->val);
     
     }
     
    }

    l'erreur générée est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [user@localhost Bureau]$ gcc -o liste liste.c
    liste.c:5:8: erreur: expected ‘=’, ‘,’, ‘;’, ‘asmor ‘__attribute__’ before ‘ajoutterEntet’
    liste.c:6:22: erreur: expected ‘)’ before ‘liste’
    liste.c: In function ‘main’:
    liste.c:26:13: attention : assignment makes pointer from integer without a cast
    liste.c: Hors de toute fonction :
    liste.c:37:8: erreur: expected ‘=’, ‘,’, ‘;’, ‘asmor ‘__attribute__’ before ‘ajoutterEntet’
    liste.c:48:22: erreur: expected ‘)’ before ‘liste’

    j'ai essayé de trouver l'erreur mais je voix que tout est logique.

    Merci pour votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    lliste n'est pas un type, pourtant tu l'utilises comme type de retour ligne 5...

    ajoutterEntet retourne un pointeur sur un element

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 29
    Par défaut
    Oui vous avez raison

    ca se compile sans problème, mais lorsque j'execute je recois l'erreur suivante :


    Erreur de segmentation (core dumped).

    voilà le programme après modifications :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct element* element;
     
    element ajoutterEntet(element liste,int valeur);
     
    void afficher(element liste);
     
     
     
    struct element{
     
        int val;
        struct element* nxt;
     
    };
     
     
    int main(){
     
    int i;
     
    element lliste;
     
    for(i=0;i<10;i++){
     
          lliste=ajoutterEntet(lliste,i);
     
    }
     
    afficher(lliste);
     
     
    return 0;
     
    }
     
    element ajoutterEntet(element liste,int valeur){
     
       element newelement=malloc(sizeof(element));
     
       newelement->val=valeur;
       newelement->nxt=liste;
     
       return newelement;
     
    }
     
    void afficher(element liste){
     
       element parc=liste;
     
       printf("%d%",parc->val);
     
     
       while(parc->nxt !=NULL){
     
         parc=parc->nxt;
         printf("%d%",parc->val);
     
     }
     
    }

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    compiler avec -W -Wall ; lliste n'est pas initialisé.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Je n'ai pas regardé tout ton code, mais le fait de cacher des pointeurs dans des typedef te conduit à faire des erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element newelement=malloc(sizeof(element));
    Le mieux, c'est de ne justement jamais cacher les pointeurs.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 29
    Par défaut
    Voilà le resultat de la commande :

    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
    [user@localhost Bureau]$ gcc -w liste liste.c
    liste: In function `_start':
    (.text+0x0): multiple definition of `_start'
    /usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crt1.o:(.text+0x0): first defined here
    liste:(.rodata+0x0): multiple definition of `_fp_hw'
    /usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crt1.o:(.rodata+0x0): first defined here
    liste: In function `_fini':
    (.fini+0x0): multiple definition of `_fini'
    /usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crti.o:(.fini+0x0): first defined here
    liste:(.rodata+0x4): multiple definition of `_IO_stdin_used'
    /usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crt1.o:(.rodata.cst4+0x0): first defined here
    liste: In function `__data_start':
    (.data+0x0): multiple definition of `__data_start'
    /usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crt1.o:(.data+0x0): first defined here
    liste:(.rodata+0x8): multiple definition of `__dso_handle'
    /usr/lib/gcc/i686-redhat-linux/4.5.1/crtbegin.o:(.rodata+0x0): first defined here
    liste: In function `_init':
    (.init+0x0): multiple definition of `_init'
    /usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crti.o:(.init+0x0): first defined here
    /tmp/ccnoYY8O.o: In function `main':
    liste.c:(.text+0x0): multiple definition of `main'
    liste:(.text+0xb4): first defined here
    /tmp/ccnoYY8O.o: In function `ajoutterEntet':
    liste.c:(.text+0x4a): multiple definition of `ajoutterEntet'
    liste:(.text+0xfe): first defined here
    /tmp/ccnoYY8O.o: In function `afficher':
    liste.c:(.text+0x75): multiple definition of `afficher'
    liste:(.text+0x129): first defined here
    /usr/lib/gcc/i686-redhat-linux/4.5.1/crtend.o:(.dtors+0x0): multiple definition of `__DTOR_END__'
    liste:(.dtors+0x4): first defined here
    /usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored.
    /usr/bin/ld: error in liste(.eh_frame); no .eh_frame_hdr table will be created.
    collect2: ld a retourné 1 code d'état d'exécution
    L'option w je crois qu'elle permet le débogage, mais j'ai pas compris,qu'il est le rapport avec mon problème.Et ca représente quoi ces résultats ?

    Concernant la valeur NULL ca marche bien joker

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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