Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » for-Schleife bei verschiedenen Compilern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.02.2006, 00:34 Uhr
A-l-e-x



Die for-Schleife wird unter verschiedenen Compilern anders interpretiert:


C++:
for(int i=0; i<10; i++)
  machWas(i);

for(int i=0; i<10; i++) // Problem mit VC++; bei Dev-C++ nicht
  machWas(i);



Wenn man unter VC++ eine Variable in einer for-Schleife deklariert, wird sie nicht nur in der for-Schleife definiert, sondern auch "außerhalb". Bei Dev-C++ zum Beispiel gilt es nur in der for-Schleife. Das Problem bei VC++ ist , dass man beim der nächsten for-Schleife den selben Namen für die Variable nicht verwenden kann.

Ok, man kann aber auch das "int" beim nächsten Mal weg lassen, doch das macht wiederrum bei einem anderen Compiler(Dev-C++) Probleme.

So jetzt meine Frage: Gibt es eine "#define" Eintrag, wo der Compilername gespeichert ist. Denn so kann man sich ein define basteln z.B. "VINT", was man statt des normalen "int" dann schreibt. Dieses "VINT" bewirkt, dass bei VC++ das "int" weggelassen wird und bei Dev-C++ das "int" da bleibt.

Gibt es vielleicht einen besseren Weg? Wenn ja, sollte der nicht so aussehen, dass man einen anderen Variablennamen verwendet.

PS: Ich hoffe ich habe das richtige Unterforum erwischt.

mfg A-l-e-x

Dieser Post wurde am 26.02.2006 um 00:35 Uhr von A-l-e-x editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.02.2006, 08:13 Uhr
Tommix



'Morgen,
das ist ein Fehler in VC6, bei den neueren Versionen ist das behoben.
Eine Möglichkeit das zu umschiffen wäre zusätzlich zu klammern:

C++:
{
for (int i=0; i < 10; i++)
  machWas(i);
}


Gruß, Tommix


Bearbeitung:

Eine Konstante, die nur VC kennt, wäre:

Zitat von MSDN:

_MSC_VER
Definiert die Compilerversion. Definiert als 1100 für Microsoft Visual C++™ 5.0. Immer definiert.




Dieser Post wurde am 26.02.2006 um 08:17 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.02.2006, 23:00 Uhr
A-l-e-x



Danke!

Hab mir dann das zusammengebastelt:


C++:
// Für den VC++6-for-Schleife-Bug
#if defined(_MSC_VER) && (_MSC_VER == 1200)
    #define VINT
#else
    #define VINT    int
#endif

for(int i=0; i<10; i++)
  machWas(i);

for(VINT i=0; i<10; i++)
  machWas(i);


Dieser Post wurde am 26.02.2006 um 23:01 Uhr von A-l-e-x editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.02.2006, 10:48 Uhr
xXx
Devil


Die Lösung sieht doch gut aus wäre doch evt. was fürs F.A.Q. ... FLOSOFT!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: