我正在制定一个站点代码标准,该标准禁止使用未定义或不安全的C ++部分。目前,我正在处理头文件的内容。按照惯例,头文件可能会被多个翻译单元重用。在这里,我无法提出一个相关的用例来声明具有内部链接的非常量变量,因为它仅根据名称共享,而不是根据TU中的地址和值共享。请考虑以下示例:
// header file
static int counter;
有人能提出为什么我的代码标准中不应禁止这样做的原因吗? TU专用信息可以具有任何价值吗?
答案 0 :(得分:1)
您要寻找的是static
关键字。
在头文件中时,这样声明变量
static int counter;
每个文件(包括此头文件)都将获得此变量的本地副本。从一个文件修改变量的值不会在其他文件中修改它。这就是名称的共享方式,而不是地址和值。
关于用例,我已经看到一些从C语言移植到C ++的旧代码,人们决定使用带有静态关键字的全局变量来填充来自不同C ++文件的值。我相信可以通过使用适当的封装来改进设计。
在从C语言迁移到C ++的系统中,您会找到这种类型的代码。