static用于不同的上下文环境时,表达的意义是不一样的:
1、 当它用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external变成internal,但标识符的存储类型和作用域不受影响。用这种方式声明的函数或者变量只能在声明它们的源文件中访问。
2、 当它用于代码块内部的变量声明时,static用于修改变量的存储类型,从自动变量修改为静态变量,但变量的链接属性和作用域不受影响。用这种方式声明的变量在程序执行之前创建,并在程序的整个执行期间一直存在,而不是每次在代码块开始运行时创建,在代码块执行完毕后销毁。
3、 用字内联函数的定义中,比如:
static inline void wolf(unsigned long tail_size)
总之,static能够将函数从“外”变“内”,将变量从“动”变“静”。被修饰的函数或者变量,只能在声明的源文件中被访问!