[OT] [sdiy] IN your mind, what is ....
Michael E. Caloroso
analoguediehard at att.net
Wed Feb 4 16:59:08 CET 2004
Yes, true as long as the C complier is ANSI C compliant.
I have encountered C compilers that goto statements can jump outside of
a function, which is non-conformant with ANSI C.
We're getting way OT here, this isn't OOP-DIY.
MC
Forbes, William - EE - UK/Leamington wrote:
> I would like to point out that in C at least, goto labels are the only
> objects that have true function scope.
> Therefore it is not possible to jump outside of a function with the standard
> goto.
>
> Bill Forbes.
>
>
>>-----Original Message-----
>>From: Michael E. Caloroso [mailto:analoguediehard at att.net]
>>Sent: 04 February 2004 15:09
>>Cc: synth-diy at dropmix.xs4all.nl
>>Subject: Re: [OT] [sdiy] IN your mind, what is ....
>>
>>
>>
>>>>Not a simpler solution, but it keeps the pointer stack
>>
>>clean which is
>>
>>>>a goto cannot do.
>>>
>>Forbes, William - EE - UK/Leamington wrote:
>> > 'continue' and 'break' (except in a switch statement) are
>>effectively > goto's! > The all cause a jump and the
>>effects on maintainability can be just a > severe as a goto!
>> > Why work round a 'goto' when a 'goto' is the most sensible
>>thing to > use?
>>
>>Don Tillman wrote:
>> > If the operation you're doing is a naturally GOTO-like
>>operation, what > is so freaking horrible about implementing
>>it with a GOTO instruction?
>>
>>Rainer Buchty wrote:
>>
>>>A goto statement does *not* affect the stackpointer. It's the
>>>counterpart to JMP/BRA in assembly language. All it does,
>>
>>is setting
>>
>>>the program counter. The stack pointer is influenced by
>>
>>gosub or, for
>>
>>>that matter, any function or procedure call.
>>
>>Therein lies the crucial difference between goto and continue/break.
>>
>>continue/break keep you *inside* the function. This keeps the stack
>>clean as you will always encounter each RET call associated with its
>>GOSUB call.
>>
>>goto statements can take you *outside* the function. Do this and now
>>you have pointers in the stack that are invalid. This fragments the
>>stack, raising the spectre of stack overflow and a system crash.
>>Framented memory is the bane of code that runs 24/7.
>>
>>I have done plenty of code optimization of legacy code. Fragmented
>>memory is one of the worse offenders and is a topic that too few
>>developers are aware of. Removing fragmented memory can extend code
>>MTBF from a few hours to weeks.
>>
>>Yes they may compile as JMP/BRA statements but it is the
>>implementation
>>that is the difference.
>>
>>WRT code reliability, that's a clearer way of doing it. The
>>political
>>correctiveness of eliminating goto's is irrelevant when the target
>>application is critical like medical monitoring apparatus or
>>aerospace
>>controls. If I ever set foot on a plane that contains some of my
>>design, you better believe I went the extra mile to confirm
>>reliability
>>as the last place to encounter stack overflow/system crash is at
>>30,000ft above ground. That's what is so freaking horrible
>>about a goto
>>statement.
>>
>>MC
>>
>
>
More information about the Synth-diy
mailing list