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: erreur de syntaxe avant « size_t »


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut erreur: erreur de syntaxe avant « size_t »
    Bonjour,

    Je travaille sur une Centos 4 et j'essaie de compiler une bibliothèque (la dernière version de la libmnl). Après quelques manips pour résoudre des messages d'erreur, je tombe sur le message cité en titre.
    Trouvant étrange qu'il ne reconnaisse pas le size_t, je teste avec un petit executable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
     
    int
    main (int argc,
          char *argv[])
    {
      size_t s;
      s = sizeof (long);
      printf ("Taille d'un long: %ul\n", s);
      return 0;
    }
    Mais rien à faire. Le compilateur gcc me retourne une tétrachiée de messages d'erreur.

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    [root@localhost libmnl]# gcc -g -o /tmp/p /tmp/p.c
    In file included from /usr/include/_G_config.h:44,
                     from /usr/include/libio.h:32,
                     from /usr/include/stdio.h:72,
                     from /tmp/p.c:1:
    /usr/include/gconv.h:72: erreur: erreur de syntaxe avant « size_t »
    /usr/include/gconv.h:88: erreur: erreur de syntaxe avant « size_t »
    /usr/include/gconv.h:97: erreur: erreur de syntaxe avant « size_t »
    /usr/include/gconv.h:174: erreur: erreur de syntaxe avant « size_t »
    /usr/include/gconv.h:177: erreur: erreur de syntaxe avant un élément lexical « } »
    In file included from /usr/include/libio.h:32,
                     from /usr/include/stdio.h:72,
                     from /tmp/p.c:1:
    /usr/include/_G_config.h:47: erreur: champ « __cd » est de type incomplet
    /usr/include/_G_config.h:50: erreur: champ « __cd » est de type incomplet
    In file included from /usr/include/stdio.h:72,
                     from /tmp/p.c:1:
    /usr/include/libio.h:328: erreur: erreur de syntaxe avant « size_t »
    /usr/include/libio.h:332: erreur: « size_t » non déclaré ici (hors de toute fonction)
    /usr/include/libio.h:334: erreur: erreur de syntaxe avant un élément lexical « } »
    /usr/include/libio.h:360: erreur: erreur de syntaxe avant « size_t »
    /usr/include/libio.h:369: erreur: erreur de syntaxe avant « size_t »
    /usr/include/libio.h:485: erreur: erreur de syntaxe avant « _IO_sgetn »
    /usr/include/libio.h:485: erreur: erreur de syntaxe avant « size_t »
    In file included from /tmp/p.c:1:
    /usr/include/stdio.h:304: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdio.h:311: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdio.h:353: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdio.h:357: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdio.h:605: erreur: erreur de syntaxe avant « fread »
    /usr/include/stdio.h:605: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdio.h:611: erreur: erreur de syntaxe avant « fwrite »
    /usr/include/stdio.h:611: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdio.h:633: erreur: erreur de syntaxe avant « fread_unlocked »
    /usr/include/stdio.h:633: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdio.h:635: erreur: erreur de syntaxe avant « fwrite_unlocked »
    /usr/include/stdio.h:635: erreur: erreur de syntaxe avant « size_t »
    In file included from /tmp/p.c:3:
    /usr/include/string.h:39: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:43: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:52: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:59: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:62: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:66: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:88: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:96: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:102: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:109: erreur: erreur de syntaxe avant « strxfrm »
    /usr/include/string.h:110: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:184: erreur: erreur de syntaxe avant « strcspn »
    /usr/include/string.h:188: erreur: erreur de syntaxe avant « strspn »
    /usr/include/string.h:242: erreur: erreur de syntaxe avant « strlen »
    /usr/include/string.h:281: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:288: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:292: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:296: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:299: erreur: erreur de syntaxe avant « size_t »
    /usr/include/string.h:329: erreur: erreur de syntaxe avant « size_t »
    In file included from /tmp/p.c:4:
    /usr/include/stdlib.h:140: erreur: erreur de syntaxe avant « __ctype_get_mb_cur_max »
    In file included from /usr/include/sys/types.h:133,
                     from /usr/include/stdlib.h:433,
                     from /tmp/p.c:4:
    /usr/include/linux/time.h:10: erreur: erreur de syntaxe avant « time_t »
    /usr/include/linux/time.h:12: erreur: erreur de syntaxe avant un élément lexical « } »
    /usr/include/linux/time.h:18: erreur: erreur de syntaxe avant « time_t »
    /usr/include/linux/time.h:44: erreur: champ « it_interval » est de type incomplet
    /usr/include/linux/time.h:45: erreur: champ « it_value » est de type incomplet
    /usr/include/linux/time.h:49: erreur: champ « it_interval » est de type incomplet
    /usr/include/linux/time.h:50: erreur: champ « it_value » est de type incomplet
    In file included from /usr/include/sys/select.h:46,
                     from /usr/include/sys/types.h:216,
                     from /usr/include/stdlib.h:433,
                     from /tmp/p.c:4:
    /usr/include/bits/time.h:70: erreur: nested redefinition of `struct timeval'
    In file included from /usr/include/sys/types.h:266,
                     from /usr/include/stdlib.h:433,
                     from /tmp/p.c:4:
    /usr/include/bits/pthreadtypes.h:48: erreur: erreur de syntaxe avant « size_t »
    /usr/include/bits/pthreadtypes.h:51: erreur: erreur de syntaxe avant « __stacksize »
    In file included from /tmp/p.c:4:
    /usr/include/stdlib.h:450: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:480: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:584: erreur: erreur de syntaxe avant « __size »
    /usr/include/stdlib.h:586: erreur: erreur de syntaxe avant « __nmemb »
    /usr/include/stdlib.h:595: erreur: erreur de syntaxe avant « size_t »
    In file included from /usr/include/stdlib.h:606,
                     from /tmp/p.c:4:
    /usr/include/alloca.h:33: erreur: erreur de syntaxe avant « __size »
    In file included from /tmp/p.c:4:
    /usr/include/stdlib.h:611: erreur: erreur de syntaxe avant « __size »
    /usr/include/stdlib.h:768: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:773: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:846: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:849: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:853: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:857: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:866: erreur: erreur de syntaxe avant « size_t »
    /usr/include/stdlib.h:869: erreur: erreur de syntaxe avant un élément lexical /usr/include/stdlib.h:869: erreur: erreur de syntaxe avant un élément lexical « * »
    /usr/include/stdlib.h:873: erreur: erreur de syntaxe avant « wchar_t »
    /usr/include/stdlib.h:877: erreur: erreur de syntaxe avant « mbstowcs »
    /usr/include/stdlib.h:877: erreur: erreur de syntaxe avant un élément lexical « * »
    /usr/include/stdlib.h:880: erreur: erreur de syntaxe avant « wcstombs »
    /usr/include/stdlib.h:881: erreur: erreur de syntaxe avant un élément lexical « * »
    /tmp/p.c: In function `main':
    /tmp/p.c:10: erreur: erreur de syntaxe avant « s »
    /tmp/p.c:11: erreur: « s » non déclaré (première utilisation dans cette fonction)
    /tmp/p.c:11: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
    /tmp/p.c:11: erreur: pour chaque fonction dans laquelle il apparaît.)
    /tmp/p.c: At top level:
    /usr/include/gconv.h:176: attention : on assume que le tableau « __data » n'a qu'un seul élément
    Est-ce que vous savez pourquoi?

    Merci

    PS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uname -r => 2.6.9-103.EL

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    ce n'est pas size_t qui n'est pas reconnu mais il y a une erreur de syntaxe avant ce token.
    Tu as downloadé une version test de la bilbiothèque puisqu'apparemment ça plante dès que tu inclus un header de celle-ci ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut kwariz,

    Les messages d'erreur que j'ai affiché proviennent de la compilation du petit
    exécutable juste avant.
    Je les retrouve lorsque j'essaie de compiler la libmnl.
    Sinon j'ai effectivement téléchargé la lib avec git :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    git clone git://git.netfilter.org/libmnl
    Je pense qu'il s'agit d'une version stable.

    Mon interprétation du message "erreur: erreur de syntaxe avant « size_t »",
    c'est que le compilateur ne reconnait pas le type size_t. Peut_être le comprend-il comme une variable et dit qu'il veut un type avant "size_t".

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    On dirait bien que c'est bien sur size_t qu'il plante, dans un header inclus par <stdio.h>.
    Ce qui veut dire que même un programme minimal montrerait les mêmes erreurs:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int
    main (void)
    {
      return 0;
    }
    Il est possible aussi que le conflit soit sur autre chose, par exemple un GCC réglé de telle façon qu'il n'accepte pas les déclarations de variable au milieu d'une fonction, ou d'autres syntaxes spécifiques à GNUC ou C99 qui seraient exploitées par gconv.h.
    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.

  5. #5
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour,

    Si le problème vien de size_t qui n'est pas définie.

    ajoute -D'size_t=unsigned int' en option à gcc.
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  6. #6
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Il faut tester le programme proposé par Medinoc pour investiguer plus loin.
    La bibliothèque compile avec les options -DHAVE_CONFIG_H -I. -I../../src -I.. -D_FILE_OFFSET_BITS=64 -D_REENTRANT -I../../include -Wall -Waggregate-return -Wmissing-declarations -Wmissing-prototypes -Wshadow -Wstrict-prototypes -Wformat=2 -pipe -fvisibility=hidden -g -O2 -fPIC -DPIC.

    Tu as fait d'autres updates ? Quelle est la version de ta glibc ?

    (je viens d'essayer de créer la bibliothèques, ça c'est bien déroulé).

    @vincent.mbg : c'est une mauvaise idée de faire une sorte de traitement symptomatique, et ce define sans connaître la plateforme (en plus avec un -D_FILE_OFFSET_BITS=64 un unsigned int risque de planter ...)

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai tenté de recompiler le programme. Il semble que l'erreur avec size_t
    ait disparu pour l'instant. Je ne peux pas l'expliquer vraiment (pour l'instant je ne fais que modifier les variables C_CONFIG_PATH et LD_LIBRARY PATH ainsi que le fichier configure.ac an ajoutant un chemin pour la macro LIBTOOL).
    Comme je n'en ai pas encore fini avec la libmnl, je continue et je verrai bien si ce souci revient.

Discussions similaires

  1. Erreur "erreur de syntaxe dans la clause from"
    Par laaroussi1 dans le forum Accès aux données
    Réponses: 10
    Dernier message: 18/07/2011, 20h55
  2. pas d'erreur d'un echo avant header('location:)';
    Par __fabrice dans le forum Langage
    Réponses: 1
    Dernier message: 18/04/2008, 12h03
  3. Réponses: 1
    Dernier message: 15/06/2007, 02h23
  4. ou est l'erreur dans cette syntaxe svp ?
    Par delavega dans le forum ASP
    Réponses: 2
    Dernier message: 29/05/2007, 13h03
  5. Erreur 3061 - pb syntaxe?
    Par SylvainJ dans le forum Access
    Réponses: 3
    Dernier message: 13/07/2006, 14h14

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