代码之家  ›  专栏  ›  技术社区  ›  Gqqnbig

如何处理错误警告“条件总是真的”,因为它实际上是由宏控制的

  •  0
  • Gqqnbig  · 技术社区  · 7 年前

    我用CyLon写C++程序。一个文件有

    #ifdef USE_BAKER_READ_BARRIER
    static constexpr bool kUseBakerReadBarrier = true;
    #else
    static constexpr bool kUseBakerReadBarrier = false;
    #endif
    

    和其他文件使用 kUseBakerReadBarrier

    克莱恩总是抱怨 kUseBakerReadBarrier公司 ,说条件总是正确的。

    enter image description here

    不可否认,const在当前设置下是正确的。但有时我会在没有编译器选项的情况下编译项目 -DUSE_BAKER_READ_BARRIER ,然后kUseBakerReadBarrier==false的分支启动。

    这些错误的警告会在文件中添加许多黄色的眼影,使我很难发现真正的警告。

    处理这些“假总是真”的警告最好的方法是什么?

    我不想隐藏所有“简单语句”警告,因为我希望IDE像这样警告我

    bool a=true;
    if(a)
       ...
    

    我愿意了解其他IDE中的行为/解决方案,最好是Visual Studio。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Victor Sergienko    7 年前

    不确定它是通用的;分析已经很难的C++条件编译的成倍增长的量,会占用程序员和CPU时间的不合理的量。

    你可以用一个 #pragma