为什么全局变量没有用字符串初始化我在extern变量中给出的内容

时间:2010-06-29 04:35:27

标签: c++ powerpc

//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。

任何人都可以帮我找出它为什么表现不同?

1 个答案:

答案 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());

这有助于解决全局变量初始化的顺序。不过,这个解决方案不是线程安全的(如果你关心的话)......