我正在将一个类移植到C++,并且需要在创建我的类的第一个实例之前执行一些初始化代码; 在main()获得控制之前执行代码适合我.如何在C++中做到这一点?
wil*_*ilx 10
您可以在namespace范围内使用对象的构造函数.
namespace {
struct Init
{
Init()
{
// Initialization code here.
}
} init_;
} // namespace
Run Code Online (Sandbox Code Playgroud)
请注意,这有一些限制,特别是在Windows上.在Windows上,在保持加载程序锁的情况下调用ctor,因此您无法执行任何需要加载DLL等的操作.这包括WinSock的初始化,因为它可以尝试加载外部DLL.
根据一些消息来源,您可以通过使用来解决此限制QueueUserAPC.这种技术也有局限性,尽管不同.我已经使用了这个,我的实验表明,只有当你使用Visual Studio及其C库作为DLL,即MSVCRT.DLL,MSVCR100.DLL等(/MD或/MDd开关)时,这才有效.
经过一些测试后,如果我从DllMain()排队APC,似乎APC方法有效,但如果我从一个类的静态全局实例的ctor排队APC,它就不起作用.
| 归档时间: |
|
| 查看次数: |
1098 次 |
| 最近记录: |