2

私は codewarrior を使用して HC12 用にコンパイルしています。2 つの 120 要素の配列 (score と dur) があります。通常の方法で初期化しました: unsigned int score[120] = { ... }; しかし、コンパイルしようとすると、「L1981: 初期化されたオブジェクト "スコア" のコピーダウンが作成されませんでした。初期化データが失われました」というリンカ エラーが発生します。それが何を意味するのか、またはどのように作成できるのかがわからないため、コピーダウンが作成されます。このプログラムはコンパイルされ、値を main() に配置すると正常に設定されるように見えますが、割り込みによってアクセスされるため、グローバル変数である必要があります。

4

1 に答える 1

1

考えられる理由は 2 つあります。

  • この変数をスタック (悪い考え) で宣言したか、小さすぎて格納できないメモリ セグメントで宣言したかのどちらかです。.prm ファイルを変更して、これらのような大きな変数を専用の RAM セグメントに配置することを検討してください。
  • または、「最小限の」スタートアップ コードで Codewarrior プロジェクトを作成しました。そうする場合は、静的ストレージ期間を持つオブジェクトの初期化フェーズが削除される非標準のセットアップを選択します。
于 2013-03-07T13:14:48.973 に答える