//s_request_view() constructor is declared as below
namespace Identity_VIEW
{
Published_view_identity s_request_view("SAMPLE");
};
//The constructor is called in another source file as below,
bind_view(Identity_VIEW::s_request_view);
这个相同的代码在Windows上工作正常,但在SBC(PowerPC)上,s_request_view被传递为NULL。
任何人都可以帮我找出它为什么表现不同?
答案 0 :(得分:6)
我认为,这里的答案是编译器不保证全局变量初始化的顺序。如果你的bind_view是从另一个全局变量的构造函数中调用的 - 你就会有一个浮动的bug。
尝试使用以下方法:
namespace Identity_VIEW
{
Published_view_identity & getRequestView()
{
static Published_view_identity s_request_view ("Sample");
return s_request_view;
}
}
...
bind_view(Identity_VIEW::getRequestView());
这有助于解决全局变量初始化的顺序。不过,这个解决方案不是线程安全的(如果你关心的话)......