我在 main.cpp 文件的 main 函数外声明了一个全局静态指针。我是否需要在使用它的每个 cpp 文件中对其进行初始化?
// main.cpp
...
static int *levels;
...
int main()
...
那么,如果我必须在其他一些文件而不是main.cpp中初始化它,那么全局静态变量的用法是什么?我可以在每个 cpp 文件中声明单独的指针。
最佳答案
这取决于你什么时候需要初始化它。
如果有其他静态对象需要它:
static int * levels = new int[COMPILE_TIME_CONST];
是一个好的开始。请注意,单个编译单元中的静态变量按照它们在源代码中出现的顺序进行初始化。其他编译单元中与静态相关的初始化顺序是一个复杂得多的问题。
Definition: compilation unit is a single cpp file
and the headers it includes directly or indirectly.
幸运的是,您无法从任何其他编译单元访问级别
。 [根据评论编辑]
如果在 main 开始之前不需要它,那么:
int main()
{
levels = new int[someValueCalculatedInMain];
|
有效。
关于c++ - 全局静态指针多次初始化的用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301727/