public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* extern question
@ 2006-06-06 13:50 Trevis Rothwell
  2006-06-06 14:00 ` John Love-Jensen
  2006-06-06 14:31 ` Andrew Haley
  0 siblings, 2 replies; 6+ messages in thread
From: Trevis Rothwell @ 2006-06-06 13:50 UTC (permalink / raw)
  To: gcc-help

Given the files:

/* main.c */
#include <stdio.h>

extern void foo (void);
extern void bar (void);

extern int larry;

int main (void) {
  printf ("inside main: %d\n", larry);
  foo();
  bar();

  return 0;
}

/* foo.c */
int larry = 42;

extern void foo (void) {
  printf ("inside foo: %d\n", larry);
  return;
}

/* bar.c */
int larry;

extern void bar (void) {
  printf ("inside bar: %d\n", larry);
  return;
}

...

Compiling and linking all of these together generates a program which
gives the following output:

inside main: 42
inside foo: 42
inside bar: 42

...

If I add a variable definition to bar.c (so that "larry" is given a
value in both foo.c and bar.c) then the compiler complains that the
variable is defined more than once, which is true.  But, my question
is:  should I even be allowed to declare "larry" in both foo.c and
bar.c ?  If so, why is that not seen as a problem?

Thanks!

 -- Trevis Rothwell

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2006-06-06 14:31 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-06-06 13:50 extern question Trevis Rothwell
2006-06-06 14:00 ` John Love-Jensen
2006-06-06 14:05   ` John Love-Jensen
2006-06-06 14:08   ` Aseem Rastogi
2006-06-06 14:12     ` John Love-Jensen
2006-06-06 14:31 ` Andrew Haley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).