0

我有一个使用 python 自动生成的大型数据映射,使用boost::assign如下初始化:

const my_large_map_type map_data = boost::assign::map_list_of(key1, type)
     (key2, type)
     (key3, type)
     (key4, type)
     // Lots of stuff
     (key6000, type)
     ;

使用 GCC 4.3 工作正常,文件在几秒钟内编译。

我刚刚尝试使用德州仪器为 ARM 处理器提供的 GCC 编译器 4.6.3 编译相同的文件。

不幸的是,这个文件的编译永远不会完成,不会发出任何错误。

这是 GCC 编译器 4.6.3 的已知问题吗?

有没有另一种方法可以初始化大地图?我目前无法使用 C++11。

4

1 回答 1

0

这可能是初始化顺序错误吗?如果这是一个静态数据结构,并且您从另一个静态数据结构的构造函数(在开始之前运行main())引用它,那么它可能尚未初始化。数据是在您到达时创建的main()吗?

设置初始化的另一种方法是动态创建它,但将其设置在按需初始化的静态变量中,例如

static my_large_map_type& getMap() {
  static my_large_map_type gMap;
  if (gMap.empty()) {
    gMap = boost::assign::map_list_of(key1, type)
     (key2, type)
     ... ;
  }
  return gMap;
}
于 2013-06-19T08:48:30.977 回答