JurianKun
Messages postés15Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention 5 septembre 2006
-
10 juil. 2006 à 22:35
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDerniè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
A voir également:
Embedded statement cannot be a declaration or labeled statement
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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.
apacheswiss
Messages postés154Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention22 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..
JurianKun
Messages postés15Date d'inscriptionlundi 5 juin 2006StatutMembreDerniè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.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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 :-)