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 :

fonction non autorisée


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut fonction non autorisée
    Bonjour,
    un blocage:
    Message au cours de complilation:
    1320 C:\Dev-Cpp\mainGeneral.cpp a function-definition is not allowed here before '{' token

    1320 C: \ Dev-Cpp \ mainGeneral.cpp une fonction de définition n'est pas autorisé ici avant '{' token

    En français:fonction non autorisée??
    Mais encore?
    A un débutant on dit quoi à part lire de gros bouquins?
    Merci de m'éclairer.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Sans le code difficile d'être précis sur les causes de problème.

    Mais je dirais au vu du message, vérifie les fichiers d'entête inclus dans le fichier mainGeneral.cpp. :
    - les classes déclarées finissent bien avec };
    - à tous '{' correspond bien un '}' ?

  3. #3
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    bonjour,
    Je précise que sur l'écran on trouve dans l'ordre:
    différentes fonctions
    string FcAa..(string ax,string bx,...)
    string FcBb(string bx,string cx,..)
    Chaque fonction a été construite à part et essayée à part et ajustée.
    Ce sont des fonctions simples qui se suffisent à elles-mêmes.
    Puis on trouve dans la suite des fonctions sont plus complexes car elles utilisent une ou plusieurs des fonctions précédentes mais seules elles ont été testées et fonctionnent .
    A la fin on trouve general.cpp qui contient les appels de fonctions
    et les chaines utiles au fonctionnement des fonctions appellées.
    Les entêtes sont en vert et entières.
    Les {} sont en nombres pairs car séparement les fonctions fonctionnent.
    Les ; aussi.
    Je vais essayer de fournir un morceau de code dans qq temps.
    Est-il nécessaire de placer les fonctions dans un ordre donné,logique?Ce que le message d'erreur semble dire?
    Si je n'ai pas encore construit de bibliothèque avec mes fonctions c'est que c'est plus pratique pour les ajustements finaux.

    Merci pour ce début de réflexions.
    Je reposte car c'est mal passé!!
    Si nécessaire détruire un des 2 messages.

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

    Informations professionnelles :
    Activité : aucun

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

    Pourrais tu nous donner le code qui provoque cette erreur (en l'entourant des balises [ CODE ] et [ /CODE ] ), car il est difficile de te répondre de manière précise autrement.

    Ceci dit:

    Une définition de fonction est caractérisée par une pair d'accolade "{ }" et ne peut se trouver au sein d'une autre définition de fonction.

    Tu ne peux donc pas avoir quelque chose qui soit proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void mainGenera::truc()
    {
     
    void mainGeneral::Machin()
    {
    }
    }
    Vérifies aussi de ne pas avoir oublié le point virgule à la fin de la défintion de ta classe mainGeneral

    Dans le fichier d'en-tête, tu dois impérativement avoir un point virgule ";" après l'accolade fermante de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class mainGeneral
    {
    }; // ici
    Est-il nécessaire de placer les fonctions dans un ordre donné,logique?Ce que le message d'erreur semble dire?
    Il n'est pas nécessaire de fournir les fonctions dans un ordre logique, pour autant
    1. que chaque fonction ait été au minimum déclarée avant le premier appel qui y est fait
    2. que la définition de chaque fonction soit correctement finie avant de commencer la définition de la suivante

    Si chaque fonction a été écrite et testée à part, et que tu les as, par la suite, toutes recopiées dans une fichier d'implémentation unique, il n'est pas impossible que tu aies fait une erreur de copier / collé, et que tu aies collé le code d'une fonction "juste un peu trop haut" (à l'intérieur d'une autre définition de fonction )

    Le fait que tu aies déjà un nombre identique d'accolade ouvrantes "{" et d'accolades fermantes "}" est déjà en lui meme encourrageant, mais tu devrais sans doute essayer d'indenter ton code pour t'assurer que chaque accolade fermante apparaisse "au bon moment", car il y en a sans doute une qui est mal placée
    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

  5. #5
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    Voila l'architecture:
    fonctions simple A
    fonctions simple B
    (..)
    fonction complexe Xc
    fonction complexe Zf
    (..)
    general.cpp
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    //une fonction simple de { à } de 4 à 23
    string FcAkcent(string qestr,string & nlstr,int iztx)
    {//fcakcent/25/01/12/10h
    //ecrAccent=FcAkcent(qestr,nlstr,iztx);
    //ac100    =FcAkcent("chaine",stx,2);cout<<stx<<endl;  
    nlstr="";                                                         //ligne 3
    string tblOri[qestr.size()];int ij=0;
    char texte[100]="";                                              //ligne 1
         for  (int i=0,size=qestr.size();i<qestr.size();(i=i+iztx))
              {++ij;tblOri[ij]=qestr.substr(i,iztx);
              CharToOemBuff(tblOri[ij].c_str(),texte,sizeof texte-1); //ligne 2
              nlstr=nlstr+texte;}
    /*          
    string tblAcc[nlstr.size()];ij=0;
         for  (int i=0,size=nlstr.size();i<nlstr.size(); i=i+iztx)
              {++ij;tblAcc[ij]=nlstr.substr(i,iztx);
              cout<<"acT "<<tblAcc[ij]<<endl;
              }
              */
    return nlstr;
    }//fcakcent/25/01/12/10h
    //-------------------------------------------------
    //une partie d'autre fonction simple de { à } de 26 à 60 ici seulement
    string FcCadr1(string touschar,string tx1,string tx2,string tx3,string tx4,string tx5,string tx6,
                   string tx7,string tx8,string tx9,string tx10,string tx11,string tx12,string styl,int colon)
    {//fccadr1/05/02/12/21h
    //string cadre=FcCadr1(leschar,tt1,tt2,tt3,tt4,tt5,tt6,tt7,tt8,tt9,tt10,tt1,tt12,styl,colon)
    //coinhg,coinhd,coinbg,coinbd,barv,vid,lig
    //" ",de,tr,dz et d ou f ou . ou p
    if (styl.substr(0,1) == "p" )
    {char traitp[10]={91,93,91,93,124,255,240};
    touschar=traitp;}
    
    if (styl.substr(0,1) == "d")
    {char traitdob[10]={201,187,200,188,186,255,205};
    touschar=traitdob;}
    
    if (styl.substr(0,1) == "f")
    {char traitfin[10]={218,191,192,217,179,255,196};
    touschar=traitfin;}
    
    if (styl.substr(0,1) == ".")
    {char point[7]={254,254,254,254,254,254,254};
    touschar=point;}
    string tbl[touschar.size()];
         for  (int i=0,size=touschar.size();i<touschar.size();++i)
              {tbl[i]=touschar.substr(i,1);}
    string coinhg=tbl[0] ,coinhd=tbl[1] ,coinbg=tbl[2],coinbd=tbl[3];
    string barv  =tbl[4],vid   =tbl[5],lig   =tbl[6];
    string txblc,colcadr;
    int larcd=(tx1.size())+0;
    txblc=txblc.insert(0,tx1.size(),' ');//n fois blanc(' ')
    colcadr=colcadr.insert(0,colon,' ');
    
    cout<<colcadr<<coinhg;
         for ( int i = 0, size =larcd; i < size; ++i )
         {cout<<lig;}
    cout<<coinhd<<endl;
    //--------------------------------
    //une fonction complexe qui contient FcRtfRtf ligne 71
    string FcPaqGest2(string PaqA,string PaqB,int z)
    {//fcpaqgest2/26/02/12/21h00
    string echd="         1         2         3         4";
    string echu="1234567890123456789012345678901234567890";
    string paqgest="",paqgestC;
    string FhPAQaux="CLPAQaux.rtf";//travail
    string FhPAQbis="CLPAQbis.rtf";//stable copie d'un original
                   string FhOriEntr=FhPAQbis;string FhSorRecop=FhPAQaux;
                   string RecopFhFh=FcRtfRtf(FhOriEntr,FhSorRecop);//   ici
    //int i=0,
    int ipg=0;
    ifstream FhGpaux(FhPAQaux.c_str(),ios::in);
         std::vector<std::string>TblGpaux;
         string LignGpaux;
    //--------------------------------------
    le programme général qui appelle FcCadr2 lignes 84 et 91
    int main()
    {//int
                        cout<<sepetol+sepdisc+sepetol+sepdisc+sepetol<<endl;
                        qestr="G.E.N.E.R.A.L.";
                        iztx=qestr.size(),nlstr,styl="d  ",colon=42;
                        cadrCourt=FcCadr2(qestr,nlstr,styl,iztx,colon);///ici
                        cout<<""<<endl;
    
                        reftemps=FcSysAnHr(ann,hur,sed);
                        cout<<"                                             "<<ann<<"/"<<hur<<endl;
                        qestr="menu";
                        iztx=qestr.size(),nlstr,styl="f  ",colon=47;
                        cadrCourt=FcCadr2(qestr,nlstr,styl,iztx,colon);//ou là
    //{//system-----------------------------------------------------------------------10sys72
         menuGeneral:
    //                 cout<<"G3104"<<endl;
         ac100=FcAkcent("étiq.m.Général",stx,2);cout<<stx<<endl;
    Pendant que je poste de nouveaux messages arrivent...Merci je vais lire.

  6. #6
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    Des réponses:
    je n'ai pas d'accolades imbriquées si non les fonctions ne fonctionneraient pas?
    ------------
    pas d'erreurs de copier/coller car je piège mes fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string FcAx(..
    {//date et heure
    }//date et heure
    et ne peut faire d'erreurs de copier/collé
    -------------
    general est construit ainsi:
    des fonctions,des fonctions
    qq string fondamentales
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main()
    {
    (..)
    }
    --------------
    donc il y a bien un ordre....
    --------------
    Dois-je dire que le message est récent et que je devrais remonter à la dernière construction?Est-ce la phrase qui tue?
    Au boulot pour purifier tout çà!

  7. #7
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut la conclusion tant attendue!
    Donc j'ai listé mes fonctions.J'ai vérifié qu'elles ne contenaient pas d'appels d'autres fonctions trop tôt:les simples avant,les complexes après.
    J'ai étudié ces fonctions complexes à part.Et l'une contenait une } en moins ce que j'ai trouvé parce que seule étudiée.
    Le message alors était plus simple.
    Je l'ai remise en place corrigée:la complil s'est bien déroulée.

    Donc le message:
    Message au cours de complilation:
    1320 C:\Dev-Cpp\mainGeneral.cpp a function-definition is not allowed here before '{' token

    1320 C: \ Dev-Cpp \ mainGeneral.cpp une fonction de définition n'est pas autorisé ici avant '{' token

    un peu tordu mais finalement juste était vrai MAIS NOUVEAU pour moi,d'où mon alerte générale.
    Merci pour vos réponses pleines de bon sens et qui doivent être rappellées comme vous l'avez fit ci-dessus.
    Merci encore.

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

Discussions similaires

  1. [WD15] Fonctions agrégats non autorisées
    Par tpalloko dans le forum WinDev
    Réponses: 7
    Dernier message: 26/02/2013, 15h21
  2. frm-41009 touche de fonction non autorisée
    Par lifeisgood dans le forum Forms
    Réponses: 2
    Dernier message: 14/03/2007, 09h44
  3. [Configuration] Installation de PHP + Pbm de fonctions non reconnues
    Par BARBIER dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 23/11/2005, 10h54
  4. Le linker ignore les fonctions non implémentées
    Par Rodrigue dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/03/2005, 13h31

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