这是一个相当复杂的情况下的问题。我的一个头文件中有一个静态指针。它无处不在,这就是为什么我把它作为静态指针。这样我就可以在我的主要功能中快速初始化它,以便其他文件可以使用它。
问题是这样的,即使在我初始化它并将东西放入其中之后也是如此。其他文件只发现它为 NULL。这就像每个包含带有静态指针的 header 的文件都会为自己制作一个副本,即使其他人初始化它,每个文件都有自己单独的副本。当然,否定拥有全局变量的目的。
我该如何应对?也许我对静态变量的理解有误,或者是因为它是一个指针?
我应该将其声明为:&variable = 5;或者就像 variable = 5;或 &variable = (int)5?
最佳答案
It is like every file that includes the header with the static pointer makes a copy of it for itself and even when others initialize it, each file has their own separate copy.
这就是 static
应用于命名空间范围内的变量时的含义:变量被赋予内部链接,使其成为给定翻译单元(源文件)的“本地”。
如果您在头文件的命名空间范围内有一个 static
变量,并且您将该头文件包含在多个 .cpp 文件中,那么将有该变量的多个实例:一个对应于每个 .cpp 文件。包含头文件的 cpp 文件。
如果你想要一个在多个源文件之间共享的全局变量,你需要将它设为extern
。在头文件中将变量声明为 extern,然后在您的一个 .cpp 文件中定义 extern 变量。
关于visual-c++ - 全局静态指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431595/