extern question
Trevis Rothwell
tjr@gnu.org
Tue Jun 6 13:50:00 GMT 2006
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
More information about the Gcc-help
mailing list