在文件内部以及各文件之间检查使用变量、参数和函数的不一致性。一般说来,对原型的使用、声明和参数执行的检查与 lint 对旧样式函数执行的检查相同。如果程序未使用函数原型,lint 将比编译器更严格地检查每个函数调用中参数的数量和类型。lint 还标识 [fs]printf() 和 [fs]scanf() 控制字符串中转换定义和参数之间的不匹配。
示例:
在文件内部,lint 会标记执行到底部但未向调用函数返回值的非 void 函数。过去,程序员通常通过省略返回类型指明某个函数不应返回值: fun() {}。该约定对于编译器没有任何意义,它会将 fun() 视为具有返回类型 int。可使用返回类型 void 来声明函数以消除该问题。
在文件之间,lint 检测非 void 函数不返回值但由于它在某个表达式中有值而仍被使用的情况以及相反的情况(即,函数返回值,但在随后调用中有时或总是被忽略)。当值总是被忽略时,可能表示函数定义无效率。当值有时被忽略时,可能是样式错误(通常不测试是否存在错误条件)。如果无需检查 strcat()、strcpy() 和 sprintf() 等字符串函数或 printf() 和 putchar() 等输出函数的返回值,可将违例调用强制转换为 void 类型。
lint 标识已声明但未使用或定义、已使用但未定义或已定义但未使用的变量或函数。将 lint 应用于某个集合中要一起装入的某些文件而非全部文件时,它会产生关于出现以下情况的函数和变量的错误消息:
在那些文件中声明,但在其他地方定义或使用
在那些文件中使用,但在其他地方定义
在那些文件中定义,但在其他地方使用
可调用 -x 选项以禁止第一种错误消息,调用 -u 以禁止后两种错误消息。