Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| 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> |
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
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