相关疑难解决方法(0)

如何优雅地克服无意义的C++编译器警告?

这个问题不受任何特定编译器警告的约束,以下只是一个例子.

目前我想要一个检查内部退出条件的循环:

 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实例也被禁用.

是否有任何优雅的方法来摆脱毫无意义的警告?

c++ compiler-construction compiler-warnings

27
推荐指数
3
解决办法
3207
查看次数