PC Lint是GIMPEL SOFTWARE公司开发的一款专业的C/C++静态代码检查工具,可以检查未初始化变量、数组越界、空指针等编译器难以发现的潜在问题,可以大大提高代码效率的灵活性,侧重于代码的逻辑分析,是编程人员的最佳辅助工具,欢迎下载!
pc lint功能介绍
1、PC Lint是一种静态代码检测工具,可以说,PC-LINT是一种更加严格的编译器,不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误。
2、PC lint不但可以检测单个文件,也可以从整个项目的角度来检测问题,因为C语言编译器固有的单个编译,这些问题在编译器环境下很难被检测,而PC Lint在检查当前文件的同时还会检查所有与之相关的文件,可想而知,它会对我们有很大的帮助。
3、 PC lint支持几乎所有流行的编辑环境和编译器,比如Borland C++从1.x到5.x各个版本、Borland C++ Build、GCC、VC、watcomC/C++、Source insight、intelC/C++等等,也支持16/32/64的平台环境。
4、支持Scott Meyes的名著(Effective C++/More Effective C++)中说描述的各种提高效率和防止错误的方法。
pc lint安装配置教程
1.在本站下载pclint9.opdown.rar,解压缩(目录中的patch文件夹不用,因为它只能将PC-lint升级到9.0e )
2.点击pclint9setup.exe 进行安装,安装目录为C:\lint
3.安装之后勾选:I want to run the configration program now ,点击下一步,进入自动配置界面
4.歡迎界面,提示版權信息,點擊“下一步”
5.顯示PC-lint命令行使用說明,點擊“下一步”
6.選擇“創建一個新的STD.LNT”配置文件,這裏使用默認路徑,點擊“下一步”,出現警告,選擇“是”
7.选择编译器,这里选择“Microsoft Visual C++ 2008(co-msc90.Int)”,点击下一步
8.选择内存模式。可以根据自己程序区和数据区的实际大小选择一个合适的内存模式,这里选择“32-bit Fat Model(-ms, -si4, -sp4)”,點擊“下一步”
9.選擇所要的支持庫的配置信息,選擇我們常用的
Active Template Library(ATL),
Microsoft Foundation Class Library(MFC),
Standard Template Library(STL),
Windows 32-bit,
Windows NT
點擊“下一步”
10.选择是否支持为使用C/C++编程提出过重要建议的作者的一些关于编程的个人意见。根据自己喜好选择,这里左边选择第3个【Scott Meyers(Effective C++ More Effective C++ and Effective C++ 3rd Edition)】,右边选择第1个【Dan Saks】和第3个【MISRA 2004】。點擊“下一步”
11.选择如何包含头文件。选择Create -i options,选择下一步
12.選擇工程所包含的頭文件目錄
选择Visual Studio 2010的安装目录下的头文件目录
“D:\VS2010\VC\include”
“D:\VS2010\VC\atlmfc\include”
當然也可以後期可以進入改lnt文件自己手動添加
(注:“VS2010”是我的Visual Studio 2010的安装目录)
13.提示lnt文件已經被創建過了,點擊“確定”
14.提示是否創建新的配置文件,選擇“否”
15.选择生成一个控制全局编译信息显示情况的选项文件,选“No”来生成该文件。點擊“下一步”,点击“确定”。
16.选择所支持的集成开发环境,这里选择“(env-vc9.Int)Microsoft’s Visual C++.NET 2008”。點擊“下一步”
17.选择把LIN.BAT拷贝到任何一个Path目录下,这里选择“Prepend my PC-lint directory to my PATH(create LSET.BAT)”
18.提示LIN.BAT已經被創建,點擊“確定”。完成安裝配置。
19.将配置从Visual Studio 2008升级到Visual Studio 2010。
19.1從官網下載配置文件(http://www.gimpel.com/html/ptch90.htm)
19.2找到env-vc10.lnt,co-msc100.h和co-msc100.lnt三個文件,分別下載(右擊——>目標另存爲)
19.3 进入到PC-Lint的安装目录下(C:\lint)删除属于配置VS 2008的对应文件(co-msc90.lnt,co-msc90.h和env-vc9.lnt),替换成VS 2010相对应的文件(env-vc10.lnt,co-msc100.h和co-msc100.lnt)
刪除VS2008的對應文件
替換爲VS2010的對應文件
19.4打開(C:\lint)目錄下的std.Int,把關鍵字”co-msc90.Int“替換成”co-msc100.Int)。
20.更新PC-Lint版本。
20.1查看當前PC-Lint的版本:
进入命令提示符,进入PC-Lint的安装目录,输入“lint-nt -v”或者“lin”,显示当前版本为9.00a
20.2 升级PC-Lint:
在官網(http://www.gimpel.com/html/ptch90.htm)上下載更新文件
( 下载“lpatch.exe ”和从 “l9-a-b.lp” 至“l9-h-i.lp ” )
將它們全部拷貝到PC-Lint的安裝目錄下(C:\lint)
20.3寫一個批處理文件:
在該目錄下新建文本文檔,在其中寫入
lpatch l9-a-b.lp
lpatch l9-b-c.lp
lpatch l9-c-d.lp
lpatch l9-d-e.lp
lpatch l9-e-f.lp
lpatch l9-f-g.lp
lpatch l9-g-h.lp
lpatch l9-h-i.lp
pause
保存,重命名为“update.bat ”,点击运行

點擊運行:
20.4查看升級後PC-Lint的版本:
进入命令提示符,进入PC-Lint的安装目录,输入“lint-nt -v”或者“lin”,显示当前版本为9.00i
至此,PC-Lint安装配置完成并成功从9.00a升级到9.00i 。
将PC-Lint 集成到Visual Studio 2010中
1.打开VS 2010,在Tools(工具)->External Tools(外部工具),选择”Add(添加)”。
2.測試單個文件的配置
Title(标题): PC-lint 9.0 Check Project
Command(命令): c:\lint\lint-nt.exe
Arguments(参数): -i”c:\lint” std.lnt env-vc10.lnt “(ItemFileName)(ItemExt)”
Initial Directory(初试目录): $(ItemDir)
勾選“使用輸出窗口”,點擊“確定”完成配置。
3.測試整個項目的配置
Title(标题): PC-Lint 9.0 Check Current File
Command(命令): c:\lint\lint-nt.exe
Arguments(参数): +ffn -i” c:\lint “std.lnt env-vc10.lnt “(TargetName)”InitialDirectory(初试目录):(ProjectDir)
點擊“確定”完成配置。
4.參數說明
+ffn :可以找到所有文件
-i"c:\lint" :设置默认路径(根据自己的安装路径来填写)
sstd.lnt env-vc10.lnt "$(TargetName)" :设置lint-nt.exe参数,std.lnt为选择的配置文件;env-vc10.lnt 为vs2010环境下的输出格式;后面的"$(TargetName)"为文件的文件名包括文件的路径。工具的初始化目录为文件的目录$(ProjectDir)。
pc lint使用教程
1、pc-lint目錄下幾個重要的文件及程序
lint-nt.exe:PC-lint的可執行程序。
config.exe: PC-lint的配置文件程序。
pc-lint.pdf:PC-lint的PDF格式的在線手冊,本文的大部分內容是從中得來的。
msg.txt: 对于错误消息编号的详细解释。
Lnt/: 这个目录下有些东西还是值得认识一下。
co-....lnt: 指定的编译器的可选编译文件。
co.lnt: 通用的可选编译文件。
sl-....c 非ANSI编译器的标准库文件模块
sl.c: 非ANSI编译器的通用标准库文件模块
env-....lnt:不同平台下的可选文件,包括MS Visual Studio和其他各种编辑工具。
lib-....lnt:可选文件, 特定的"有挑战性"的库文件。
au-....lnt: 可选文件, 作者们推荐的检测條件。
2、 PC-lint的介绍
2.2.1 错误信息编号
對于大部分的錯誤消息,PC-lint都提供了一個關聯的錯誤編號。小于1000的錯誤編號是分配給C語言的,1000以上的錯誤編號則是分配給C++語言的。1000呢?呵呵,被保留了。先看一個表格。
C C++ 告警级别
语法错误(Syntax Errors) 1 - 199 1001 - 1199 1
内部错误(Internal Errors) 200 - 299 0
致命错误(Fatal Errors) 300 - 399 0
告警(Warnings) 400 - 699 1400 - 1699 2
提示(Informational) 700 - 899 1700 - 1899 3
可选信息(Elective Notes) 900 - 999 1900 - 1999 4
對于C語言,1~199是與語法錯誤;200~299是PC-lint內部錯誤,應該決不會發生的;300~399是致命錯誤,通常是由于超越了某些限制;400~699是警告消息,提示被檢查的程序中可能存在錯誤;700~899是提示信息,這些提示信息可能有錯誤,也可能是合法的程序,取決于個人的編程風格;900~999則是一些稱爲可選信息,一般不會自動輸出。
PC-lint提供了高级级别设置选项-wLevel,缺省的级别为3级。-w0, -w1 , -w2, -w3, -w4 分别可以生成上述表格中对应告警级别和级别更低的告警,其中级别越低告警越重要。同样,也提供了处理库函数的头文件告警级别的选项-wlib(Level),缺省的级别也是3级,级别对应的含义与前者一样。
2.2.2 选项的规则
通過使用加號"+"和減號"-",以注釋的形式插入代碼中,來恢複和屏蔽指定的被檢查的選項。格式如下:
/*lint option1 option2 ... optional commentary */
或者
//lint option1 option2 ... optional commentary
注意:lint必須是小寫,選項的一行不能超過80個字符,否則導致致命的錯誤,錯誤信息的編號就是323。如果選項確實有很長,可以通過換行的方式來實現。另外屏蔽和恢複的選項的代碼可以放在宏定義中,宏被展開後,這些選項會生效。
2.2.3 选项中的空格
因为空格是用来分隔选项的,除此之外只能出现在圆括号的旁边或是空格自身被引用(例如operator new按语法要求中间就有空格)。舉個例子:
-esym(534,printf,scanf,operator new)
-esym(534, printf, scanf, operator new)
-esym( 534 , printf , scanf , operator new )
对于第三个,空格出现在圆括号的旁边,也出现在自身被引用的地方(operator new)。另外operator和new之间出现两个空格也是不合法的,因为它违反了语法规则。另外,也可以使用双引号("")来保护空格,例如:
-"dWORD=unsigned short"
2.2.4 选项的分类
PC-lint的選項有300多種,可以分爲下面幾類:
(1)禁止錯誤信息
選項開頭使用"-e"可以禁止指定的錯誤消息,使用"+e"恢複指定的錯誤消息。如果禁止消息,只不過不讓消息輸出,並不影響PC-lint的處理過程。順便提一下前面提到的"-wLevl",這個選項是禁用指定級別及以上的消息的顯示。
1)格式一:
-e# 禁止指定的错误消息,#代表数字或是数字匹配符,错误消息的编号为#。
+e# 恢复指定的错误消息,错误消息的编号为#。
舉個例子:
/*lint -504*/
...Code.....
/*lint +504*/
第一行關閉了編號爲504的錯誤消息,最後一個行則重新打開了編號爲504的錯誤消息。其中數字也可以包含匹配符號,'?'匹配單個字符,"*"匹配多個字符。
比如:
(1)-e7???, 则关闭了700~799这个范围内的错误消息。
(2)-e1*, 则关闭了所有以1开头的编号的错误消息。
同样匹配符也能使用在-esym, -elib, -elibsym, -efile, -efunc, -emacro, -etemplate, -e(#), --e(#), -e{#} and –e{#}.
2)格式二:
-e(#[,#]...) 为下一个表达式禁止指定的错误消息,在这个表达式结束后被禁止的错误消息自动恢复,#代表数字或是数字匹配符,错误消息的编号为#。
舉個例子:
a = /*lint -e(413) */ *(char *)0;
它等價于下面的語句:
a = /*lint -save -e413 */ *(char *)0
/*lint -restore */;
前一種方法更簡單且更有效。
3)格式三:
--e( # [,#]... ) 比上面的那个管的更宽一些,它对整个表达式有效,举个例子就明白它与上面的区别了。
舉個例子:
a = /*lint --e(413) */ *(int *)0 + *(char *)0;
整个表示式是指*(int *)0 + *(char *)0,下个一表达式指的是*(int *)0。区别一目了然,例子中将禁止两个编号为413 的错误消息, 如果使用 -e(413) ,则只禁止第一个编号为 413 的错误消息。
4)格式四:
-e{ # [, #] …} 对下一个语句或者声明有效
舉個例子:
//lint -e{715} suppress "k not referenced"
void f( int n, unsigned u, int k )
{
//lint -e{732} suppress "loss of sign"
u = n; // 732 not issued
//lint -e{713} suppress "loss of precision"
if(n)
{
n = u; // 713 not issued
}
} // 715 not issued
通過例子可以看出,這種格式放在函數之前,則對整個函數産生作用,放在賦值語句前則只對賦值語句起作用,放在if或while前面,則對這一段語句起作用。在C++的類定義或命名空間聲明前放這麽個選項,則將整個類或命名空間內的代碼中指定的錯誤消息給禁止了。
5)格式五:
--e{ # [, #] … } 对于其所处的 {} 号区域内的整个代码体有效。 {} 号区域可能是复杂的语句、函数体、C++的类,结构体或联合体的定义、C++的命名空间等。如果这个选项放在一个模块前,而模块前没有 {},则对整个模块生效。
6)格式六:
!e# 仅对其所在行有效。
if( x = f(34) ) //lint !e720
y = y / x;
在这个例子中,仅对那一行禁止编号为720 的错误消息。看一下C语言的代码的用法:
if( x = f(34) ) /*lint !e720 */
y = y / x;
如果有更多的錯誤信息要禁止,而又無法使用通配符,則可以使用下面的方法:
n = u / -1; //lint !e573 !e721
7)格式七:
-ealetter 参数不匹配禁止
8)格式八:
-efile( #, file [, file] ... ) inhibits and
+efile( #, file [, file] ... ) re-enables
9)格式九:
-efunc( #, Symbol [, Symbol] ... ) inhibits and
+efunc( #, Symbol [, Symbol] ... ) re-enables
10)格式十:
-elib( # [, #] ... ) inhibits and
+elib( # [, #] ... ) re-enables
11)格式十一:
-elibsym( # [, # ] ... ) inhibits
+elibsym( # [, # ] ... ) re-enables
12)格式十二:
-emacro( #, symbol, ... )
+emacro( #, symbol, ... )
13)格式十三:
-emacro( (#), symbol, ... )
--emacro( (#), symbol, ... )
-emacro( {#}, symbol, … )
--emacro( {#}, symbol, … )
14)格式十四:
-esym( #, Symbol [, Symbol] ... ) inhibits and
+esym( #, Symbol [, Symbol] ... ) re-enables
禁止和恢複指定的符號的錯誤消息。舉個C++的例子(實際應用中不太可能出現):
class X
{
void f(double, int);
};
分析结果中会提示某行的member X::f(double, int)没有被引用,为了屏蔽这个消息,你可以使用
-esym( 754, X::f )
符号的完整签名为X::f(double, int),然而符号的名字为X::f,而且可以使用符号的名字来禁止错误消息的出现。另外,-esym 和 -e# 选项是独立的,舉個例子:
-e714 +esym( 714,alpha )
對于alpha來說,它禁止了編號爲714的錯誤消息,第二個選項並不會恢複編號爲714的錯誤消息,除非前面有個對應的-esym(714,alpha)。
15)格式十五:
-etd( TypeDiff [, ...] ) inhibits
+etd( TypeDiff [, ...] ) re-enables
16)格式十六:
-etemplate( # [,#] ... )
+etemplate( # [,#] ... )
禁止和恢复在扩展模板(expanding templates)时的错误消息。
(2)變量類型大小和對齊選項
1)變量類型大小選項
這組選項允許設置各種變量類型的大小和對齊方式。由于默認的設置于絕大多數的編譯器都是一致的,所以這些參數的單獨設置通常是沒有必要的。使用變量類型大小的選項是爲了特定的架構,而不是本地架構。舉個例子,你需要爲嵌入式系統設置int和pointers通常爲16位,那麽你應該指定:
lint -si2 -sp2 ...
下面的列表,#號代表一個小的整型值,僅舉幾個:
-sb# 字节的位数为#,默认的是-sb8,
-sbo# sizeof(bool)就变为一个参数了,默认值为1,
-sc# sizeof(char) 就变为 #,默认值为1,
-slc# sizeof(long char) 就变为 #,默认值为2,
...
2)對齊選項
僅有兩個可選擇的注釋信息來檢測不規律的對齊,它們的錯誤編號是958和959,詳細的介紹就省略了吧。
(3)冗長信息選項
冗長信息選項采用-v和+v開頭來控制,冗長信息指的是在檢測過程中産生的一些與編譯過程有關的信息,或者說,冗長信息與編譯過程中消息的頻率和種類有關。如果使用-v,則冗長信息進被發送到標准輸出,而是用+v,冗長信息進則會被發送到標准輸出和標准錯誤中。如果要將錯誤信息重定向到一個文件中,並想要在終端查看冗長信息和被解釋後的錯誤消息,+v選項是非常有用的。
(4) 标志选项
采用+f,++f,-f,--f開頭開介紹標志位。一個標志位在內部采用一個整型值表達。通過認爲:
ON 假如整型值大于0
OFF 假如整型值小于或等于0
默認設置時1爲ON,0爲off,對于的關系如下:
+f...:通過把標志爲設置爲1而把它設置爲ON
-f...:通過把標志爲設置爲0而把它設置爲OFF
++f...:標志位增1
--f...:標志位減1
後面兩個選項在只設置局部標志而不影響全局設置時,非常有用。
(5)消息顯示選項
消息顯示選項用于定義消息輸出的格式。
1)控制錯誤消息的高度。
-h選項被用來控制消息的高度,通常的格式如下:
-h[F][f][a][r][mn][m][m/M/][I]N
s 表示每條消息后的空格。其他的就不介绍了。
2)控制錯誤消息的寬度。
格式如下:
-width(W,Indent)
例如:-width(99,4)
3)消息格式化選項
格式如下
-format=...
3)附加信息選項
格式如下:
-append(errno,string)
(6)其他選項
1)-A 要求严格使用ANSI C/C++处理。
其他的不介紹了。
2.2.5 库文件检查
這裏的庫文件時指那些編譯後的庫文件,比如標准的I/O庫,又比如第三方的庫文件,例如windows的庫文件。關注庫文件的重要特色是因爲以下兩點:
(1)庫文件的源代碼通常不可獲得。
(2)庫文件在多個正被你使用pc-lint檢查的程序中使用。
库的头文件描述了库的部分或完整的接口。舉個例子:
hello.c
#include
main()
{
HelloWorld();
printf( "hello world/n" );
}
如果没有"#include "这一行代码,使用PC-lint检查上述代码,PC-lint会抱怨printf()既没有声明也没有定义,会给出编号为718错误信息。如果"stdio.h"被当做一个库文件的头文件,那么PC-lint不会要求给出printf()的源代码。
(1)格式一:
+libclass( identifier[, identifier] ... )
用來指定名爲identifier的頭文件當做庫頭文件。identifier是其中下面之一:
angle: 所有尖括号包含起来的头文件
foreign:所有在搜索列表中目錄下的頭文件
ansi:标准ANSI C/C++ 的头文件
all:所有頭文件
默认情况下,+libclass(angle,foreign) 是有效的,这也是为什么hello.c的代码没有要求给出printf()源代码的原因。
(2)格式二:
+libdir( directory [, directory] ... )
-libdir( directory [, directory] ... )
指定目錄的。
(3)格式三:
+libh( file [, file] ... )
-libh( file [, file] ... )
增加或移出那些已经被 +libclass 和 +/-libdir 已确定的头文件,以达到要求或不要求给出源代码。舉個例子:
+libclass( ansi, angle )
+libh( windows.h, graphics.h )
+libh( os.h ) -libh( float.h )
要求所有的ansi和angle(除了float.h),还有那三个windows.h, graphics.h, os.h也会被当做库头文件。
2.2.6 强类型检查
什么是强类型?C/C++的变量都有类型,不同类型之间的赋值可能会产生告警,可以说C/C++变量的类型是强类型。有强类型,自然有弱类型。比如一些脚本语言,它们的变量就不存在具体的类型,可以相互之间赋值,它们就是弱类型语言。为什么在使用PC-lint对C/C++进行检查时,要进行强类型检查呢?因为有诸如使用typedef定义的数据类型,可以避开编译器的类型检查。舉個例子:
typedef int Count;
typedef int Bool;
Count n;
Bool stop;
...
n = stop ;
對于這段代碼,編譯器是不會告警的,但是最後一行代碼是錯誤的。所以,強類型檢查選項是必要的。
強類型檢查選項"-strong"和附加選項"-index"可以完全的或部分的對typedef定義的數據類型進行強類型檢查,保證相同類型的變量才能相互賦值。
(1)強類型檢查選項strong的格式如下:
-strong( flags[, name] ... )
name是強類型,flags是指定的屬性,flags參數可以是A、J、X、B、b、l和f。如果name被省略,所有使用typedef定義的數據類型的flags的屬性不能被其他的-strong選項所識別。
flags参数 弱化字符
A i 忽略初始化
r 忽略Return语句
p 忽略参数传递
a 忽略赋值操作
c 忽略将常量赋值(包括整数常量、常量字符串等)给强类型的情况
z 忽略Zero赋值
X 当把强类型的变量赋值给其他变量的时候进行类型检查。弱化参数i, r, p, a, c, z同样适用于X并起相同的作用。
J 当强类型与其它类型进行运算时(逻辑运算、关系运算、数学运算等)进行检查
e 忽略==、!=和?:操作符
r 忽略>、>=、<和<=
o 忽略+、-、*、/、%、|、&和^
c 忽略该强类型与常量进行以上操作时的检查
z 忽略该强类型与Zero进行以上操作时的检查
B 类型是Boolean,一般情况下只能使用一个name(指格式中的name), 而且它应该和其他flags联合使用。
B選項有兩個作用:
1. 出于强类型检查的目的,每一个Boolean操作符都采用返回一个和Type兼容的类型。Boolean操作符就是那些显示
爲true或false,也包括前面提到的四種關系運算符和兩種等于判斷符,取反操作符!,二元操作符&&和||。
2. 在所有需要判断Bolean值的上下文中,比如if语句和while语句,都应该检查这个强类型,否则产生告警。
b 仅仅假定每一个Bolean类操作符都将返回一个与Type类型兼容的返回值。与B选项相比,b选项的限制比较宽松。
l 库标志,当强类型的对象从库函数中获得值,或者将强类型对象的值作为参数传递给库函数等情况下,不产生告警。
f 与B或b连用,表示不应该将1位长度的位域当做Boolean类型,否则表示1位长度的位域被缺省假定为Boolean类型。
這些選項順序對功能沒有影響,但是A和J選項的弱化字符必須緊跟在它們之後。B選項和b選項不能同時使用,f選項必須搭配B選項或b選項使用,如果不指定這些選項,-strong的作用就是僅僅聲明type爲強類型而不作任何檢查。下面用一段代碼演示-strong選項的用法:
//lint -strong(Ab,Bool) <选项是以注释的形式插入代码中>
typedef int Bool;
Bool gt(int a, b)
{
if(a) return a > b; // OK
else return 0; // Warning
}
代碼中,Bool被聲明成強類型,如果沒有指定b選項,第一個return語句中的比較操作就會被認爲與函數類型不匹配。第二個return語句導致告警是因爲0不是Bool類型,如果添加c選項,例如-strong(Acb,Bool),這個告警就會被禁止。
(2) 另一个强类型检查选项是index,格式如下:
-index( flags, ixtype, sitype [, sitype] ... )
這個選項是對strong選項的補充,它可以和-strong選項一起使用。這個選項指定ixtype是一個排他的索引類型,它可以和強索引類型sitype的數組(或指針)一起使用,ixtype和sitype被假定爲後來使用typedef聲明來定義的的類型名稱。flags可以是c或d,c允許將ixtype和常量作爲索引使用,而d允許在不使用ixtype的情況下指定數組的維數(Dimensions)。
常見錯誤
1. 在PC-lint的Configuration向导结束后,会在PC-lint的安装目录下生成std.lnt文件,里面有一行:
options.lnt -si4 -sp4
如果按照“靜態代碼檢查工具PC-Lint“走完所有的標准配置的話,options.lnt會自動生成,但無內容(注釋除外),如果中間某一步skip了,可能該文件就不會生成,這時就需要手動創建一個options.lnt文件,或在std.lnt中注釋掉options.lnt,否則會在使用PC-lint時會出現找不到options.lnt的錯誤。
PC-lint的安裝包下面還有一個options.lnt文件(非自帶),可以直接拷貝到PC-lint安裝路徑下替換掉原來的文件,裏面我已經加了一些屏蔽錯誤項作爲示例。
2. 在使用PC-lint的过程当中,如果发生某个库头文件找不到的错误,可以打开std.nt文件,在后面添加该头文件所在的全路径,格式如下:
-i"D:/WinDDK/7600.16385.0/inc"
3. PC-lint不支持Unicode Codepage 1200和1201,请使用Unicode (UTF-8 with signature) - Codepage 65001.