static functions

Joerg Sonnenberger joerg at britannica.bec.de
Thu Mar 31 07:55:01 PST 2005


On Thu, Mar 31, 2005 at 05:36:11PM +0200, Miguel Mendez wrote:
> On Thu, 31 Mar 2005 16:11:17 +0100
> Jonathon McKitrick <jcm at xxxxxxxxxxxxxxxxx> wrote:
> 
> 
> > Sorry this is such a lame question, but I never quite figured out what
> > 'static' does to a function declaration.  Obviously for a variable, it
> > allocates memory for the lifetime of the process rather than on the stack just
> > for one function call.

Only for function scope variables.

> >  But what about 'static' for all the kernel functions
> > that have no return value?	
> 
> static foo(blah blah) restricts the scope of the function to that
> module, i.e. it's not visible outside that .c file. You usually do that
> to keep private functions from being called from somewhere else. That
> way other parts of the program will only talk to the published API.

That's right. It's also what happens with file scope variables.

Beside keeping the namespace cleans, it allows the compiler to choose
a different ABI for internal functions. It also allows the compiler to
warn about unused local functions and variables.

Joerg





More information about the Kernel mailing list