On 04/12/2017 05:33 PM, Eric Smith via cctalk wrote: > On Wed, Apr 12, 2017 at 9:55 AM, Sean Conner via cctalk < > cctalk@classiccmp.org> wrote: > >> Yeah, I'm having a hard time with that too. I mean, pedantically, it >> should be: >> >> #include <stdlib.h> >> int main(void) { return EXIT_SUCCESS; } >> >> where EXIT_SUCCESS is 0 on every plaform except for some obscure system no >> one has heard of but managed to influence the C committee back in the late >> 80s. >> > Returning zero from main to indicate success is perfectly valid according > to the most recent three C standards. ISO/IEC 9899:1990(E) §7.10.4.3, > ISO/IEC 9899:1999(E) §7.20.4.3 ¶5 and ISO/IEC 9899:2011(E) §7.22.4.4 ¶5 > both requires that either 0 or EXIT_SUCCESS as an argument to exit() be > considered success. EXIT_SUCCESS may or may not be zero, but zero is > considered success regardless of that. > > One annoyance with the way the standard defines the EXIT_x macros is that > if you use other exit status values, including those from sysexits.h (not > part of the C standard), it's possible that an intended failure status > value might happen to match EXIT_SUCCESS on some standard-compliant > implementation. > > §5.1.2.2.3 ¶1 of both :1999 and :2011 state that if execution reaches the > closing brace of main without a return statement, that it is equivalent to > returning zero, so even the return statement in this alleged non-portable > example is unnecessary. > > On the other hand, the earlier ISO/IEC 9899:1990(E) §5.1.2.2.3 says that > main returning with no value yields an undefined termination status. > > -- Eric "not a language lawyer but I play one on the internet" Smith
What the heck its religion. So here's my stir... BASIC, why is that the most universal language implemented on nearly every micro and many other systems. Seriously it is a suck language but it gets work done. The yabut, is its THE only language that is somewhat portable and generally implemented on most everything can be named. Regardless of the CPU there basic on it or for it. Its been stuffed into 1k or EPROM if you can live with integers. Can't say that with C until recently with cross compilers, or Fortran, Pascal, Java, or Perl. The only exception is maybe assembly but porting a program from say 6502 to z80 is a major pain. C isn't perfect. Come to think of most of the languages are pretty much in that boat. Me, Assembly the native machine knows it and if need be I can crank a small program by hand. C is nice what you want some structure and still get close but not quite married to the iron. Pascal is good, it will typecheck you sensless. Never saw Java, Ruby, or python with anything under 32 bits. LUA is cool if you have at least a meg of ram. The list goes and the problems go on. In the end you use what you know and what is available. So I have a Tandy M100 with an 80C85, and 32K of ram... Pick BASIC, peak and poke assembly (from inside basic) or out of choices. Same for the PX-8 but that runs a Z80 and OS (CP/M) but even it is space constrained enough that without a disk C or any other compiler will not fit (even with the 120K ramdisk wedge) but BASIC is in ROM. Sure the S100 machines run it well with lots of ram and disk. Even compilers like BDS-C. But with two floppys around 240 or 360K your in tight spaces for that. So from a long term STAB (Society To Abolish Basic, down with GOTO!) member its often the only choice to get something done. In the end its about getting something done. If your being paid more so and less choice. Allison