For Schleife - VS 2010



  • Guten Abend

    for(int i = 0; i < 100; i++)
     i = i + 2;
    
    return i;
    

    Seit wann ist hier i nicht definiert? Kann man das ändern bei VS 2010?
    Über all klappt es nur nicht bei VS 2010

    Das ist doch reinste verarsche



  • i verlässt mit der Schleife den Scope und ist somit danach nicht mehr defniert.
    Das folgende ist äquivalent zu deinem Code.

    for(int i = 0; i < 100; i++)
    {
     i = i + 2;//NUR HIER EXISTIERT i
    }
    
    return i;
    


  • MicrosoftSUCKZ schrieb:

    Guten Abend

    for(int i = 0; i < 100; i++)
       i = i + 2;
    return i;
    

    Seit wann ist hier i nicht definiert? Kann man das ändern bei VS 2010?
    Über all klappt es nur nicht bei VS 2010

    Das ist doch reinste verarsche

    Das ist aber in C++ so, daß die Variable lokal zur for-Schleife ist.
    Es steht im C++-Standard. Schon lange.
    Nur alte Compiler hatten das falsch gemacht.
    VS 2010 ist dahingehend repariert worden.

    Mit

    int i;
    for(i = 0; i < 100; i++)
       i = i + 2;
    return i;
    

    kannste ja zum Glück den alten Code umschreiben.



  • VS 2010 ist dahingehend repariert worden.

    naja in 2008 funktioniert es auch nicht. Es muss wohl ein sehr alter Code sein.



  • Ja toll das es nicht funktioniert
    jetzt muss ich 10000 zeilen code ändern oder was? man ey alter so ne scheiße man



  • 🙄



  • Tja, hättest du es von Anfang an richtig gemacht 🙄



  • MicrosoftSUCKZ schrieb:

    Ja toll das es nicht funktioniert
    jetzt muss ich 10000 zeilen code ändern oder was? man ey alter so ne scheiße man

    du hast 10000 Zeilen Müll programmiert?



  • Es gibt dafür beim VS auch den "/Zc:forScope"-Schalter (unter "Projekteigenschaften"/ "C/C++" / "Sprache": "Übereinstimmung in einem For-Schleifenbereich erzwingen").

    Besser ist jedoch das Umschreiben in standardkonformes C++...



  • volkard schrieb:

    VS 2010 ist dahingehend repariert worden.

    Schon VC 6 hatte einen Switch dafür und seit allerspätestens VC 8 (2005) ist das standardkonforme Verhalten default 😉



  • tri-Tra-Troll-AA


Log in to reply