Article View: de.comp.lang.c++
Article #309Re: Error "jump past initializer"
From: Ullrich von Bassewitz
Date: Thu, 24 Aug 1995 18:34
Date: Thu, 24 Aug 1995 18:34
67 lines
2288 bytes
2288 bytes
Dinger Dirk 3576 (dinger@ens.ascom.ch) wrote:
> Gibt es jemanden unter Euch, der mit der Fehlermeldung
> "Jump past initializer" etwas anfangen kann.
Ja, sowas aehnliches bekomme ich oefter (und aergere mich ueber C++ :-).
Du bekommst das bei Konstrukten wie
switch (X) {
case 3:
unsigned I = 1;
if (A == B) {
// Some code
}
break;
case 4:
// ...
}
I ist im kompletten umschliessenden Block gueltig (das ist das Switch-
Statement), die Initialisiuerung wird aber u.U. nicht ausgefuehrt. Wenn Dein
Compiler das nur bei "richtigen" Objekten bringt, dann hast Du Glueck gehabt.
Wenn er die Meldung auch bei den Grundtypen bringt (wie meine(r)), dann ist
das irgendwie Unfug, vor allem wenn man sich mal anschaut, wie man die Sache
loesen kann:
case 3:
unsigned I;
I = 1;
if (A == B) {
// Some code
}
break;
Wird die Variable nicht mehr direkt initialisiert, dann beschwert sich
zumindest mein Compiler nicht mehr.
Andere Loesungsmoeglichkeiten sind:
* Variablendeklaration komplett aus dem Block rausziehen.
* Nach "case" einen neuen Block anfangen:
case 3:
{
unsigned I = 1;
if (A == B) {
// Some code
}
}
break;
Nach dem Sichtbarkeitsregeln von C++ ist die Fehlermeldung verstaendlich,
trotzdem finde ich das Verhalten idiotisch, vor allem deshalb, weil die
einfachste Abhilfe die Deklaration ohne gleichzeitige Intialisierung ist -
und davon wollte Stroustrup in C++ ja eigentlich wegkommen.
Gruss
Uz
--
Ullrich von Bassewitz uz@ibb.schwaben.com
Technical Details
Message-ID:
<DDtvKp.DDs@wuschel.ibb.schwaben.com>Path:
arc1-ca.pugleaf.net!wuschel.ibb.schwaben.com!uzReferences:
<1995Aug24.092305.8407@hasler.ascom.ch>Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++ Path: arc1-ca.pugleaf.net!wuschel.ibb.schwaben.com!uz From: uz@wuschel.ibb.schwaben.com (Ullrich von Bassewitz) Subject: Re: Error "jump past initializer" X-Newsreader: TIN [version 1.2 PL2] Reply-To: uz@ibb.schwaben.com Organization: Ingenieurbuero von Bassewitz Message-ID: <DDtvKp.DDs@wuschel.ibb.schwaben.com> References: <1995Aug24.092305.8407@hasler.ascom.ch> Date: Thu, 24 Aug 1995 18:34:00 GMT