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 を使用して正常に機能していました。

Texas Instruments から 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 に答える