有人可以解释一下如何从其他 C/C++ 文件中访问静态变量吗?
4 回答
static
在不同的上下文中意味着不同的东西,所以我不确定你的意思。但是假设您的意思是标记为的顶级范围变量static
,答案是没有可靠的方法可以直接从其他文件访问它——将其标记为static
事实上正是您确保这一点的方式。
如果您想从其他文件授予对静态变量的受限访问权限,请提供一个函数或一组函数,该函数或一组函数具有在文件中声明的签名.h
和在同一文件中的定义,作为根据需要读取或操作变量的静态变量。
如果您想授予对静态变量的不受限制的访问权限,那么,呃,只需删除static
关键字,因为您想要的static
意思相反。
一种方法是将静态变量的地址传递给另一个文件中的函数。这是可能的方式之一。
声明一个标识符(对象的名称)并static
限制其范围并为其提供内部链接或不提供链接。因为名称没有外部链接,所以其他源文件(单独编译)中的相同标识符无法链接到名称。
这意味着其他源文件不能使用该标识符来访问该对象。访问没有名称的对象的唯一方法是通过地址。static
因此,其他源文件只有在以某种方式(例如在函数参数或数据结构中)给出其地址时才能直接访问声明的标识符。
其他源文件可能通过读取或写入对象值或提供与对象相关的其他服务的辅助函数间接访问对象。
您可以创建一个 .h 文件并在其中创建静态变量。然后,您必须将该 .h 文件包含到您想要使用它的所有其他文件中。请记住,不会实现静态行为!