ICC错误集锦 看懂ICC AVR的报错

2019-03-24 21:08发布

新手用ICC编程的时候,经常会出现一些错误,现在将常见的错误报告整理如下。这里的一些错误是我为了展示而故意制造的,欢迎你提供你遇到的错误。排名不分先后:

一、正常编译通过
CODE:
C:iccinimakew -f main.mak
  iccavr -c -IC:iccinclude -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:桌面实验教程LED应用霓虹灯main.c
  iccavr -o main -LC:icclib -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk   -lcatmega
Device 1% full.
Done.

[Copy to clipboard]
这是我们最想看到的了,万事大吉。

二、工程中未加入.C文件
CODE:

C:iccinimakew -f main.mak
  iccavr -o main -LC:icclib -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk   -lcatmega
unknown file type @main.lk, passed to linker
!ERROR unknown file type '@main.lk'
C:iccinimakew.exe: Error code 1
Done: there are error(s). Exit code: 1

[Copy to clipboard]

解决办法:将你的程序加入工程中,可以右键程序区>>ADD to project

三、程序没有后缀名,或者后缀名不正确。
CODE:

C:iccinimakew -f main.mak
C:iccinimakew.exe: 'main' is up to date
Done.

[Copy to clipboard]

这是一个很难理解的错误,它是由工程中的程序文件没有后缀名造成的。
解决办法:将原有文件移出工程,将文件的后缀名改为.C,然后再加入工程中。

四、没有main函数
CODE:
C:iccinimakew -f main.mak
  iccavr -c -IC:iccinclude -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:桌面实验教程LED应用霓虹灯main.c
  iccavr -o main -LC:icclib -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk   -lcatmega
!ERROR file 'crtatmega.o': undefined symbol '_main'
C:iccinimakew.exe: Error code 1
Done: there are error(s). Exit code: 1

[Copy to clipboard]

解决办法,编写程序主函数MAIN。

五、没有选择目标芯片出现如下错误:
CODE:
C:iccinimakew -f main.mak
  iccavr -c -IC:iccinclude -e -l -g -Wa-W D:桌面实验教程LED应用霓虹灯main.c
  iccavr -o main -LC:icclib -g -Wl-W -bfunc_lit:0.0x2000 -dram_end:0x25f -bdata:0x60.0x25f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk
!E C:icclibcrtAVR.o(41): Code address 0 already contains a value
!E C:icclibcrtAVR.o(41): Code address 0x1 already contains a value
C:iccinimakew.exe: Error code 1
Done: there are error(s). Exit code: 1
[Copy to clipboard]


解决办法:project>>Options>>target>>device configuration 选择合适的芯片。

六、缺少分号
CODE:

C:iccinimakew -f main.mak
  iccavr -c -IC:iccinclude -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:桌面实验教程LED应用霓虹灯main.c
!E D:桌面实验教程LED应用霓虹灯main.c(52): unrecognized statement
!E D:桌面实验教程LED应用霓虹灯main.c(53): syntax error; found `}' expecting `;'
!E D:桌面实验教程LED应用霓虹灯main.c(53): syntax error; found `end of input' expecting `}'
C:iccinimakew.exe: Error code 1
C:iccinimakew.exe: 'main.o' removed.
Done: there are error(s). Exit code: 1

[Copy to clipboard]

上面的报告说明了第52行缺少一个分号,预期分号的地方出现了“}”。
解决方法,在52行末尾添加分号。
类似的有:缺少}的报错 CODE:

C:iccinimakew -f main.mak
  iccavr -c -IC:iccinclude -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:桌面实验教程LED应用霓虹灯main.c
!E D:桌面实验教程LED应用霓虹灯main.c(55): illegal statement termination
!E D:桌面实验教程LED应用霓虹灯main.c(55): skipping `void'
!W D:桌面实验教程LED应用霓虹灯main.c(55):[warning] calling function without prototype may cause errors
!E D:桌面实验教程LED应用霓虹灯main.c(56): syntax error; found `{' expecting `;'
!E D:桌面实验教程LED应用霓虹灯main.c(57): syntax error; found `end of input' expecting `}'
C:iccinimakew.exe: Error code 1
C:iccinimakew.exe: 'main.o' removed.
Done: there are error(s). Exit code: 1
[Copy to clipboard]


七:变量没有定义
CODE:

C:iccinimakew -f main.mak
  iccavr -c -IC:iccinclude -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:桌面实验教程LED应用霓虹灯main.c
!E D:桌面实验教程LED应用霓虹灯main.c(48): undeclared identifier `i'
C:iccinimakew.exe: Error code 1
C:iccinimakew.exe: 'main.o' removed.
Done: there are error(s). Exit code: 1

[Copy to clipboard]

解决办法:在程序开始前添加变量定义,比如unsigned char i;注意,定义变量要在函数的最前面进行,及在进行计算操作之前定义所有变量。

欢迎你发布你遇到的错误和解决方法,或者你遇到的错误还没解决的。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
songbo
2019-03-25 10:12
tructure or union syntax error
结构体或联合体语法错误

Structure size too large
结构体尺寸太大

Sub scripting missing ]
下标缺少右方括号

Superfluous & with function or array
函数或数组中有多余的"&"

Suspicious pointer conversion
可疑的指针转换

Symbol limit exceeded
符号超限

Too few parameters in call
函数调用时的实参少于函数的参数不

Too many default cases
Default太多(switch语句中一个)

Too many error or warning messages
错误或警告信息太多

Too many type in declaration
说明中类型太多

Too much auto memory in function
函数用到的局部存储太多

Too much global data defined in file
文件中全局数据太多

Two consecutive dots
两个连续的句点

Type mismatch in parameter xxx
参数xxx类型不匹配

Type mismatch in redeclaration of ``xxx``
xxx重定义的类型不匹配

Unable to create output file ``xxx``
无法建立输出文件xxx

Unable to open include file ``xxx``
无法打开被包含的文件xxx

Unable to open input file ``xxx``
无法打开输入文件xxx

Undefined label ``xxx``
没有定义的标号xxx

Undefined structure ``xxx``
没有定义的结构xxx

Undefined symbol ``xxx``
没有定义的符号xxx

Unexpected end of file in comment started on line xxx
从xxx行开始的注解尚未结束文件不能结束

Unexpected end of file in conditional started on line xxx
从xxx 开始的条件语句尚未结束文件不能结束

Unknown assemble instruction
未知的汇编结构

Unknown option
未知的操作

Unknown preprocessor directive: ``xxx``
不认识的预处理命令xxx

Unreachable code
无路可达的代码

Unterminated string or character constant
字符串缺少引号

User break
用户强行中断了程序

Void functions may not return a value
Void类型的函数不应有返回值

Wrong number of arguments
调用函数的参数数目错

``xxx`` not an argument
xxx不是参数

``xxx`` not part of structure
xxx不是结构体的一部分

xxx statement missing (
xxx语句缺少左括号

xxx statement missing )
xxx语句缺少右括号

xxx statement missing ;
xxx缺少分号

xxx`` declared but never used
说明了xxx但没有使用

xxx`` is assigned a value which is never used
给xxx赋了值但未用过

Zero length structure
结构体的长度为零

一周热门 更多>