static和extern功能简介
在进行大型项目时,大部分的全局变量都有static或extern这两个关键字修饰,extern可以声明变量,使同一个变量可以在不同的文件中重复利用,static修饰全局变量可以屏蔽其他文件对该文件中变量的访问,防止变量名称重复
extern的功能详细说明
- extern “C” void func(int a),被extern “C” 开头修饰的函数会以C的规则去编译C++的代码,这个功能几乎只存在于用C++去写C的库文件之中。
- extern int g_int,用extern修饰的变量就是的声明而未定义(注意:extern int g_int = 0 就是声明加定义了),这个常用于一下两种情况
- 在头文件中声明变量,这样多个cpp文件可以对头文件进行包含,且只要在一个头文件中对这个变量进行定义就可以了,合理的实现一个变量在多个文件中的重复利用。
- 在其他cpp文件中已经对某个变量进行了定义,其他文件可以使用extern 该变量,使该变量的作用范围扩展到这个文件之中。比如a.cpp文件中定义了int a = 5, 在b.cpp文件中只需要写上 extern int a,即可使a的作用域扩展到b.cpp文件中。
- 在代码风格良好的项目中,第二种情况不应该出现或很少出现,因该尽量将在多个cpp文件中使用的变量统一声明在.h文件中
static的详细用法
在C语言中,static 只有1,2,3三种用法,但C