在C语言中
- 在.c中(为什么是.c,后面注意事项会说明)定义全局静态变量,控制访问范围,仅仅局限在本文件中才能访问,即便是 extern 外部声明也不可以;这样一来就允许在多个源文件中定义相同的变量,且不受干扰。否则编译会报重复定义。同理修饰于函数。
在C++中
注意事项
- 在C/C++中,不推荐在头文件中定义static全局变量,如果在头文件中定义了static变量,被多个文件引用,编译可以顺利通过!则该头文件被包含了多少次,这些变量就定义了多少次,就有多少个副本,且相互独立,并且破坏了访问的控制范围。
- static修饰的变量只会被初始化一次(此处应注意初始化和赋值操作,可以多次赋值),
- 在C++11标准中,已经弃用了static的C的使用方式,而改为未命名空间。