|
发表于 2010-6-21 23:17:00
|
显示全部楼层
Re:请教:vc2008下能否强制构造未引用全局对象?
呵呵,这个问题我也遇到过,据说是MS Compiler的bug.
在DLL中没有这个问题,所有的静态对象都能初始化,不管有没有被引用.
在其他地方的话,比如exe中另外的一个源文件
或者另一个lib中的对象,如果没有引用的话,编译器把它干掉..汗..
我的解决方法比较麻烦,
在你分散的文件中声明一个变量,然后在主流程中引用一下就好了.
//init.cpp
static init_class init;//这是你的初始化对象和初始化类(init_class)
int forece_ref; // or const char* forect_ref;
//主流程:
int main()
{
init();
...
}
void init()
{
extern int force_ref; // or extern const char* force_ref;
force_ref = 0; //应用init.cpp中的数据,这个时候编译器就不会乱来了,会老老实实的初始化你的init.cpp中的对象
} |
|