home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16233 < prev    next >
Encoding:
Text File  |  1992-11-09  |  2.0 KB  |  47 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!ukma!asuvax!cs.utexas.edu!csc.ti.com!tilde.csc.ti.com!mksol!mccall
  3. From: mccall@mksol.dseg.ti.com (fred j mccall 575-3539)
  4. Subject: Re: Is this ANSI C?
  5. Message-ID: <1992Nov9.190607.3156@mksol.dseg.ti.com>
  6. Keywords: A bet
  7. Organization: Texas Instruments Inc
  8. References: <1dhkrtINNj99@duvel.cs.ubc.ca>
  9. Date: Mon, 9 Nov 1992 19:06:07 GMT
  10. Lines: 35
  11.  
  12. In <1dhkrtINNj99@duvel.cs.ubc.ca> hassan@cs.ubc.ca (Moustafa Hassan) writes:
  13.  
  14. >#include <stdio.h>
  15. >void main(void)
  16. >{
  17. >  printf("hello world\n");
  18. >}
  19.  
  20. >To settle a dispute, would someone please tell me whether the above
  21. >is ANSI C.  I claim that 'main' (according to the pure ANSI standard)
  22. >must return an integer value, but nonetheless, some non-purists claim
  23. >that the above is ANSI.  Please do not respond via email; I want 
  24. >my opponent (8^) to be able to see all the messages.
  25.  
  26. Main must return a value to the invocation environment which is of
  27. type int (in other words, you are correct).  Consider that the startup
  28. code 'expects' an integer to come back from your main routine (unless
  29. you go in and edit the startup code).  On many environments, it won't
  30. matter if you change it to 'void' IN THAT ENVIRONMENT.  If you ever
  31. move the code it may matter very much indeed.  And in some
  32. environments, things will die an ugly death at the end of your program
  33. because the startup code popped something off the stack (assuming a
  34. stack) or 'retrieved' a return value in some way and that return
  35. valued doesn't exist.
  36.  
  37. The CALLED code (in this case, main) can elect to simply ignore
  38. arguments that are there (argc, argv), but you have no control over
  39. the environment you are called from.  Therefore, you should always
  40. explicitly return an integer to the environment from main().
  41.  
  42. -- 
  43. "Insisting on perfect safety is for people who don't have the balls to live
  44.  in the real world."   -- Mary Shafer, NASA Ames Dryden
  45. ------------------------------------------------------------------------------
  46. Fred.McCall@dseg.ti.com - I don't speak for others and they don't speak for me.
  47.