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