承接上文,如果在其他文件已经定义了一个常规外部变量,在当前文件中想继续定义相同变量名的全局变量,该怎么操作?
//file1
int num = 20; //external declaration
--------------------------------------
//file 2
int num = 10; //fails
上文违反了单定义规则
解决方法:
在file2文件中定义一个静态外部变量,在该文件中,静态变量将隐藏常规外部变量;
//file2
static int num = 10; //static 指出num变量的链接性为内部;即静态全局变量,作用域为当前该文件,不再为外部调用;
静态,无链接性定义
作用域为代码块,无链接性,在代码块中声明,使用static关键字。可以理解为局部的全局变量,只初始化一次,每次调用该代码块,不再进行初始化;