是否有人需要在头文件中声明具有内部链接的非常量变量? 我正在研究一个站点代码标准,它禁止使用C++中未定义的或其他不安全的部分。目前我正在处理头文件的内容。按照惯例,头文件可能会被多个翻译单元重用。我无法提出一个相关的用例来声明一个具有内部链接的非常量变量,因为它只在名称上共享,而不在地址和值上共享。请考虑这个例子: // header file static int counter;

是否有人需要在头文件中声明具有内部链接的非常量变量? 我正在研究一个站点代码标准,它禁止使用C++中未定义的或其他不安全的部分。目前我正在处理头文件的内容。按照惯例,头文件可能会被多个翻译单元重用。我无法提出一个相关的用例来声明一个具有内部链接的非常量变量,因为它只在名称上共享,而不在地址和值上共享。请考虑这个例子: // header file static int counter;,c++,linkage,C++,Linkage,有人能想出一个理由来解释为什么我的代码标准中不应该禁止这种行为吗?TU特定信息是否有任何价值?您要查找的是static关键字 在头文件中,变量声明如下 static int counter; 包括此头文件在内的每个文件都将获得此变量的本地副本。修改一个文件中变量的值不会在其他文件中修改它。这就是它的名称是如何共享的,而不是地址和值 关于用例,我看到一些旧代码从C语言移植到C++,人们决定使用全局变量与静态关键字填充来自不同C++文件的值。我相信通过使用适当的封装可以改进设计 你会发现这种类型

有人能想出一个理由来解释为什么我的代码标准中不应该禁止这种行为吗?TU特定信息是否有任何价值?

您要查找的是static关键字

在头文件中,变量声明如下

static int counter; 
包括此头文件在内的每个文件都将获得此变量的本地副本。修改一个文件中变量的值不会在其他文件中修改它。这就是它的名称是如何共享的,而不是地址和值

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


<>你会发现这种类型的代码在从C语言迁移到C++的系统中。p> 就其名称而言,而不是就其地址和价值而言,这意味着什么?你能给出这样一个用例的例子吗?你说的内部链接是什么意思?我能想象的最接近的事情是在翻译单元中使用私有静态变量或匿名名称空间。你的问题还不清楚。请举例说明这会是什么样子,也许这样我们就能知道目的是什么了。我现在能想到的唯一原因是原谅这种轻描淡写的玩世不恭态度,使代码项目更难理解,即混淆。你可能是在要求一个新的解决方案。请澄清您最终想要实现的目标。@πάνταῥεῖ 内部链接是C++中三种符号链接选项之一。让我指给你看更多的信息。我相信我的问题不是XY问题。我在问一个特定的语言结构在生产代码中是否有任何用例。我相信这是混合了两个不协调的概念。一种是头文件,头文件成为每个翻译单元的一部分,其中包括头文件——有利于重用类型定义、声明和原型。另一种是内部链接-适用于全局变量,不应意外地与同名的其他全局变量链接。把这两件事放在一起。。。不确定这是不是个好主意。