gpt4 book ai didi

c++ - 为什么我的外部变量还没有初始化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:43 26 4
gpt4 key购买 nike

我正在使用两个编译单元编译一个共享库:globals.cppstuff.cppglobals.cpp 文件初始化了一些在 stuff.cpp 中使用的外部变量。我遇到的问题是 stuff.cpp 中的代码在 globals.cpp 中的代码有机会为外部变量赋值之前运行。例如,我看到正在使用一堆 0 值。这个问题取决于我在哪个平台上编译/运行代码——有些可以,有些则不能。

如何解决这个问题?我可以强制 globals.cpp运行吗?

最佳答案

你不能(以一致的方式)

但您可以解决它。

全局.cpp

// If you have a global variable that has to be initial by a constructor
MyObj globalX;

// Instead do this

MyObj& globalX() { static MyObj x; return x;}

你还有一个全局变量。但是通过把它放在一个函数中,我们知道它什么时候被使用。通过使用函数的静态成员,它会在第一次调用函数时被初始化,但之后不会。因此您知道它将在首次使用前正确构建。

关于c++ - 为什么我的外部变量还没有初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9092479/

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