When we define a variable or a function inside the file/global scope, they have external linkage by default. They can be referred to from other .c files/translation units. The static keyword in front of variables and functions in a global scope marks them visible only to the current source file/translation unit, the unit in which they are declared/defined. We say the static specifier makes them have internal linkage
. So, globals we do not want to share with other .c files should be marked as static. Here, both globals globalx and globalfn() are defined inside the source.c ...