避免常见拼写错误的方法

时间:2010-09-12 22:43:52

标签: c++ debugging compiler-construction

所以我花了最后几个小时倾注代码试图找出错误的来源,但却发现我的错误莫过于明显的错误,但编译器接受了:

if (a = b)

应该在哪里

if (a == b)

你们做了什么来防止这些令人沮丧的错误?还有什么其他常见的“明显错误,但编译器不会抱怨”错误我应该注意吗?

4 个答案:

答案 0 :(得分:9)

您可以做的最好的事情就是坚持使用编译器提供的各种-W/-pedantic选项。

看看here,您可以启用许多警告以防止出现多种错误,但除了使用自己来阻止它们之外,您无法对某些错误采取任何措施:)

答案 1 :(得分:3)

对于文字数字,许多人都会if(0 == var),因为0 = x;是编译器错误。对于if(a = b),我不知道任何一般解决方案。 编辑:采取GMan的建议,请不要采用这种风格;如果您只是编译警告,那就太丑了,难以阅读,完全不必要。


避免拼写错误的方法的另一个例子是在for / while / if块中加入大括号。我见过:

if(x)
    doSomething();
somethingElse();

导致问题,例如,如果开发人员没有注意,有标签/空格搞砸,因此缩进是错误的或其他什么。删除doSomething()行或向if()块添加内容需要更改其他行。更安全的是:

if(x)
{
    doSomething();
}
somethingElse();

答案 2 :(得分:3)

大多数编译器都提供了在这些情况下发出警告的选项。这些通常在早期程序的名称之后被称为“lint”警告,以便为C源代码提供它们(在早期C编译器没有内置它们,但它们现在大部分都在做)。您可能会检查是否启用了编译器提供的所有警告。如果您的编译器没有提供lint功能,请查看好的lint tool

答案 3 :(得分:1)

对我来说,一个常见的问题是在使用之前不检查指针是否存在(非NULL)。这个问题在我的代码中造成了许多意外中断。