避免常见拼写错误的方法

问题描述 投票:0回答:4

所以我花了最后几个小时来研究代码,试图找出错误的根源,结果发现我的错误不是别人,而是明显错误但编译器接受了:

if (a = b)

它应该在的地方

if (a == b)

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

c++ debugging
4个回答
9
投票

您能做的最好的事情就是坚持使用编译器为您提供的各种

-W/-pedantic
选项..

看一下这里,你可以启用很多警告来防止多种错误,但是对于某些错误你无能为力,只能自己去阻止:)


3
投票

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


3
投票

许多人对文字数字使用

if(0 == var)
,因为
0 = x;
是编译器错误。对于
if(a = b)
,我不知道任何通用的解决方案。
编辑:采纳GMan的建议,请不要真正采用这种风格;它很丑陋,难以阅读,并且如果您只是在警告的情况下进行编译,则完全没有必要。


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

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

会导致问题,例如,如果开发人员没有注意,制表符/空格搞砸了,因此缩进错误或其他什么。删除

doSomething()
行,或向
if()
块添加内容需要更改其他行。更安全的是:

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

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.