# static functions

static functions are functions that are only visable to other functions in the same file. Consider the following code.

main.c
       #include

       main()
       {
         Func1();

         Func2();
       }

funcs.c
       /*************************************
        *
        * Function declarations (prototypes).
        *
        *************************************/

       /* Func1 is only visable to functions in this file. */

       static void Func1(void);

       /* Func2 is visable to all functions. */

       void Func2(void);

       /*************************************
        *
        * Function definitions
        *
        *************************************/

       void Func1(void)
       {
         puts("Func1 called");
       }

       /*************************************/

       void Func2(void)
       {
         puts("Func2 called");
       }

If you attempted to compile this code with the following command,

       gcc main.c funcs.c

it will fail with an error simular to.....

       undefined reference to `Func1'

Because 'Func1' is declared as static and cannot be 'seen' by 'main.c'.

## Notes:

For some reason, static has different meanings in in different contexts.

1. When specified on a function declaration, it makes the function local to the file.

2. When specified with a variable inside a function, it allows the vairable to retain its value between calls to the function. See static variables.

It seems a little strange that the same keyword has such different meanings....

## See Also:

static variables

C++ extensions for static

Top | Master Index | Keywords | Functions