Unlike variables, functions are external by default. That is, they are normally visible to every file in a multi-file program. You'll notice that in FILE1.C we declared the yonder function with the extern keyword. We did this merely to improve readability; the keyword shows clearly that the function is defined in some other file. If we removed the extern from the declaration of yonder in FILE1.C, the program would work just as well as before.
At times you may want to restrict the visibility of a function in a multi-file program, making it visible in some files but not in others. By “hiding” a function from other parts of a program, you can reduce the danger of naming conflicts. For instance, if you write a library of functions to sell commercially, you probably would hide all of the library's local function names, to prevent conflicts with function names your customers might create.
Summary: The static keyword can limit a function's visibility.
As with external variables, you limit a function's visibility using the static keyword. A function declared as static is visible only in the source file that declares it. If we add static to the header of the yonder function, for example,
static void yonder( void )
the function could no longer be called from the FILE1.C file.