c++ projekt settings - gültigkeitsbereich von variabeln



  • ich bin beim umstellen von .net 2002 auf .net 2005
    und der 2005 compiler meckert bei folgenden code

    for ( int i=0; i<10; i++ )
    {
       // blabla
    }
    
    i = 0; // error C2065: 'i' : undeclared identifier
    

    weiss jemand welche compiler settings man wo setzen muss, damit er compiliert und ich nicht alles "ordentlich" machen muss???



  • Was genau soll dieser Code erzeugen?
    Ist das alles was du geschrieben hast? Wenn das der Fall sein sollte, dann musst du da Header-Dateien inkludieren. >i< vereinbaren.
    Und was ist das für ne for-scleife ohne Funktionen?



  • er will, dass die i variable auch ausserhalb des for schleifen scope sichtbar ist.

    Aber das solltest du nicht, entsprecht nicht dem Standard und ist auch ganz böse.

    Du solltest den Code umschreiben.

    mfg.



  • int i=0;
    for ( ; i<10; i++ )
    {
       // blabla
    }
    
    i = 0;
    

    Wieso dann nicht so? 😕



  • Du musst die Spracherweiterungen aktivieren. (In den Projekteinstellungen)



  • ich glaub, dass der standard diesbezüglich nichts vorgibt... zumindest meckert der gcc und lint nicht 😉 ich habe die einstellung gefunden:

    Language/Force Conformance In For Loop Scope

    somit bleiben mir unendlich viele änderungen erspart 😉

    danke erstmal



  • pinorrix schrieb:

    ich glaub, dass der standard diesbezüglich nichts vorgibt...

    Dann unterliegst du einem Irrglauben. Der Standard ist in diesem Punkt eindeutig:

    ISO/IEC 14882 6.5.3/3 schrieb:

    If the for-init-statement is a declaration, the scope of the name(s) declared extends to the end of the for statement.

    Der gepostete Code aus der Ursprungsfrage ist also kein legales C++ und wird von deinem Compiler korrekterweise zurückgewiesen.



  • Das weißt der VC nur zurück wenn man die Spracherweiterungen deaktiviert.


Anmelden zum Antworten