是否有人需要在头文件中声明具有内部链接的非常量变量?

时间:2019-01-25 10:58:14

标签: c++ linkage

我正在制定一个站点代码标准,该标准禁止使用未定义或不安全的C ++部分。目前,我正在处理头文件的内容。按照惯例,头文件可能会被多个翻译单元重用。在这里,我无法提出一个相关的用例来声明具有内部链接的非常量变量,因为它仅根据名称共享,而不是根据TU中的地址和值共享。请考虑以下示例:

// header file
static int counter;

有人能提出为什么我的代码标准中不应禁止这样做的原因吗? TU专用信息可以具有任何价值吗?

1 个答案:

答案 0 :(得分:1)

您要寻找的是static关键字。

在头文件中时,这样声明变量

static int counter; 

每个文件(包括此头文件)都将获得此变量的本地副本。从一个文件修改变量的值不会在其他文件中修改它。这就是名称的共享方式,而不是地址和值。

关于用例,我已经看到一些从C语言移植到C ++的旧代码,人们决定使用带有静态关键字的全局变量来填充来自不同C ++文件的值。我相信可以通过使用适当的封装来改进设计。

在从C语言迁移到C ++的系统中,您会找到这种类型的代码。