作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我长篇大论之后的新问题。这里的问题是,我有一个全局 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/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!