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


Martin Leslie