A static
global variable is local to the translation unit it is defined in. So, if you define static int a;
in two different translation units, this will create two independent variables. If you define a non-static global variable int b;
in two translation units, you will experience a linker error (but you can use extern int b;
in one of the two translation units to tell the linker that it should use the global variable from the other translation unit).