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 d'un programme pourtant si simple


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut Erreur de compilation d'un programme pourtant si simple
    .. mais je n'en trouve pas la cause.

    Je suis en train de patiemment passer de Pascal (Delphi xe) au C++. Intellectuellement ce n'est vraiment pas difficile dés qu'on accepte d'écrire en illisible mais je tombe sur une erreur bizarre.

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    struct tmobile
      {
        int x;
        int y;
        int vitesse;
        //void montre();
     //   void bouge();
      }
     
    @ tmobile auto;
     
     
    int main()
    {
        auto.x=1;
        auto.y=2;
        auto.vitesse=25;
     
        printf("X = %d    Y = %d    Vit = %d\n", auto.x, auto.y, auto.vitesse);
        return 0;
    }
    Y a vraiment pas de quoi fouetter un chat, mais le compilateur me dit qu'en ligne pointée @ y a un bogue:
    D:\workspace\teststruct\main.c|13|error: expected '=', ',', ';', 'asm' or '__attribute__' before 'auto'

    ????

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Sommes-nous en C ou en C++ ?

    Il manque un point-virgule à la suite de la définition de struct tmobile. Sans typedef, le nom du type en C est struct tmobile : struct n'est pas optionnel comme en C++. auto est un mot-clef réservé dans les deux langages.

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Et surtout : @ ça n'existe pas en C ou en C++.

  4. #4
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Et surtout : @ ça n'existe pas en C ou en C++.
    Ben surtout c'est moi qui l'ai ajouté pour indiquer la ligne de l'erreur, aussi..

  5. #5
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Sommes-nous en C ou en C++ ?

    Il manque un point-virgule à la suite de la définition de struct tmobile. Sans typedef, le nom du type en C est struct tmobile : struct n'est pas optionnel comme en C++. auto est un mot-clef réservé dans les deux langages.
    On est en C++.
    Il faudrait donc un point virgule après l'accolade "}"?
    Pourtant il n'en faut pas tout à la fin, c'est normal?

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Mets un commentaire.... Surtout qu'en plus l'erreur de compilation indique la ligne donc si tu mets le fichier original dans son intégralité, on sait où est l'erreur !

    Pas de point-virgule après une fonction ; un point-virgule avec la définition d'un type struct. C'est comme ça !

  7. #7
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Aux caractères blancs près, tu as ecrit ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct tmobile { /* */  } tmobile auto;
    Ceci déclare un type nommé tmobile (le premier des deux), le définit (les accolades), puis déclare une première variable de ce type, nommée tmobile.
    Ensuite arrive le mot auto.

    Ce mot n'est pas à sa place, car ce n'est pas le début d'un initialiseur ( comme int i = 0), une virgule pour introduire une seconde variable (comme int a, b;), un fragment assembleur, ou un attribut (au sens C++).

    La raison, c'est qu'effectivement, tu n'as pas terminé la définition du type.

    Il y a un ; après une accolade de forme (définition de structure ou initialisation de variable), pas après une accolade "bloc d'instructions".

  8. #8
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut Difficuluté à compiler un struct
    En somme j'aurais dû considérer que l'accolade de fin de structure correspond au END du pascal, lequel est suivi d'un point-virgule aussi.
    Je commence à comprendre.

    Tant qu'à faire, puis-je demander quel éditeur/compilateur tu utilises? Je regrette la simplicité et l'aide au traitement des erreurs de Delphi (et plus encore Turbo-Pascal)..

    Bon:je viens d'ajouter un point-virgule comme convenu, et renommé "auto" en "voiture" ce qui donne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct tmobile
      {
        int x;
        int y;
        int vitesse;
        //void montre();
     //   void bouge();
      };
     
    tmobile voiture;
    Et là, crac! Paraît que tmobile est inconnu!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2017, 10h11
  2. Erreur de compilation d'un programme simple
    Par lecodeurcplusplus dans le forum Qt Creator
    Réponses: 4
    Dernier message: 28/04/2015, 12h27
  3. aide sur une erreur apres compilation d'un programme
    Par oscarus dans le forum Dev-C++
    Réponses: 0
    Dernier message: 04/02/2014, 20h08
  4. [z/OS] Erreurs de compilation d'un programme Cobol
    Par elajjouri dans le forum Cobol
    Réponses: 2
    Dernier message: 10/05/2009, 23h45
  5. Erreur de compilation sur un interpreteur de commandes simples.
    Par Tibapbedoum dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 24/11/2008, 18h07

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