Lattice/UNIX incompatibility

Henry Spencer henry at utzoo.UUCP
Sat Dec 29 08:45:57 AEST 1984


> Every version of the Lattice compiler I have seen has four
> non-standard things:
> 
> ...
> 
> 	3. Every declaration of an external variable but
> 	   one must say 'extern'.
> 
> 	4. Case is ignored in external variables.

These two are actually legitimate C.  In fact, if you look carefully
at K&R, it would appear to *require* #3, although in fact many of the
real implementations are looser.  (This is about the way the ANSI C
people are treating it, too.)  #3 is often necessary in non-Unix systems
because the linker insists that an occurrence of an external variable
is either (a) a reference to something declared elsewhere, or (b) a
(unique) declaration, and you *must* specify which.  So you cannot just
treat all occurrences as equivalent, the way the Unix setup does; one
of them (or all but one of them) must be specially marked.

#4 is likewise a legitimate variation when coping with stupid linkers.

Whether either of these is actually *necessary* in the environment the
Lattice compiler is running in, I can't say.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry



More information about the Comp.lang.c mailing list