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, bien documentée sur Internet mais compliquée à mettre en œuvre


Sujet :

C

  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 114
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 114
    Par défaut Erreur de compilation, bien documentée sur Internet mais compliquée à mettre en œuvre
    Hello,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    gcc -o parseur parseur.c 
    parseur.c:112:2: error: expected specifier-qualifier-list before ‘typedef112 |  typedef struct {
          |  ^~~~~~~
    L'erreur ligne 112 correspond à la ligne 2 ci-dessous.
    Il y a plein de typedef au début du listing, et il y a celui-là qui coince :
    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
    typedef union {
    	typedef struct {
    		u8 on_curve: 1;
     
    		u8 x_short: 1;
    		u8 y_short: 1;
     
    		u8 repeat: 1;
     
    		u8 x_short_pos: 1;
    		u8 y_short_pos: 1;
     
    		u8 reserved1: 1;
    		u8 reserved2: 1;
    	};
    	u8 flag;
    } glyph_flag;
    source : https://handmade.network/forums/arti...tf_font_reader vers les 3/4 de la page.

    EDIT :
    En fait c'est très simple : il y a une instruction "typedef" de trop !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef union {
    	struct {
    		u8 on_curve: 1;
    ...
    Et ensuite appliquez les corrections du post 23154, en pensant à remplacer 2 fois s16 par i16 (le compilo me l'a signalé).

    Mais au bout du compte, ça foire quand même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ gcc -o parseur parseur.c 
    $ ./parseur 
    #contours	(xMin,yMin)	(xMax,yMax)	inst_length
            0	(0,0)		(0,256)	0
    #)	(  x  ,  y  )
    Erreur de segmentation
    Et pour débugger ça, bonsoir !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    tu typedef struct, sans lui donner de nom derrière
    soit tu typedef pour assigner un nom, soit tu fais une structure anonyme, mais les 2 vont pas ensembles
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 114
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 114
    Par défaut
    Citation Envoyé par Bousk Voir le message
    tu typedef struct, sans lui donner de nom derrière
    soit tu typedef pour assigner un nom, soit tu fais une structure anonyme, mais les 2 vont pas ensembles
    Vu, merci !


    Et pour ça, pas d'idée ?
    Citation Envoyé par Jipété Voir le message
    source : https://handmade.network/forums/arti...tf_font_reader vers les 3/4 de la page.

    Car au bout du compte, ça foire quand même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ gcc -o parseur parseur.c 
    $ ./parseur 
    #contours	(xMin,yMin)	(xMax,yMax)	inst_length
            0	(0,0)		(0,256)	0
    #)	(  x  ,  y  )
    Erreur de segmentation
    Et pour débugger ça, bonsoir !

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 778
    Par défaut
    Ben si, j'ai bien une idée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void print_glyph_outline(glyph_outline *outline) {
    	printf("#contours\t(xMin,yMin)\t(xMax,yMax)\tinst_length\n");
    	printf("%9d\t(%d,%d)\t\t(%d,%d)\t%d\n", outline->numberOfContours,
    			outline->xMin, outline->yMin,
    			outline->xMax, outline->yMax,
    			outline->instructionLength);
     
    	printf("#)\t(  x  ,  y  )\n");
    	int last_index = outline->endPtsOfContours[outline->numberOfContours-1];
    	for(int i = 0; i <= last_index; ++i) {
    		printf("%d)\t(%5d,%5d)\n", i, outline->xCoordinates[i], outline->yCoordinates[i]);
    	}
    }
    Comme outline->numbersOfContours vaut zéro (ligne 4 de l'output que tu montres), la ligne 9 va calculer un index de -1. Mais à la question "pourquoi outline->numbersOfContours vaut-il zéro ?", je n'ai évidemment pas de réponse.

    Edit: et une boucle d'affichage qui commence à zéro et qui utilise une condition <= me laisse toujours dubitatif.

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 114
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 114
    Par défaut
    Bonjour,

    c'est ma faute c'est ma faute c'est ma très grande faute : à force d'éditer des bouts de code avec un mini-éditeur rapide mais sans coloration syntaxique, je me suis fait avoir !

    Ce matin à la fraiche, décidé à prendre le taureau par les cornes, j'ai ouvert le .c avec Geany et là, stupéfaction, j'ai découvert qu'il y avait une bonne cinquantaine de lignes qui étaient présentées avec une couleur bleue qui ne trompe pas : elles étaient commentées ! Ne me demandez pas pourquoi, je ne m'en souviens pas.

    Toujours est-il que j'ai décommenté, enregistré, recompilé, exécuté et bingo !
    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
    $ gcc -o parseur parseur.c 
    $ ./parseur 
    #contours	(xMin,yMin)	(xMax,yMax)	inst_length
            2	(6,0)		(1257,1381)	125
    #)	(  x  ,  y  )
    0)	(  796,    0)
    1)	(  796,   49)
    2)	(  846,   59)
    3)	(  895,   83)
    4)	(  919,  126)
    5)	(  919,  162)
    6)	(  919,  196)
    7)	(  903,  275)
    8)	(  888,  324)
    9)	(  851,  453)
    10)	(  385,  453)
    11)	(  351,  355)
    12)	(  325,  281)
    13)	(  309,  205)
    14)	(  309,  174)
    15)	(  309,  114)
    16)	(  370,   58)
    17)	(  433,   49)
    18)	(  433,    0)
    19)	(    6,    0)
    20)	(    6,   49)
    21)	(   62,   58)
    22)	(  145,  170)
    23)	(  184,  274)
    24)	(  601, 1381)
    25)	(  759, 1381)
    26)	( 1099,  266)
    27)	( 1123,  188)
    28)	( 1160,  106)
    29)	( 1212,   60)
    30)	( 1257,   49)
    31)	( 1257,    0)
    32)	(  412,  540)
    33)	(  830,  540)
    34)	(  640, 1185)
    Maintenant, à quoi ça va me servir, pas la moindre idée. Mais au moins ça fonctionne.

    Désolé pour le dérangement et merci à tous.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/04/2014, 18h33
  2. Erreur d'accès aux documents sur infoview
    Par casim59 dans le forum Webi
    Réponses: 1
    Dernier message: 04/03/2011, 07h28
  3. Erreur de compilation du document de Mapping
    Par karim_sousse dans le forum Hibernate
    Réponses: 1
    Dernier message: 21/05/2009, 12h13
  4. Erreur de compilation des drivers sur noyau 2.6.18
    Par Guig74 dans le forum Administration système
    Réponses: 3
    Dernier message: 05/06/2007, 18h12
  5. Réponses: 1
    Dernier message: 23/05/2007, 12h47

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