gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:50:30 27 4
gpt4 key购买 nike

这个问题不绑定(bind)任何特定的编译器警告,以下只是一个例子。

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

 while( true ) {
doSomething();
if( condition() ) {
break;
}
doSomethingElse();
}

我不能只用 Visual C++ 编写它 - 它会发出 C4127 conditional expression is constant 警告。尽管很明显 while(true) 不可能是偶然编写的,但编译器会在我面前挥动它。

假设我想要编译时没有警告的代码。有解决方法可供我使用。

解决方法一个是使用 for(;;) 但感觉很愚蠢 - 为什么我想要那个奇怪的东西而不是简洁优雅的惯用 while(true )解决方法二 是在 while( true ) 行之前使用 #pragma warning(suppress) ,但它会添加一个巨大的横幅,它的两倍大while 语句本身。 解决方法三是为整个项目禁用 C4127(我在一个真实的项目中看到过它),但随后所有可能有用的 C4127 实例也被禁用。

有什么优雅的方法可以消除无意义的警告吗?

最佳答案

我会写 for(;;)因为那是惯用的。

较新版本的 Visual C++ 并不像早期版本那样愚蠢。警告。 Visual C++ 10.0 编译使用 <windows.h> 的代码,处于警告级别 4,没有警告。

但是如果你想关闭 Visual C++ sillywarnings,看看我的旧 anti-sillywarnings header ,它是根据 [comp.lang.c++] 社区的输入创建的。

关于c++ - 如何优雅地克服无意义的 C++ 编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com