for Schleife und Variable
-
Hallo *,
ich habe in meinem Projekt folgenden Code fehlerfrei benutzt:for( int i = 0; ... ; ... ){ } i = ...;Jetzt habe ich MSVC geupdated(auf 2005) und ich bekomme unzaehlige Fehlermeldungen, dass die Variable nicht deklariert ist.
Eigentlich Standardkomform, aber ich habe keine Lust mein ganzes Projekt zu aendern. Ausserdem sind auch externe incudes davon betroffen die von anderen Personen stammen. Gibt es eine Moeglichkeit das irgendwie zu umgehen?Danke und Gruss
-
hallo
das problem hier ist, dass das visual studio 6 an dieser stelle nicht standardkonform ist.
http://www.thescripts.com/forum/thread63114.html
es gab hier mal von hume sikkins und volkard ein #define 'konstrukt', eventuell fragst du über email nochmal nach.
-
Hallo,
ich glaube, der Fehler liegt darin, dass du eine LOKALE VARIABLE erstellt hast ('i')
Diese gilt NUR in der Schleife, und den schleifen in der schleife usw. [...]du hast aber die schleife geöffnet '{' und in der nächsten zeile schon wieder geschlossen '}' !
die veränderung der Variable 'i' findet also nicht mehr in der Schleife statt,
sondern ausserhalb, wo 'i' dem compiler gar nicht mehr BEKANNT ist...hoffe das hilft
mfg
JanPS: Richtig wäre es also so:
for (int i=0;...;...) { i... }
-
adapto schrieb:
Eigentlich Standardkomform
Nein. Das ist genau *nicht* standard konform!
Du kannst es aber dem standard-konformen MS compiler beibringen, dass er Deine nachlässigkeit ignoriert:
/Zc:forScope-
oder via#pragma conform(forScope, off)
-
elise schrieb:
es gab hier mal von hume sikkins und volkard ein #define 'konstrukt', eventuell fragst du über email nochmal nach.
Dieser ist auch in der MSDN veröffentlicht worden:
#define for if(0);else forIch habe diesen define schon for x Jahren in meinen VC6 Programmen eingebaut. Dafür gab es dann keine Umstiegsprobleme auf VC200x
-
jep, das wars wohl.
-
Vielen Dank fuer eure Hilfe. Ich benutze jetzt /Zc:forScope und meine Projekte lassen sich wieder kompilieren.
Es ist zwar schade das Microsoft so wenig von den Standards haelt, aber in diesem Fall habe ich mich so dran gewoehnt, dass ich es wohl auch bei der Microsoft eigenen Interpretation belassen werde. Ich hoffe nur, die nehmen diese Moeglichkeit nicht komplett raus in einer spaeteren Version.Danke und Gruss