gpt4 book ai didi

c++ - 静态库中变量的 init_priority 属性

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

这是我长篇大论之后的新问题。这里的问题是,我有一个全局 vector<Base*> vObjs在我的主应用程序中,我得到了 Derived obj在链接到应用程序的每个静态库 中。如果我指定 vObjs具有 101 的 init_priority 和每个 obj在静态库中说... 1000,是否保证 vObjs将在 obj 之前调用其构造函数在静态库中?感谢您的帮助。

最佳答案

让我回应您可能想要重新考虑为此使用全局变量的其他回复。然而,一种可能的(我确信仍然存在缺陷)改进至少消除了对 init 优先级的需求。

您可以创建一个返回对静态局部变量的引用的函数,而不是使用全局 vector。 C++ 规则确保函数 static local 总是最迟在首次使用时被初始化,因此您不必担心 vector 未被初始化。

vector<LibInfo*>& get_gvLibInfo()
{
vector<LibInfo*> gvLibInfo;
return gvLibInfo;
}

然后你的注册看起来像:

vector<LibInfo*>& get_gvLibInfo();

void reglib()
{
get_gvLibInfo().push_back(this);
}

关于c++ - 静态库中变量的 init_priority 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889531/

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