Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

4.3.9 -errchk=l(, l)

执行 l 指定的其他检查。缺省值为 -errchk=%none。指定 -errchk 与指定 -errchk=%all 等效。l 是一个以逗号分隔的检查列表,由下表中的一个或多个标志组成,例如 -errchk=longptr64,structarg

表 4-1  -errchk 标志
含义
%all
执行 -errchk 的所有检查。
%none
不执行 -errchk 的任何检查。这是缺省值。
[no%]locfmtchk
lint 的第一遍检查期间检查类似 printf 的格式字符串。无论您是否使用 -errchk=locfmtchklint 始终会在其第二遍检查时检查类似 printf 的格式字符串。
[no%]longptr64
检查是否可移植到其 long 整型和指针大小为 64 位、平整型大小为 32 位的环境。即使使用了显式强制类型转换,也检查指针表达式和 long 整型表达式是否赋值为平整型。
请注意,系统头文件定义用于操纵指针的类型。使用 -m32 标志,这些类型可以定义为 int 等基本类型,这些类型无法安全操纵指针,从而导致 false 警告。例如,size_t 的使用:
#include <stdlib.h>
size_t
myfiunk(uint32_t param)
{
        return sizeof(uint64_t) * param;
}
.
$ lint -m32 -mux -errchk=longptr64 bug.c
(5) warning: assignment of 64-bit integer to 32-bit integer
$
[no%]structarg
检查通过值传递的结构参数,并在形式参数类型未知时报告情况。
[no%]parentheses
检查代码中优先级的透明度。使用此选项可增强代码的可维护性。如果 -errchk=parentheses 返回一个警告,请考虑使用额外的括号明确地表示代码中操作的优先级。
[no%]signext
检查如下情况:标准 ISO C 值保留规则允许在无符号整型的表达式中进行带符号整型值的符号扩展。仅当同时指定 -errchk=longptr64 时,该选项才会产生错误消息。
[no%]sizematch
检查较长整数到较短整数的赋值并发出警告。对于具有不同符号的相同长度的整数之间的赋值(unsigned int 获取 signed int),也会发出这些警告。