我正在整理一个大型的C ++代码库,它主要是MFC,并且有很多BOOL变量和参数。它还有许多bool,在比较时产生编译器警告;
警告C4800:'BOOL':强制值为bool'true'或'false'(性能警告)
在VS2008的警告级别4,计划将转移到没有警告的干净编译。我的选择如下;
你会做什么,更重要的是为什么?我目前正倾向于第一个选项,因为代码中包含了很多MFC,还有一些框架函数返回BOOL。
修改糟糕,previously asked question为我提供了我想要的信息。闭...
答案 0 :(得分:3)
在全球范围内将bool更改为BOOL可能对您没有帮助。你可能有函数返回bool,或接受bool。你可能会用另一个问题改变一个问题。 BOOL to bool也不能改变,因为MFC(和Win32 API)使用BOOL。
我会单独处理代码中生成的每个警告。将BOOL更改为bool可以简单,独立于编译器:
BOOL myBOOL; bool mybool;
mybool = (myBOOL != 0);
反过来说,可能是通过显式转换(例如静态转换),它应该删除警告。
这种方法还有一个优点,就是强制你查看所有BOOL到/从bool转换点,你可能会发现其他问题(或不是:)。