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