C itself does not mandate any return type and any argument type for any function, including not main. ANSI C does mandate the prototype of main because it regulates the C language in the context of operating systems, and especially that of POSIX compliant operating systm conventions. When C is used to write operating systems or programs which run on bare silicon (like on PICs), the return type of main is void, or *ignored*. Example: Linux kernel libc function (note the __attribute__ ((noreturn)) ): http://tldp.org/LDP/LGNET/84/hawk.html I think that inspecting the generated startup code by hand is necessary in all cases, at least until one gains confidence in how the compiler handles the various types and arguments passed to main. Fwiw on some systems which lack the equivalent of stderr the return type of main is a pointer to a data structure allocated in the program which is supposed to contain error data and trace data (state etc). Peter -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist