🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Error "jump past initializer"

#309
From: Ullrich von Bassewitz
Date: Thu, 24 Aug 1995 18:34
67 lines
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!uz
References: <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