P-P*_*P-P 15 c++ pragma static-variables visual-studio visual-studio-2015
我在Visual Studio 2015 sp3中使用C++.通过
#pragma init_seg(compiler)
Run Code Online (Sandbox Code Playgroud)
,我首先初始化一些静态变量(到内存管理). https://msdn.microsoft.com/en-us/library/7977wcck.aspx
但是还有
Run Code Online (Sandbox Code Playgroud)#pragma init_seg(compiler)
在wcerr.cpp(Microsoft Visual Studio 14.0\VC\crt\src\stl\wcerr.cpp)中,所以这些对象在我的对象之前初始化.
我可以wcerr.cpp通过任何编译/链接选项强制我的对象在对象之前被初始化吗?
Tro*_*iar 13
解决方案之一是尝试将静态变量包装到静态函数:
static type& My_static_obj() {
static type my_static_obj_;
return my_static_obj_;
}
Run Code Online (Sandbox Code Playgroud)
它看起来像一个简单的Singleton类型,并调用Construct On First Use Idiom.由于标准(C++ 11及以上版本),它保证初始化一次(甚至原子化!),并且在其c-tor内部,这样的对象可以访问其他"静态"变量,因此,如果没有圆形变量之间的依赖关系,将严格定义初始化的顺序.
有关其他信息,请参阅此问题以及此"首次使用构造"构造的其他说明.
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |