C 强类型定义静态检查器(unix)
是否有一个免费的工具(某种类型的静态检查器)可以对普通的C(不是C++)进行基于typedef的类型检查,并在Linux(或任何类型的免费Unix)上运行?我知道有一种商业产品:PC lint/FlexeLint。这正是我想要的,但它不是免费的,而且只是Windows。以下是其手册中的一个示例:C 强类型定义静态检查器(unix),c,typedef,typechecking,C,Typedef,Typechecking,是否有一个免费的工具(某种类型的静态检查器)可以对普通的C(不是C++)进行基于typedef的类型检查,并在Linux(或任何类型的免费Unix)上运行?我知道有一种商业产品:PC lint/FlexeLint。这正是我想要的,但它不是免费的,而且只是Windows。以下是其手册中的一个示例: typedef int Count; typedef int Bool; Count n; Bool stop; . . . n = stop ; // tool generates a warning
typedef int Count;
typedef int Bool;
Count n;
Bool stop;
.
.
.
n = stop ; // tool generates a warning here
我已经读过这个和这个,我知道struct封装黑客,但那不是我想要的。我有一堆代码,我想检查它是否有这种特殊类型的错误。怎么办?(我还没有检查它是否能满足你的要求。不过我怀疑它能做到。)
或者,使用C99的stdbool.h
和bool
类型怎么样?“lint”最初是一个unix工具-是否不再包含在标准发行版中
如果不是的话,gcc-wall
应该会给出大部分相同的警告。谢谢你的快速回复:)我已经看过夹板了。这实际上是我检查的第一个工具。我在我的示例上以严格的模式运行它,从它的角度来看,一切都是干净的。。此外,我查看了它的手册,检查了“类型”部分中的每个标志,但没有找到任何对我有用的东西。关于bool,这只是$$$windoze PC lint手册中的示例。实际的代码处理整数和长整数,没有布尔。不,等效的工具是“splint”。Splint做不到C99,请看wilx的答案和评论。