1. #1
    Candidat au Club
    Homme Profil pro
    Toulouse INP
    Inscrit en
    juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Toulouse INP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2018
    Messages : 2
    Points : 3
    Points
    3

    Par défaut compilation en C :error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token

    Bonjour,
    je suis face à un problème qui me tient depuis plusieurs heures.
    lorsque je tape gcc -c programmes_3ac dan sle shell on me renvoie l'erreur :
    $ gcc -c programmes_3a.c
    programmes_3a.c: In function 'decomp':
    programmes_3a.c:9:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
    { int somme;
    ^
    programmes_3a.c:27:1: error: expected '{' at end of input
    }
    ^
    Voici mon code (séparé en plusieurs fichiers. J'ai aussi le .h si ya besoin) :

    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
     
    #include <stdio.h>
     
     
     
    #include "fonc_3ac.h"
     
     
    int main()
    {	int somme;
    	int valeurs[7], nb_billets[7];
    	void decomp(int s, int val[], int nb_bill[]);
     
    	valeurs[0]=5;
    	valeurs[1]=10;
    	valeurs[2]= 20;
    	valeurs[3]= 50;
    	valeurs[4]= 100;
    	valeurs[5]= 200;
    	valeurs[6]= 500;
     
    	somme=885;
     
    	decomp(somme, valeurs, nb_billets);
     
    }
    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
     
    #include <stdio.h>
     
    void decomp(int s, int val[], int nb_bill[])
    {	int i, nb, reste, v;
    	for (i=0; i<7; i++)
    		{nb=0;
    		reste=s-nb*v;
    		while(reste>0)
    			{nb+=1;
    			reste=s-nb*v;}
    		nb_bill[i]=nb-1;
    		printf("il faut %d billets de %d euros", nb_bill[i], v);
    		s=s-nb_bill[i]*v;
    		printf("nouvelle somme : %d", s);
    		}
    }

    quand je mets un ';' avant l'accolade spécifiée, ca me renvoie une erreur de old-style declaration.

    Si quelqu'un peut m'aider, j'en serai bien reconnaissant !!! merci d'avance

  2. #2
    Candidat au Club
    Homme Profil pro
    Toulouse INP
    Inscrit en
    juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Toulouse INP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2018
    Messages : 2
    Points : 3
    Points
    3

    Par défaut

    Bon déjà dans le main ligne 12, je vais supprimer la redefinition de la fonction decomp. (on m'a dit de faire ca dans le chat, et de rajouter des headers guards dan sle fichie.h)

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 750
    Points : 3 757
    Points
    3 757

    Par défaut

    Bonjour,

    Le problème est clairement dans le fichier "fonc_3ac.h", c'est lui qu'il faudrait voir. Il semble que le compilateur se voit dans une classe, elle a due être ouverte dans le fichier header et n'a pas été fermée.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    6 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 6 344
    Points : 17 820
    Points
    17 820
    Billets dans le blog
    1

    Par défaut

    Bonjour

    Je présume que le fichier "fonc_3ac.h" contient le second code. En tout cas, en faisant comme ça, chez-moi ça a compilé sans souci (sauf que la variable "v" est utilisée sans être remplie et que le tableau "val" n'est pas utilisé mais ça, ça n'empêche pas la compilation). Donc si erreur il y a, ce n'est pas dans le code montré ici.

    Maintenant, c'est vrai qu'un header guard ne mange pas de pain (mais ça ne protège que contre une double inclusion qu'on n'a pas ici) et c'est vrai aussi que la déclaration de "decomp" pourrait être faite dans le ".h" qui la contient (regroupement des trucs qui vont ensembles quoi). Mais la plus grosse hérésie est d'avoir mis du traitement dans un ".h". On ne fait jamais ça. Le ".h" c'est juste la signature des outils. Les outils, eux, restent dans les ".c" qui se compilent ensuite en ".o" et en regroupant ces ".o" lors de l'édition de lien on obtient l'exécutable.
    Surtout que le ".h" est destiné au client et que si on lui donne du code, adieu la propriété intellectuelle.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

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

Discussions similaires

  1. error: expected specifier-qualifier-list before
    Par damien22530 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/07/2015, 12h33
  2. Réponses: 3
    Dernier message: 08/03/2011, 23h04
  3. Réponses: 2
    Dernier message: 17/12/2009, 02h11
  4. Problème de compilation (parse error before '*' token)
    Par moon93 dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 11/06/2006, 22h39
  5. [Mail] parse error, expecting `','' or `';'' introuvable
    Par ApollloCrid dans le forum Fonctions
    Réponses: 20
    Dernier message: 05/02/2006, 00h26

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