Path: utzoo!attcan!uunet!tut.cis.ohio-state.edu!mailrus!ames!haven!adm!smoke!gwyn
From: gwyn@smoke.BRL.MIL (Doug Gwyn)
Newsgroups: comp.lang.c
Subject: Re: question about scope & linkage
Keywords: scope, linkage
Message-ID: <10701@smoke.BRL.MIL>
Date: 10 Aug 89 20:52:05 GMT
References: <57257@tut.cis.ohio-state.edu>
Reply-To: gwyn@brl.arpa (Doug Gwyn)
Distribution: na
Organization: Ballistic Research Lab (BRL), APG, MD.
Lines: 12

In article <57257@tut.cis.ohio-state.edu> Christopher Lott  writes:
>(what is a 'translation unit' ??)

A source file and the other files it #includes, directly or indirectly.

>... However, the linker does not complain about a multiply-defined symbol, ...

Yes, that's because your C implementation uses the "COMMON" model for external
object linkage, instead of the "DEF/REF" model described in K&R (1st Edition).
Most UNIX systems are that way.  For portability, you should fix the source so
that there is only one non-"extern" declaration of such an object among all
the translation units that produce the object modules that get linked together.