我们发现计算机不认识g_val。
在不同文件中,声明变量和函数是必要的。即extern存在的意义。
成功运行。
可不可以在main.c文件中向test.c文件一样,extern g_val=100;呢?
答案是否定的:
1.声明没有开辟空间;
2.“=100”是初始化或赋值操作;
3.所有的变量声明的时候,不能设置初始值。
单纯的使用源文件,组织项目语言的时候,项目越大越复杂的时候,维护成本会变得越来越高!
.h:头文件组织项目结构的时候,减少大型项目的维护成本问题。
改改我们的代码:
观察一和二,我们可以很好的回答以下问题:
1.变量可以跨文件访问吗??
答:可以!
2.函数可以跨文件访问吗??
答:可以!
3.在具体的应用场景当中,有没有可能,我们不想让全局变量或函数跨文件访问,只在本文件内部被访问?------static!!!
加入static后,直接报错!且错误类型为LNK,即链接时报错。
static修饰全局变量,该变量只在本文件内被访问,不能被外部其他文件直接访问,但是可以通过函数,设置接口间接访问。
更改了全局变量的作用域。
static修饰函数,该函数只能在本文件内被访问,不能在外部其他文件直接访问。
static项目维护,提供安全保障。
观察一组现象:
static修饰局部变量,改变的是生命周期。
临时变量->全局的生命周期
但在使用的角度,跟全局变量还是存在差别,因为没有改变a的作用域,其作用域只在本代码块内有效!!!