我有一个讨厌的错误,浪费我的时间和我的同事的时候,它是这样的:

for (i = 0; i < blah; i++); // <- I had a semi-colon here, that's the bug!
{
  // Some awesome logic here
}

首先,这是非常令人尴尬,第二件事,我不应该重复这一点。我比较新的。在爪哇,我猜我可以使用 置的代 抓错误,这样,什么样的工具,我应该使用对C码?皮棉?

有帮助吗?

解决方案

是的, PC-Lint 可能是最好的工具。

其他提示

除了 Lykathea的PC-Lint建议,如果提高编译器的警告级别,也可以获得更好(或至少更多)的诊断。像 / W4 -Wall

之类的东西

虽然我不确定你的特定问题是否会被捕获(即使启用了所有警告,MS VC也似乎没有标记它)。我认为这是因为当作为循环控制表达式的副作用完成工作时, for 循环并不是一个不常见的习惯用法。

有几件事,有救了我在过去,从我的头顶:

  • 如果使用 (3==唠唠叨叨),而不是(唠唠叨叨==3), 因为如果你拼写错误和类型(3=唠唠叨叨)编译器的抱怨。

  • 使用 所有的警告 开关。编译器应该警告你关于空声明的那样。

  • 使用 断言 当你可以和程序,防御。把良好的努力做你的计划失败早,你会看到的弱点。

  • 不要试图规避任何保障措施编译器或操作系统已经到位。他们在那里为了您的方便程及。

我首先要了解夹板 gdb 。如果您需要更高级,请在这两个工具的基础上进行构建但他们是一个良好的开端。

GCC拥有Lint通过警告内置的大部分功能标志的。

像Eclipse这样的任何良好的GUI编程环境(“IDE” - 集成开发环境)都会在这种情况下生成警告。

一个好的语法高亮显示器会使这样的一些案例更加明显。

我建议你看看你是否有能力执行MISRA标准。它们是经过深思熟虑和许多规则编写的,这些规则对于编译器来说很容易检查。例如,我使用的规则要求所有NOP命令都有自己的行。这意味着当你放一个;在循环语句结束时,它将通过一个错误说明它不在它自己的行上。

编程研究的 QA&#183; C 是C的另一个很好的静态分析工具。

在这个(旧)版本的如何拍摄自己在Foot 以及网络上的许多其他版本中, C 始终是允许最简单程序的语言。在 C 中编程时,您必须记住这一点并小心。如果您需要保护,请选择其他语言。

这句话是归因于 Bjarne Stroustrup(C ++)本人。致(错)引用:

  

“C让你很容易在脚下射击”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top