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 :

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


Sujet :

C

  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 : 26
    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 : 26
    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
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 1 565
    Points : 7 648
    Points
    7 648
    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
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 12 690
    Points : 30 985
    Points
    30 985
    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 «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

+ 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 Langage
    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