Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 是否没有为初始化对象创建复制?_C_Embedded_Codewarrior_68hc12 - Fatal编程技术网

C 是否没有为初始化对象创建复制?

C 是否没有为初始化对象创建复制?,c,embedded,codewarrior,68hc12,C,Embedded,Codewarrior,68hc12,我使用codewarrior为HC12编译,我有两个120元素的数组:score和dur。我以典型的方式初始化了它们:无符号整数分数[120]={…};然而,当我试图编译它时,我得到了一个链接器错误,上面写着“L1981:没有为初始化对象“score”创建copydown”。初始化数据丢失。“我不知道这意味着什么,也不知道如何才能使它创建copydown。请注意,当我将这些值放入main()中时,该程序编译并似乎设置得很好,但我需要它们是全局变量,因为它们是通过中断访问的。可能有两个原因: 您

我使用codewarrior为HC12编译,我有两个120元素的数组:score和dur。我以典型的方式初始化了它们:无符号整数分数[120]={…};然而,当我试图编译它时,我得到了一个链接器错误,上面写着“L1981:没有为初始化对象“score”创建copydown”。初始化数据丢失。“我不知道这意味着什么,也不知道如何才能使它创建copydown。请注意,当我将这些值放入main()中时,该程序编译并似乎设置得很好,但我需要它们是全局变量,因为它们是通过中断访问的。

可能有两个原因:

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

对我来说已经有一段时间了,但是您是否已将数组分配给.map文件中的段/地址?还是你记性不好?没关系,我能修好的。对于可能遇到这种情况的任何其他人,您需要将变量设置为“const”,否则它将立即删除数组的内容。CodeWarrior真他妈的挑剔,我发誓。事实上这是一个很大的区别<代码>常量数组进入闪存,而非常量数组进入RAM。我猜“copydown”是启动时从闪存复制到RAM的初始化代码。这很有道理。我只希望错误更详细地说明它告诉我要做什么。@user702905您应该将此作为您自己问题的答案发布,以帮助未来的读者。