当前位置: 代码迷 >> WinCE >> keil for arm 编译异常:the size of an array must be greater than zero
  详细解决方案

keil for arm 编译异常:the size of an array must be greater than zero

热度:1154   发布时间:2016-04-28 13:49:12.0
keil for arm 编译错误:the size of an array must be greater than zero
在编译时总会出现如下错误提示
C:\Keil\ARM\INC\ADI\dac.h(48): error: #94-D: the size of an array must be greater than zero

双击上面一行会自动转到
typedef struct s_DAC {

  s_DAC_Channel Channel[DAC_COUNT]; [email protected] */

} s_DAC;

但typedef struct s_DAC {}是系统自带的,总不会有错吧。是不是我在什么地方没设置好呢,请好心人指点一下啊。

------解决方案--------------------
DAC_COUNT宏定义的值是多少?
------解决方案--------------------
探讨

DAC_COUNT宏定义的值是多少?

------解决方案--------------------
error: #94-D: the size of an array must be greater than zero
数组大小必须大于0,楼主的那个宏定义为0,编译出错。
我记得C99才支持0数组的,不过在实际中还没有使用过。
------解决方案--------------------
一般报系统文件错,都是你的代码引起的,不要想着去修改系统的文件。

现在无法判断是什么错误。

LZ,建议你将建议部分注释后进行编译,看看是什么地方引起错误的。
------解决方案--------------------
No section matches selector - no section to be FIRST/LAST 是链接时的错误,wuxian.sct文件是Scatter loading配置文件,报错在*.o (RESET, +First)这一行,你看汇编代码中有Section RESET的块没有,要把你的包含中断向量表的汇编文件放在First。
或者把包含RESET的贴出来看看。

------解决方案--------------------
你在.s文件搜一下有没有RESET字段

探讨

引用:
No section matches selector - no section to be FIRST/LAST 是链接时的错误,wuxian.sct文件是Scatter loading配置文件,报错在*.o (RESET, +First)这一行,你看汇编代码中有Section RESET的块没有,要把你的包含中断向量表的汇编文件放在First。……

------解决方案--------------------
AREA Reset, CODE, READONLY 这个就是Reset段,假设这个汇编文件是startup.s,你把
*.o (RESET, +First)换成
startup.o(RESET, +First)看看有什么变化。

这块就是ARM复位时从这里开始执行:
AREA Reset, CODE, READONLY
ARM

Vectors LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
  相关解决方案