c++ projekt settings - gültigkeitsbereich von variabeln
-
ich bin beim umstellen von .net 2002 auf .net 2005
und der 2005 compiler meckert bei folgenden codefor ( int i=0; i<10; i++ ) { // blabla } i = 0; // error C2065: 'i' : undeclared identifierweiss 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.