gpt4 book ai didi

visual-c++ - 全局静态指针问题

转载 作者:行者123 更新时间:2023-12-04 04:25:04 26 4
gpt4 key购买 nike

这是一个相当复杂的情况下的问题。我的一个头文件中有一个静态指针。它无处不在,这就是为什么我把它作为静态指针。这样我就可以在我的主要功能中快速初始化它,以便其他文件可以使用它。

问题是这样的,即使在我初始化它并将东西放入其中之后也是如此。其他文件只发现它为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com