The keyword static is implemented for data local to function, but not for data local to files. As a consequence, a global variable cannot be hidden to other compilation units. In other words, all global variables can be referenced via extern declarations.
static int x ; // not supported void f() { static char c ; // supported /* ... */ }
The keyword extern is implemented, so you can use extern to reference entities which are defined within another compilation unit, or manually located entities (see next section).