2

我正在使用 codewarrior 为 HC12 进行编译,并且我有两个 120 元素数组:score 和 dur。我以典型的方式初始化它们: unsigned int score[120] = { ... }; 但是,当我尝试编译它时,我收到一个链接器错误,上面写着“L1981:没有为初始化对象“分数”创建复制。初始化数据丢失。” 我无法弄清楚这意味着什么或如何制作它,因此它会创建一个副本。请注意,当我将它们放入 main() 时,该程序可以编译并且似乎可以很好地设置值,但我需要它们是全局变量,因为它们是通过中断访问的。

4

1 回答 1

1

有两个可能的原因:

  • 您要么设法在堆栈上声明此变量(坏主意),要么在太小而无法包含它的内存段中声明。考虑通过更改 .prm 文件将此类大型变量放在专用 RAM 段中。
  • 或者您已经创建了一个带有“最少”启动代码的 Codewarrior 项目。如果这样做,您将选择一个非标准设置,其中删除了具有静态存储持续时间的对象的初始化阶段。
于 2013-03-07T13:14:48.973 回答