Subject: Re: Tcl7.5 and NetBSD-current
To: None <current-users@NetBSD.ORG>
From: der Mouse <mouse@Collatz.McRCIM.McGill.EDU>
List: current-users
Date: 02/27/1996 14:43:07
> long long is *forbidden* by ANSI.

Granted.

> The list "char short int long" is an exhaustive one,

Where does the standard specify this?  I haven't looked into it
recently, but I've never seen anything that forbids, say, an __int64
type, or indeed an extension such that __intN is an N-bit integer type
for any N.

> and the format "%qd" is not defined.

Which puts it into undefined or implementation-defined behavior, does
it not?  Which does not render our _implementation_ nonconforming,
since conforming code must not use %qd, though it does render that of
our code which _uses_ %qd nonconforming.

> Any implementation on which you need to use an extension to get at
> basic functionality is nonconforming.

What "basic functionality" of C is accessible only via an extension?  I
think that as far as C is concerned, we are conforming, in that we
accept conforming programs.  The C standard does not specify lseek().
Indeed, the external name "lseek" is in the reserved-to-the-user
namespace as far as C is concerned.

POSIX may be another matter; I know a good deal less about it.

> A conforming C implementation is forbidden from offering larger
> types,

See above.

> and must diagnose "long long" as a syntax error.

True.  Or at least it must emit at least one diagnostic.  With the
correct flags, ours does.  (With those flags it also warns about a
whole lot of stuff in some header files.  But a conforming
implementation is permitted to warn about damn near anything it
pleases, provided the warnings are just warnings, not errors.)

					der Mouse

			    mouse@collatz.mcrcim.mcgill.edu