看板 DFBSD_kernel 關於我們 聯絡資訊
On Thu, 31 Mar 2005 17:44:34 +0200, Joerg Sonnenberger <joerg@britannica.bec.de> 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@FreeBSD-uk.eu.org> 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