Re: C
Extern implies static. Try to think in terms of being the compiler. It needs to know the storage space of the variable. So extern is basically saying to the compiler, here is a variable that I will be using in this file, it is of this type and storage space and I promise that it will be found at some point in another file. This makes the compiler happy. If the variable is not found in another file I believe the compiler is still happy, because it only needs to know the type (for addressing purposes) and the storage space to generate the object file. It is the linker that will choke on the variable not actually being defined.