Signification de cette erreur ?

Résolu
JurianKun Messages postés 15 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 5 septembre 2006 - 10 juil. 2006 à 22:35
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 11 juil. 2006 à 17:34
Bonsoir,

J'ai obtenu plusieurs fois ce message d'erreur: "Embedded statement cannot be a declaration or labeled statement"
Ne sachant pas du tout de quoi il venait, j'ai tenté de reproduire la situation avec ceci:

    void lolmdr()
    {
        if ("" == "")
        int i = 1;
    }

J'obtiens effectivement le même message d'erreur, et en ajoutant simplement des accolades, le message disparait:

    void lolmdr()
    {
        if ("" == "")
        {
            int i = 1;
        }
    }

Est-ce quelqu'un saurait m'expliquer ce que signifie le message d'erreur et pourquoi il y a une différence quand je mets les accolades ? Merci

9 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 juil. 2006 à 22:47
Salut,

Avec la première, tu ne vas jamais rien faire de ta variable déclarée, car la fin de portée du if vient directement après.
Tandis qu'avec la seconde, les accolades définissant la portée te permettent de mettre plusieurs lignes, donc de faire quelquechose de ta valeur.

/*
coq
MVP Visual C#
CoqBlog
*/
3
apacheswiss Messages postés 154 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 août 2007
11 juil. 2006 à 00:32
donc tu as la même erreur avec:

  void lolmdr()
  {
      if ("" == "")
        Bidule test = new Bidule();
  }

   si oui.. c'est normale... car tu déclare ta variable à la fin de la portie du if... donc le compilateur "pense" qu'il y as un problème.. car variable inutilisable... du ne fais qu'instancier un obect (pour le compilateur)

avec les accolade il n'y as plus ce problème...

ou si tu fait

void lolmdr()
{
    Bidule test;
    if ("" == "")
       test = new Bidule();
}

il ne devrais "peut-êrte" plus avoir de problème car tu ne fais qu'instancier la variable, qui aurras une portée plus grande que le if.. donc pas de problème pour le compilateur..

c'est peut-être plus un "bug" du compilo.... qu'autre chose..
3
JurianKun Messages postés 15 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 5 septembre 2006
10 juil. 2006 à 23:09
Oui mais j'ai aussi cette erreur quand je déclare un formulaire (Bidule test = new Bidule()) avec la méthode Show() directement dans le constructeur, pourtant j'ai plus besoin d'accolades.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 juil. 2006 à 23:11
Euh, désolé je ne vois pas ce que tu veux dire pour ton 2ème exemple.

/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JurianKun Messages postés 15 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 5 septembre 2006
11 juil. 2006 à 00:42
Ok, merci pour vos réponses =)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 juil. 2006 à 14:08
Un bug ?
Au contraire, il te dit que tu fais quelquechose qui ne sert à rien, j'appelle plutôt ça une détection d'erreur moi.

/*
coq
MVP Visual C#
CoqBlog
*/
0
apacheswiss Messages postés 154 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 août 2007
11 juil. 2006 à 17:27
oui... mais le fait de mettre des accolades ne devrais rien changer... il devrais aussi voir l'erreur..
0
apacheswiss Messages postés 154 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 août 2007
11 juil. 2006 à 17:29
ou alors un avertissement comme quoi la variable n'est jamais utilisée. ou quelque chose dans le genre... peut-être le fait-il j'ai pas essayer..
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 juil. 2006 à 17:34
Oui, il pourrait effectivement détecter que tu ne fais rien avec si une analyse plus poussée était faite (on n'en est pas encore au stade des compilos qui ont 20 ans d'évolution derrière eux)
Avec les accolades, tu as la possibilité de faire quelquechose avec, c'est tout ce qui lui importe.

void lolmdr()
{
   if ("" == "")
   {
      Bidule test = new Bidule();
   }
}

=>

void lolmdr()
{
   if ("" == "")
   {
      Bidule test = new Bidule();
      test.UneMethode();
      ...
   }
}

Sans les accolades il est sûr et certains que tu n'en fait rien :-)

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous