From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,df854b5838c3e14 X-Google-Attributes: gid109fba,public X-Google-Thread: 1014db,df854b5838c3e14 X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,df854b5838c3e14 X-Google-Attributes: gid103376,public X-Google-Thread: 10db24,fec75f150a0d78f5 X-Google-Attributes: gid10db24,public From: Bradd W. Szonye Subject: RE: ANSI C and POSIX (was Re: C/C++ knocks the crap out of Ada) Date: 1996/04/19 Message-ID: <01bb2dcd.d9f24720$c6c2b7c7@Zany.localhost>#1/1 X-Deja-AN: 150398693 references: <4k9qhe$65r@solutions.solon.com> <828964950snz@genesis.demon.co.uk> <4kbfup$2vd@news1.mnsinc.com> <4kbl5i$p3@mordred.gatech.edu> <4kbr5q$j1l@mulga.cs.mu.OZ.AU> organization: Netcom x-netcom-date: Fri Apr 19 3:52:38 AM CDT 1996 newsgroups: comp.lang.ada,comp.lang.c,comp.lang.c++,comp.edu Date: 1996-04-19T03:52:38-05:00 List-Id: On Monday, April 08, 1996, Fergus Henderson wrote... > james@amber.biology.gatech.edu (James McIninch) writes: > > >Szu-Wen Huang (huang@mnsinc.com) wrote: > >: Shouldn't true portability mean that even bugs are cross-platform and > >: fail reliably? ;) > > > >No. > > I strongly disagree -- Szu-Wen Huang is right. > Wrong! As a developer, I *wish* that bugs were reproducible enough to actually be portable. Would make the little devils a lot easier to find. > >When it says "undefined", it means "undefined". There's no way to make > >undefined behavior portable, that's why it's undefined. > > Nope, you've got cause and effect backwards. There's no way to make > undefined behavior portable *because* it is undefined. If a language > has constructs with undefined behaviour, this will lead to portability > problems. But some languages have fewer areas of undefined behaviour > than others. Some languages don't have any undefined behaviour at > all. > Hmm. I don't know about other languages, but the whole reason things are undefined in C/C++ is because all the feuding UNIX and PC developers wrote a zillion incompatible libraries that often relied on bizarre side-effects and "fallout" behavior. ANSI/ISO made such behavior "undefined" meaning that no well-behaved, well-formed, *strictly portable* program would use such a thing. That way, compiler vendors could support the undefined behavior however they wanted or not at all, to retain maximum back-compatibility. This is in contrast to "implementation-defined" behavior, which means that the vendor has to do *something* about the weirdness and document it. Undefined stuff can do whatever your compiler vendor wants it to. And it's undefined *because* it's not portable, not even to the extent that it may or not exist on your machine. Bradd