全局变量中的静态常量与常量

Static const vs const in global variable

本文关键字:常量 静态 全局变量      更新时间:2023-10-16

在 Foo.h 中,我将 1 个全局变量定义为

static const int g_var = 4;

然后,我将这个头文件包含在许多不同的头文件和.cpp文件中。如果我只是写

int g_var = 4;

我收到错误"g_var已经定义",这是可以理解的,所以我不得不添加静态,所以它只初始化一次。但是使用

const int g_var = 4; 

解决了"已经定义"的问题。我读到这是因为 const 全局变量默认具有内部链接。那么这里的关键字静态是多余的吗?

静态关键字是一个访问说明符。如果在函数中使用静态,则允许变量存在于函数范围之外,并在不同的函数调用之间保留其值。 如果在函数外部定义静态变量或常量,则其范围将仅限于该特定文件。 使用常量,静态关键字可以简单地优化编译。