`static`s are not visible outside of the current [*compilation unit*](https://www.cs.auckland.ac.nz/references/unix/digital/AQTLTBTE/DOCU_015.HTM), or "translation unit". This is not the same as the *same file*. Notice that you *include* the header file into any source file where you may need the variables declared in the header. This inclusion makes the header file a part of the current translation unit and (an instance of) the variable visible inside it.