jicheng0622

【经验笔记】IAR常见错误及警告信息表

0
阅读(13294)

    用惯了IAR觉着它真的灰常强大(虽然UI界面有点简单,没有Keil和Eclipse做的那么炫),随着使用的时间越来越长,不断有新的技巧和功能被发掘,第一是不断给俺带来惊喜,第二是成就感自我感觉良好,第三也是最重要的就是IAR功能的强大极大程度上方便了我们的产品开发,所以如此“贤内助”我们怎么舍得拒绝呢(这回轮到给IAR做广告了),哈哈~

    不过令我们头疼的是当编译程序时出现的一大堆错误及警告信息,虽然大多数问题好解决,不过也有一些错误或者警告让我们抓耳挠腮无所适从。所以这里我就列出IAR一些常见的错误和警告信息所代表的意思及相应的处理方法,希望能对正在使用IAR的同志们有所帮助。另外本信息表主要是我在逛阿莫论坛时看到的,也没有原作者相应的信息,所以无法在这里感谢了,也因此我以“经验笔记”的形式写出来(当然也有自己的一些批注)。下面我挑了一些重点的列出来并加以注释,具体原版信息表见文章最后的附件:

一、警告信息表:

1.Macro "name" redefine(宏被重新定义)

表示用#define定义的宏在程序中以不同形式的参数或者形式重新定义了。

2.undeclared function parameter "name"; assumed "int"(为声明的函数参数“name”,假设为“int”型)

缺省情况下,函数定义头部中未声明的标识符默认为“int”型。

3.unreferenced label "name"(未引用的标号“name”)

这个貌似最常遇到的警告之一了,常常我们定义了某个变量,但在程序中却没有使用它。

4.unreachable returns, the function will never return.(不能到达的返回,即执行不到RET指令,函数不能返回)

函数永远不能返回到调用的函数中,这可能是程序设计的bug造成的。当然如果是RTOS的话,这点是正常的,无需考虑,因为操作系统每一个任务就是无限循环。

5.Floating point constant out of range.(浮点常数超出范围)

浮点值太大或者太小以致于不能使用目标的浮点系统来表示。

... ...

二、错误信息表:

1.Invalid syntax(无效的语法)

系统编译器不能识别的语法,语句不符合标准。

2.Failed to open #include file "name"(打开头文件失败)

这也是比较常见的错误,编译器在编译程序的时候找不到文件里包含的头文件,可能头文件不存在或者路径不对等等。

3.member "name" of "struct" or "union" redeclared(结构体或者联合体成员变量被重新声明)

这个错误也是比较常犯的,因忘记了在结构体后者联合体中已经定义的变量,而在程序主体之中又重新定义或者声明了这个变量。

4.‘; ’ expected(忘记语句结束符'; ')

这个貌似是最常见的错误了吧,估计好多新手都犯过这个错误,养成一个语句结尾都要加‘; '的好习惯是你从菜鸟迈向大牛很重要的一步。

5.“else” without preceding “if”(“else”没有前导的“if”)

过多或者杂乱的使用if...else嵌套容易造成此类错误,常常丢三落四,所以养成好的编程风格和习惯可以避免此类错误。

... ... 

错误和警告的类型很多很多,我这里列出来的只是冰山之一角了,如果想要深入了解的见附件,未完待续~

附件为IAR编译错误信息表和警告信息表。