以下是IAR编译时常见的警告,若想忽略掉某种警告,可用如下方法:

打开 IAR工程 -> Options -> C/C++ Compiler -> Diagnostics -> Suppress these diagnostics 在下方框中填入警告编号即可,多个警告用',' 英文逗号隔开

同理如果想将警告变为错误在对应框中填入警告编号即可。

  • Warning[Pe001]: last line of file ends without a newline
    含义:文件的最后一行没有以换行符结束。

  • Warning[Pe012]: parsing restarts here after previous syntax error
    含义:在之前的语法错误之后,解析在此处重新开始。(这个警告通常出现在代码中有多个语法错误时)。

  • Warning[Pe025]: Label '标签名' is defined pubweak in a section implicitly
    含义:标签在某个节中被隐式定义为pubweak,这可能是由于IAR新版本与旧版本不兼容导致的。
    解决方法:修改启动文件中的相关部分
    例如将SECTION .text:CODE:REORDER(1)替换为SECTION .text:CODE:REORDER:NOROOT(1)SECTION .text:CODE:REORDER:ROOT(1)

  • Warning[Pe029]: expected an expression
    含义:编译器期望一个表达式,但未找到。

  • Warning[Pe067]: expected a "}"
    含义:编译器期望一个右花括号,但未找到。

  • Warning[Pe068]: integer conversion resulted in a change of sign
    含义:整数转换导致符号变化,通常是由于左移操作符可能导致有符号整数溢出。

  • Warning[Pa089]: enumerated type mixed with another enumerated type
    含义:枚举类型与另一个枚举类型混合使用。

  • Warning[Pe177]: function "函数名" was declared but never referenced
    含义:该警告表示函数被声明但从未被引用或调用。这通常发生在定义了一个函数,但在后续的代码中并没有调用这个函数。

  • Warning[Pe191]: type qualifier is meaningless on cast type
    含义:类型限定符对类型转换没有意义。

  • Warning[Pe223]: function "函数名" declared implicitly
    含义:该警告表示该警告表示函数被隐式声明,未声明该函数或未包含该函数的头文件就被调用。这通常是由于缺少头文件或函数未声明引起的。

  • Warning[Pe229]: macro "宏" redefined
    含义:该警告表示宏被重复定义。

  • Warning[Pe550]: variable "变量名" was set but never used
    含义:该警告表示变量被赋值但从未被使用。

  • Warning[Pe991]: extra braces are nonstandard
    含义:额外的花括号是非标准的。