Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

4.6.2 lint

可以使用 lint 库检查程序是否与已在其中进行调用的库函数兼容,其中包括函数返回类型的声明以及函数所预期参数的数量和类型等。标准 lint 库与 C 编译系统提供的库对应,并且通常存储在系统上的标准位置。按照约定,lint 库的名称采用 llib-lx.ln 形式。

缺省情况下,lint 标准 C 库 llib-lc.ln 将附加到 lint 命令行末尾。通过调用 -n 选项可以禁止检查与该库的兼容性。其他 lint 库作为 -l 的参数进行访问。以下示例指示 lint 检查 file1.cfile2.c 中函数和变量的用法是否与 lintllib-lx.ln 兼容。

% lint -lx file1.c file2.c

仅由定义组成的库文件完全作为普通源文件和普通 .ln 文件处理,区别在于不会针对以下情况发出错误消息:函数和变量在库文件中的用法不一致,或者函数和变量在库文件中已定义但未在源文件中使用。

要创建您自己的 lint 库,请在 C 源文件的开头插入指令 NOTE(LINTLIBRARY),然后使用 -o 选项以及指定给 -l 的库名称针对该文件调用 lint。以下示例仅导致源文件中以 NOTE(LINTLIBRARY) 开头的定义写入文件 llib-lx.ln 中。

% lint -ox file1.c file2.c

请注意 lint -occ -o 的类似性。可以相同的方式从函数原型声明的文件创建库,不同的是必须在声明文件的最前面插入 NOTE(LINTLIBRARY)NOTE(PROTOLIB(n))如果 n 为 1,则原型声明写入库 .ln 文件,这与旧样式的定义相同。如果 n 为 0(缺省 值),则取消该进程。使用 -y 调用 lint 是创建 lint 库的另一种方法。以下命令行导致该行中命名的每个源文件被视为以 NOTE(LINTLIBRARY) 开头,并且只有其定义被写入 llib-lx.ln

% lint -y -ox file1.c file2.c

缺省情况下,lint 在标准位置搜索 lint 库。要指示 lint 在非标准位置的目录中搜索 lint 库,请使用 -L 选项指定目录路径:

% lint -Ldir -lx file1.c file2.c

在增强模式下,lint 生成 .ln 文件,这些文件存储的信息比在基本模式下生成的 .ln 文件存储的信息多。在增强模式下,lint 可以读取和理解由基本或增强 lint 模式生成的所有 .ln 文件。在基本模式下,lint 只能读取和理解由基本 lint 模式生成的 .ln 文件。

缺省情况下,lint 使用 /lib/usr/lib 目录中的库。这些库采用基本 lint 格式。可以运行一次 makefile,并以新格式创建增强 lint 库,从而使增强 lint 更有效地工作。要运行 makefile 并创建新库,请使用以下命令:

% cd install-directory/prod/src/lintlib; make

其中 install-directory 为安装目录。运行 makefile 之后,lint 在增强模式下使用新库,而不是使用 /lib/usr/lib 目录中的库。

将先搜索标准位置,然后再搜索指定的目录。