Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #7353

Re: Use of EXTERN

From James Kuyper <jameskuyper@verizon.net>
Newsgroups comp.lang.c
Subject Re: Use of EXTERN
Date 2011-07-01 07:11 -0400
Organization A noiseless patient Spider
Message-ID <iuka0u$kpp$1@dont-email.me> (permalink)
References <iuimrb$9c$1@speranza.aioe.org>

Show all headers | View raw


On 06/30/2011 04:38 PM, Tom Young wrote:
> Hi all.  I've read through all the K&R2 chapters and I'm now reading the 
> appendices.
> Specifically, I'm reading section A11 - Scope & Linkage p227.  I have a
> question about the "extern" property.
> 
> Section A11.2 Linkage p228 says:
> 
> "All declarations for the same object or function identifier with external
> linkage refer to the same thing, and the object or function is shared by
> the entire program."
> 
> and
> 
> "... the first external declaration for an identifier gives the identifier
> internal linkage if the static specifier is used, external linkage
> otherwise."
> 
> My questions are, is there any point to declaration an external object
> "extern"?  Does it have any effect(s)?  I'm almost positive I've seen code
> with external declarations that included the keyword "extern", but given
> the quoted statements above, that seems redundant.  Am I missing
> something?

The problem is that, unless you use the keyword 'extern', the
declaration of an object will be treated as a tentative definition. If
no actual definition is present in the rest of the translation unit, a
tentative definition is automatically converted into an actual
definition, implicitly zero-initialized. (6.9.2p2)

C allows only one external definition of an identifier in an entire
program (6.9p3), so you can only allow the declaration to become a
definition in one translation unit. In all other translation units, you
must use the 'extern' keyword to keep it from converting into a definition.
-- 
James Kuyper

Back to comp.lang.c | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

Use of EXTERN Tom Young <tyoung37@gmail.invalid> - 2011-06-30 20:38 +0000
  Re: Use of EXTERN pete <pfiland@mindspring.com> - 2011-06-30 17:37 -0400
  Re: Use of EXTERN James Kuyper <jameskuyper@verizon.net> - 2011-07-01 07:11 -0400

csiph-web