为了抑制编译器警告,VS2010 有编译器选项和#pragma 选项。编译器选项影响整个程序。 #pragma 选项会影响整个程序。 #pragma 选项还可以在目标代码之前本地关闭特定警告,然后在之后再打开。 #pragma warning disable 0642 将隐藏 this 警告。 #pragma warning restore 0642 将恢复它。这太丑了。我见过的其他 IDE 允许单行覆盖警告(紧跟在激发代码之后的注释中的特定文本),但 VS2010 似乎没有这样做。 (我可能是错的。有人知道吗?)
唯一的解决办法比你的“问题”更糟糕。本地 #pragma 指令将使您的代码比实际更难看,同时删除警告。最终,你最好按照聪明人的建议去做。 (他们有时会错过机会。)按自己的方式行事并不一定会获胜。您必须承认这种可能性才能获得关于如何做到这一点的答案无论是否是一种改进。
基本上这个问题是一个偏好问题。你应该从一开始就这么说,通过展示(用代码)你在说什么,而不是让他们猜测和猜测来辱骂乐于助人的人。
编译器警告建议您可能不应该这样写:
if (expression)
; // Do nothing, because blah blah blah.
else
{
code that;
does something;
}
,而是选择以下之一:
if (expression)
{
// Do nothing, because blah blah blah.
}
else
{
code that;
does something;
}
或
if (expression)
{ } // Do nothing, because blah blah blah.
else
{
code that;
does something;
}
您没有“特别提到这一点”(别人对您从未提供过的代码的重写)“作为一种可能的解决方案......”。您也没有说您是否拒绝 Riad 将 ; 更改为 { ... } 或他周围的#pragmas(顺便说一句,只有在您不将 ; 更改为 { ... } 时才有必要)。
这些变化绝不会等同于“围绕 [删除] 这个 [警告] 重构 [ing] 整个 if [语句]”。 (那就是if (!expression) { code that; does something; }。)
这些变化绝不比原版“不那么清晰”。
我不介意知道一个不难看的覆盖。我可能想写如下内容,因为我喜欢省略所有那些愚蠢的围绕空行的大括号,它们会使这样的部分高一倍:
if (condition1)
action1;
else if (condition2)
; // (do nothing)
else if (condition3)
action3;
else if (condition4)
; // (do nothing)
else if (condition5)
action5;
else
action99;
显然,我必须使用更丑陋的选项之一来避免那些烦人的“可能错误的空语句”警告。