home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / lang / c / 13225 < prev    next >
Encoding:
Text File  |  1992-09-04  |  2.6 KB  |  80 lines

  1. Path: sparky!uunet!utcsri!utgpu!attcan!telly!druid!pseudo!mjn
  2. From: mjn@pseudo.uucp (Murray Nesbitt)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: main()
  5. Message-ID: <MJN.92Sep4010149@pseudo.uucp>
  6. Date: 4 Sep 92 09:01:49 GMT
  7. References: <cee1.715416182@Isis.MsState.Edu> <1992Sep2.083929.7518@klaava.Helsinki.FI>
  8. Sender: mjn@pseudo.uucp (Murray Nesbitt)
  9. Organization: Private system in Toronto, ON
  10. Lines: 67
  11. In-Reply-To: wirzeniu@klaava.Helsinki.FI's message of 2 Sep 92 08:39:29 GMT
  12.  
  13.  
  14. wirzeniu@klaava.Helsinki.FI (Lars Wirzenius) writes:
  15.  
  16. >cee1@ra.msstate.edu (Charles Evans) writes:
  17. >>BC++ books say int main(void) but what is the benefit of 'return 0' at the
  18. >>end.. seems like wasted space.
  19. >
  20. >It it NOT wasted space.  Each and every function (that returns at all)
  21. >needs to explicitly return some value, otherwise it will return garbage
  22. >value and cause your hair turn into worms.
  23.  
  24. Functions do not have to explicitly return values.  What's the return
  25. value of ``free()''?  Of ``srand()''?  Of ``rewind()''?  Are you
  26. telling me I must rewrite my ``void spinthewheel( wheel *w )''
  27. function?
  28.  
  29. >                                              And if you return random
  30. >values from main, the operating system (that called main to run your
  31. >program) is going to be very confused.
  32.  
  33. No operating system I have ever encountered will get confused by a
  34. program that returns an arbitrary value.  See if you can confuse your
  35. operating system with the following:
  36.  
  37. #include <stdlib.h>
  38. #include <time.h>
  39.  
  40. int main( void )
  41. {
  42.     srand( (unsigned)time( (time_t *)NULL ) );
  43.     return rand();
  44. }
  45.  
  46. >Of course, if you terminate your program with exit or abort, it will
  47. >never get to the end of main, so in that case there is no need to
  48. >include a return statement there.
  49.  
  50. Personally, I put a ``return'' statement in regardless, with a 
  51. ``/* NOTREACHED */'' if appropriate.
  52.  
  53. >                                     In fact, as a stylistic issue, I
  54. >prefer to use ``exit(0)'' instead of ``return 0'' in my programs.  That
  55. >is purely personal opinion, of course.
  56.  
  57. You should be using ``exit( EXIT_FAILURE )'' or ``exit( EXIT_SUCCESS )''.
  58. What does exit(0) mean to VMS?
  59.  
  60. >C books that have ``void main'' are broken and are probably only useful
  61. >for heating purposes. 
  62.  
  63. I hope this doesn't include my copy of K&R, in which most example
  64. programs have no explicit return value from main().  This is
  65. functionally equivalent to ``void main()''.
  66.  
  67. >>so what should i use
  68. >
  69. >Use:    int main(void)
  70. >
  71. >I have ignored the possibility to use command line arguments to main. 
  72. >If you want those, you use the declaration:
  73. >
  74. >    int main(int argc, char **argv)
  75.  
  76. This much I can agree with.
  77.  
  78. -- 
  79. Murray
  80.