在Foo.h中,我将1个全局变量定义为
static const int g_var = 4;
然后我将此头文件包含在许多不同的头文件和.cpp文件中。如果我只是写
int g_var = 4;
我得到错误“g_var已经定义了”,这是可以理解的,所以我不得不添加静态,所以它只是初始化一次。但是使用
const int g_var = 4;
解决了“已定义的”问题。我读到这是因为const全局变量默认具有内部链接。那么关键字static在这里是多余的吗?
答案 0 :(得分:1)
Static关键字是一个访问说明符。如果在函数内部使用static,它允许变量存在于函数作用域之外,并在不同函数调用之间保留其值。 如果在函数外部定义静态变量或常量,则其范围将限制为该特定文件。 使用常量,static关键字只需优化complilation。