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 :

ISO C++ forbids declaration


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de inddzen
    Inscrit en
    Avril 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2004
    Messages : 133
    Par défaut ISO C++ forbids declaration
    Je developpe parallelement un projet sous win et linux avec codeblocks.

    Hier, j'ai voulu compiler ma version linux sous win et j'ai eu le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -------------- Build: Debug in cfsdproject ---------------
    
    Compiling: cfsdproject.cpp
    In file included from D:\Programming - New\cfsdproject\/iopack/command.h:10,
                     from D:\Programming - New\cfsdproject\/iopack/terminal.h:13,
                     from D:\Programming - New\cfsdproject\/cfsdproject.h:8,
                     from D:\Programming - New\cfsdproject\cfsdproject.cpp:5:
    D:\Programming - New\cfsdproject\/iopack/fileparser.h:38: error: ISO C++ forbids declaration of `Polygon' with no type
    D:\Programming - New\cfsdproject\/iopack/fileparser.h:38: error: expected `;' before '*' token
    Process terminated with status 1 (0 minutes, 1 seconds)
    2 errors, 0 warnings
    J'ai beau verifier le code source il n'y a apparement aucun soucis.
    J'ai reinstalle codeblocks, j'ai remonte le projet fichier par fichier... Mais toujours la meme erreur.
    J'ai recompile le meme code sous linux et je n'ai eu aucune erreur.

    Je n'ai jamais eu un probleme de ce genre, alors si quelqu'un a une piste

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Il nous faudrait voir la partie du code qui génère l'erreur.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Sio,

    Comme dirait Emmanuel dans la section C, c'est manifestement l'erreur là, tu dois bien voir quand même, ligne 142.

  4. #4
    Membre confirmé Avatar de inddzen
    Inscrit en
    Avril 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2004
    Messages : 133
    Par défaut
    Je rappelle que le meme code se compile sans aucune erreur sous linux!

    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
     
    #ifndef POLYGONH
    #define POLYGONH
    //---------------------------------------------------------------------------
    #include <ostream>
    #include <string>
    //---------------------------------------------------------------------------
    #include "../../../upack/char/unicode.h"
    //---------------------------------------------------------------------------
    class Polygon
    {
    	public:
    		std::string label;
    		int shape;
    		double x0;
    		double y0;
    		double lx;
    		double ly;
     
    		Polygon();
    		void operator=(Polygon& );
    };
    //---------------------------------------------------------------------------
    inline std::ostream& operator<<(std::ostream& out,Polygon* P)
    {
        out << P->label << ARR;
        if(P->shape == 0)
            out << "Square(";
        else
            out << "Rectangle(";
        out << P->x0;
        out << "," << P->y0;
        if(P->shape == 0)
            out << "," << P->lx << ")";
        else
            out << "," << P->lx << "," << P->ly << ")";
        out << std::endl;
        return out;
    }
    //---------------------------------------------------------------------------
    #endif
    //---------------------------------------------------------------------------

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    C'est pas ce fichier où il y a une erreur plutôt ? cfsdproject.cpp

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Généralement, une erreur "iso vobits declaration of '...' with no type" signifie, tout simplement que le compilateur ne trouve pas la définition du type cité pour l'unité de compilation en cours de traitement.

    La raison principale est généralement qu'un fichier d'en-tête n'est pas inclus correctement, ou qu'un type n'a pas pu etre défini correctement, du fait d'un autre erreur

    Le compilateur pousse la gentillesse jusqu'à t'indiquer ce qui ne va pas:
    • à la ligne 5 de cfsdproject.cpp, tu inclus cfsdproject.h, or,
    • à la ligne 8 de cfsdproject.h, tu inclus terminal.h, qui, lui-même
    • inclus command.h à la ligne 13, et,
    • à la ligne 10 de ce fichier (command.h), il semblerait que tu essaye de déclarer une variable dont le type (Polygon) n'est pas connu du compilateur.

    Visiblement, tu as donc oublié d'inclure le fichier polygon.h dans command.h, étant donné qu'il ne te dis même pas que le fichier n'est pas trouvé

    Un petit conseil en passant:

    Méfie toi des chemins relatifs lors de l'inclusion de fichiers d'en-tête appartenant à une bibliothèque externe (car je présume que
    #include "../../../upack/char/unicode.h" fait appel à un fichier de bibliothèque externe ) pour la simple et bonne raison que tu ne peut en aucun cas préjuger du fait que le chemin sera identique sur n'importe quel système.

    Cela te permettra de gagner en souplesse au niveau du système utilisé pour la compilation

    L'idéal étant de définir, dans les options de compilation, un chemin de base certain comme étant un dossier dans lequel on trouvera des fichiers d'en-tête (par exemple c:\mingw\include\upack ou /usr/include/upack) et de donner le chemin relatif à partir de ce dossier "de base" (donc simplement char/unicode.h)

    Pour indiquer un dossier comme devant être utilisé pour rechercher les fichiers inclus, il s'agit généralement de fournir un argument -Idossier à la commande de compilation (la plupart des EDI permettent en outre de spécifier ces dossiers dans les options de compilation )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Au passage un opérateur d'affectation s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Polygon& operator=(Polygon& );
    MAT.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/10/2011, 13h35
  2. Réponses: 14
    Dernier message: 19/07/2011, 14h43
  3. ISO C++ forbids declaration of 'Point with no type'
    Par fab87 dans le forum Débuter
    Réponses: 2
    Dernier message: 13/05/2011, 08h58
  4. ISO C++ forbids declaration of SHA1
    Par ikuzar dans le forum Débuter
    Réponses: 6
    Dernier message: 21/02/2011, 11h42
  5. Réponses: 9
    Dernier message: 15/02/2005, 13h26

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