这个问题不受任何特定编译器警告的约束,以下只是一个例子.
目前我想要一个检查内部退出条件的循环:
while( true ) {
doSomething();
if( condition() ) {
break;
}
doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
我不能在Visual C++中编写它 - 它会发出C4127 conditional expression is constant警告.编译器会在我脸上挥动它,虽然很明显它while(true)不能被意外地写出来.
假设我想要编译而没有警告的代码.我的服务有各种解决方法.
解决方法是使用for(;;)但感觉很愚蠢 - 为什么我想要那个奇怪的东西而不是简洁优雅的惯用语while(true)?解决方法二是在行#pragma warning( suppress)之前使用,while( true )但它添加了一个巨大的横幅,它是while-statement本身的两倍.解决方法三是为整个项目禁用C4127(我已经看到它在一个真实项目中完成)但是所有可能的C4127实例也被禁用.
是否有任何优雅的方法来摆脱毫无意义的警告?