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

Visual C++ Discussion :

"error C2143: syntax error : missing ';' before '*'" syst�matique


Sujet :

Visual C++

  1. #21
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Il faut que cette pratique soit g�n�ralis�e pour qu'on commence � mieux voir ce qui se passe.

    Et s'assurer de ne plus avoir d'inclusions cycliques.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  2. #22
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Le probl�me des inclusions cycliques, c'est qu'avec les gardes telles que tu les as d�finis, tu as toujours un header dont le contenu est d�fini avant l'autre.
    Exemple:
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //A.h
    #ifndef H_A
    #define H_A
     
    //Avant B.h
    #include "B.h"
    //Apres B.h
     
    class CA
    {
    	B* pb;
    };
    #endif
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //B.h
    #ifndef H_B
    #define H_B
     
    //Avant A.h
    #include "A.h"
    //Apres A.h
     
    class CB
    {
    	A* pa;
    };
    #endif
    Si je compile un fichier qui inclut A.h (on va dire: a.cpp), le pr�processeur donnera un truc de ce genre:
    Code C++ : 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
    //A.h
    #define H_A
     
    //Avant B.h
    //B.h
    #define H_B
     
    //Avant A.h
    //A.h
    //Apres A.h
     
    class CB
    {
    	CA *pa; //ERREUR: CA inconnu
    };
     
    //Apres B.h
     
    class CA
    {
    	CB *pb;
    };
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #23
    Membre �prouv�
    Avatar de TheGzD
    Homme Profil pro
    Ing�nieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : Ing�nieur/ Docteur en Informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par d�faut
    Avant d'avoir mis des gardes j'avais des
    et l'erreur �tait pr�sente.

    Ce qui m'am�ne � la question : y a-t-il une diff�rence entre les 2 m�thodes ?

  4. #24
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    � propos du probl�me tel que je te le montre? je ne crois pas.
    Pour des trucs plus complexes, il peut y avoir une diff�rence.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #25
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Est ce que par hasard (enfin par malchance plut�t), tes gardes n'entreraient pas en conflit avec d'autres gardes (syst�me, autre projet, librairie tierces, ...)
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  6. #26
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Bonsoir,
    Si tu as vraiment besoin d'aide tu dois d�voiler une partie de ton code

    1 i�re le header qui contient la ligne de l'erreur (tout le header)
    2 i�me le header qui contient la d�claration de ta CNoteDlg (tout le header)
    3 i�me le cpp qui provoque l'erreur de compilation et qui inclut ces headers. ( juste la partie des includes)

  7. #27
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 35
    Par d�faut
    En reprenant l'exemple de Medinoc, la solution contre les inclusions circulaires est la d�clarations forward :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //A.h
    #ifndef H_A
    #define H_A
     
    class B;
     
    class CA
    {
    	B* pb;
    };
    #end if
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //B.h
    #ifndef H_B
    #define H_B
     
    class A;
     
    class CB
    {
    	A* pa;
    };
    #end if
    Il reste alors � inclure A.h et B.h dans les .cpp

    A propos de la diff�rence entre #pragma once et les #define..., il me semble que le probl�me viens du faite que #pragma once n'est pas compatible avec tous les compilateurs (http://en.wikipedia.org/wiki/Pragma_once).

  8. #28
    Membre �prouv�
    Avatar de TheGzD
    Homme Profil pro
    Ing�nieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : Ing�nieur/ Docteur en Informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par d�faut
    J'ai r�alis� les d�clarations forward au niveau de la classe qui inclue CNoteDlg et le probl�me semble �tre r�solu.

    Merci � tous pour le soutien.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 2 sur 2 Premi�rePremi�re 12

Discussions similaires

  1. runtime error 3075 syntax error (comma)
    Par pra3t0r dans le forum VB 6 et ant�rieur
    R�ponses: 12
    Dernier message: 14/06/2011, 13h56
  2. R�ponses: 2
    Dernier message: 05/10/2009, 16h43
  3. error near "(" :syntax error
    Par elekis dans le forum SQLite
    R�ponses: 1
    Dernier message: 26/09/2008, 23h37
  4. R�ponses: 7
    Dernier message: 18/03/2008, 17h58
  5. R�ponses: 14
    Dernier message: 11/07/2006, 16h11

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