Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!lll-crg!nike!ll-xn!mit-amt!mit-eddie!genrad!decvax!ittatc!bunker!garys From: garys@bunker.UUCP (Gary M. Samuelson) Newsgroups: net.lang.c Subject: Re: functions that don't return Message-ID: <1216@bunker.UUCP> Date: Wed, 1-Oct-86 14:16:18 EDT Article-I.D.: bunker.1216 Posted: Wed Oct 1 14:16:18 1986 Date-Received: Sat, 4-Oct-86 01:38:42 EDT References: <584@hadron.UUCP> <86900070@haddock> Reply-To: garys@bunker.UUCP (Gary M. Samuelson) Organization: Bunker Ramo, Trumbull Ct Lines: 37 In article <86900070@haddock> karl@haddock writes: Re 'exit()' versus 'return' to leave main(): >Now I've reverted to exit(), because I >consider it a better model for error handling: "fprintf(stderr, usage); \ >exit(1);" is more meaningful to me than "... return (1);" and won't break >if the code segment moves into a subroutine. Interesting. I started using 'return' instead of 'exit()' so that the code segment wouldn't break if moved into a subroutine -- to be more precise, so that I could call 'main()' as a subroutine (recursion being occasionally useful). Anyone else do this? >There are three possible models for the crt0/main interface: main() could be >int ("exit(main())"), void ("main(); exit(0)"), or dead ("main(); HALT"). I suppose this is an operating system (environment) issue. Assuming UNIX, the first model is the only correct one. If you're not assuming UNIX, what is 'crt0'? >I >kind of like the last idea; it requires the user to explicitly call exit(), >but it makes all main programs equivalent. It only makes all main programs equivalent by requiring that they all be written the same way. I don't see the advantage. Assuming a multiuser environment, it wouldn't be a very good idea at all. ("Why is the system hung?" "Oh, someone ran the 'hello, world' program again.") >(Including those which neither >return nor exit, for which the declaration "int main()" looks silly.) Routines which do not return or exit should be declared 'void' (or 'dead' -- if that were to be added to the language, which I wouldn't recommend, but wouldn't fight either). Gary Samuelson