static functions

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





    * 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'.


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

Martin Leslie