🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1559

Re: scope von for-Zaehlern ?

#1559
From: Dietmar Kuehl
Date: Sat, 10 Feb 1996 20:48
54 lines
2493 bytes
Hi,
Thomas Riechmann (thomas) wrote:

: Wie ist es eigentlich mit dem Geltungsbereich von Zaehlervariablen in
: for-Schleifen? Meine Frage zielt auf folgendes:

: Das Programmfragment

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

: wird von Turbo C++ (V.4.5) und gcc V. 2.6.3 anstandslos akzeptiert. gcc 2.7.2
: dagegen beschwert sich, ich muesse i in der zweiten Schleife neu deklarieren.

gcc-2.7.2 wurde in dieser Beziehung geaendert, um naeher am ISO C++
Standard zu sein (ISO C++ ist das, was eigentlich interessant ist, da
uns ANSI C++ nicht, sondern nur DIN C++ betreffen wuerde; allerdings
werden alle C++ Standards identisch sein).

: Deshalb meine zwei Fragen:

: 1. Welche Variante ist eher ANSI-C++-verdaechtig, d.h. wie sollte ich es
: schreiben, um dem kommenden Standard gerecht zu werden? (Bitte nicht: Erst
: ausserhalb der Schleifen i deklarieren, dann verwenden!)

Variablen, die innerhalb der for-Schleife deklariert sind, sind auch
nur dort bekannt. D.h. g++-2.7.2 hat recht (i.e. verhaelt sich so, wie
es ein ISO C++ Compiler tun sollte). Siehe auch 6.5.3 Vers 4 (stmt.for)
vom April DWP.

: 2. Kann ich vielleicht gcc 2.7.2 beibringen, dass es die erste Variante
: akzeptieren soll? Wenn ja, welcher Kompilerschalter / Parameter loest das
: Geheimnis?

Man kan gcc davon ueberzeugen, der alten Fassung zu entsprechen, indem
man '-fno-for-scope' angibt. Allerdings denke ich, dass man besser
beraten ist, die Sourcen so zu schreiben, dass das nicht noetig ist. Am
Besten schreibt man die Sourcen so, dass beide Fassungen unterstuetzt
werden:

  for (int i1 = 0; i1 < 10; i1++);
  for (int i2 = 0; i2 < 10; i2++);

oder

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

Beides ist nicht schoen, hilft aber beim Uebergang zwischen den
Compilern.
--
dietmar.kuehl@uni-konstanz.de
http://www.informatik.uni-konstanz.de/~kuehl
I am a realistic optimist - that's why I appear to be slightly pessimistic
Technical Details
Message-ID: <311d0485.0@news.uni-konstanz.de>
Path: arc1-ca.pugleaf.net!news.uni-stuttgart.de!horn!kuehl
References: <4ffvfb$ho2@newsserver.rrzn.uni-hannover.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.uni-stuttgart.de!horn!kuehl
From: kuehl@horn.informatik.uni-konstanz.de (Dietmar Kuehl)
Newsgroups: de.comp.lang.c++
Subject: Re: scope von for-Zaehlern ?
Date: 10 Feb 96 20:48:05 GMT
Organization: Fakultät für Mathematik und Informatik
Message-ID: <311d0485.0@news.uni-konstanz.de>
References: <4ffvfb$ho2@newsserver.rrzn.uni-hannover.de>
Reply-To: dietmar.kuehl@uni-konstanz.de
NNTP-Posting-Host: minerva.rz.uni-konstanz.de
X-Newsreader: TIN [version 1.2 PL2]