exit() to end a function

Steven Schveighoffer schveiguy at yahoo.com
Mon Feb 14 08:39:25 PST 2011


On Mon, 14 Feb 2011 11:19:24 -0500, Jonathan M Davis <jmdavisProg at gmx.com>  
wrote:

> On Monday 14 February 2011 06:12:56 Steven Schveighoffer wrote:
>> On Sat, 12 Feb 2011 17:48:56 -0500, Jonathan M Davis  
>> <jmdavisProg at gmx.com>
>>
>> wrote:
>> > There would be some value to having an attribute which indicated that  
>> a
>> > function
>> > never returns under any circumstances (likely since it always throws),
>> > but that
>> > wouldn't help exit any, since it's a C function and wouldn't have the
>> > attribute.
>>
>> The bindings to C can be attributed as we see fit.  A C symbol is not
>> mangled, and so you can attach any attributes you want (you can even
>> change the number and types of parameters).
>>
>> > Regardless, I see little value in complicating dmd even a little bit
>> > more just
>> > so that you don't have to insert an extra assert(0) after exit -
>> > particularly
>> > when very few programs call exit, and very few should.
>>
>> I agree with this.
>>
>> > Generally, something is
>> > horrendously wrong if exit is being called, and there's probably a
>> > better way to
>> > handle it.
>>
>> I don't agree with this, exit has its valid uses.
>
> Well, I agree that it has its valid uses, but I think that such uses are  
> quite
> rare. You shouldn't normally be writing programs that choose to  
> essentially just
> die in the middle of their execution.

The most common case I can think of is usage errors.  Typically, a usage  
function prints the usage and then exits the program.  This can be done  
differently, but it's not "wrong" to do it that way.

-Steve


More information about the Digitalmars-d-learn mailing list