Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!wuarchive!gem.mps.ohio-state.edu!ginosko!uunet!virtech!cpcahil From: cpcahil@virtech.UUCP (Conor P. Cahill) Newsgroups: comp.std.c Subject: Re: Declarations in switches, errors Message-ID: <1211@virtech.UUCP> Date: 29 Sep 89 00:30:59 GMT References: <561@crdos1.crd.ge.COM> <10041@xanth.cs.odu.edu> <1202@virtech.UUCP> <11173@smoke.BRL.MIL> Organization: Virtual Technologies Inc Lines: 34 In article <11173@smoke.BRL.MIL>, gwyn@smoke.BRL.MIL (Doug Gwyn) writes: > In article <1202@virtech.UUCP>, cpcahil@virtech.UUCP (Conor P. Cahill) writes: > > If this is the standard, I think it is broken. If the compiler allows > > a variable declaration, it should allow an initialization. > If I recall correctly (my copy of the Standard is not at hand), you can > specify the initializer but of course it won't be executed. Consider > the following analogous case (which does NOT involve "switch") to see why: > > goto label; > { > int i = 4; > foo(); > label: bar(); > baz(); > } I still don't agree with this. One does not "conceptualize" the initialization as an execution. Since the code used to allocate the automatic variable on the stack is executed, the code used to initialize the variable should be executed. In addition the behavior is different if the declaration is "static int...". In that case the initialization does take place. What it the justification for the different behavior? -- +-----------------------------------------------------------------------+ | Conor P. Cahill uunet!virtech!cpcahil 703-430-9247 ! | Virtual Technologies Inc., P. O. Box 876, Sterling, VA 22170 | +-----------------------------------------------------------------------+