嵌入式之IAR编译常见的警告
以下是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
含义:额外的花括号是非标准的。