DragonFly BSD
DragonFly kernel List (threaded) for 2005-04
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: static functions


From: "Sepherosa Ziehau" <sepherosa@xxxxxxxxxxxx>
Date: Fri, 01 Apr 2005 17:33:25 +0800

On Thu, 31 Mar 2005 17:44:34 +0200, Joerg Sonnenberger <joerg@xxxxxxxxxxxxxxxxx> wrote:

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@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.
Then `static __inline' also makes big macro less attractive ;-)

Joerg





[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]