c/c++语言开发共享当在“while” – C中使用常量时,为什么MSVC会生成警告C4127

对于代码,

while(1) { /* ..... */ } 

MSVC生成以下警告。

 warning C4127: conditional expression is constant 

警告的MSDN页面建议for(;;)而不是while(1) 。 我想知道for(;;)有什么好处for(;;)以及为什么它会在while不断使用?

我应该在GCC上使用什么标志来获得相同的警告?

    恒定条件通常就足够了。 考虑一下:

     unsigned k; ... while (k>=0) { ... } 

    如果k是带符号的int,则条件k>=0是有意义的,但对于无符号则不是。 粗心的开发人员忘记了k被声明为无符号,并且他/她会使用它,好像它可用作负数。 编译器试图提供帮助并向您发出警告, while(1)编译器会陷入同一个问题类。 for(;;)是优选的,因为它明确地表示`循环永远

    for(;;)while (true)的不同之处在于前者是一个被定义为无限循环的特殊情况,而后者则是一种滥用,说“真,永远”。

    警告出现是因为当你不想要它们时无限循环是非常糟糕的,所以它警告你,你可能在第一个标志处有一个。 但是通过使用for(;;) ,你几乎明确地说“永远地循环”,并且没有什么值得警告的。

    我不认为海湾合作委员会有同等的警告。

      以上就是c/c++开发分享当在“while” – C中使用常量时,为什么MSVC会生成警告C4127相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/545556.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐