重构MFC,你使用BOOL还是bool

时间:2010-11-25 08:44:19

标签: c++ performance mfc

  

可能重复:
  When should BOOL and bool be used in C++?

我正在整理一个大型的C ++代码库,它主要是MFC,并且有很多BOOL变量和参数。它还有许多bool,在比较时产生编译器警告;

警告C4800:'BOOL':强制值为bool'true'或'false'(性能警告)

在VS2008的警告级别4,计划将转移到没有警告的干净编译。我的选择如下;

  • 将所有bool更改为BOOL更改所有
  • BOOLs bools
  • 让编译器不报告警告4800

你会做什么,更重要的是为什么?我目前正倾向于第一个选项,因为代码中包含了很多MFC,还有一些框架函数返回BOOL。

修改糟糕,previously asked question为我提供了我想要的信息。闭...

1 个答案:

答案 0 :(得分:3)

在全球范围内将bool更改为BOOL可能对您没有帮助。你可能有函数返回bool,或接受bool。你可能会用另一个问题改变一个问题。 BOOL to bool也不能改变,因为MFC(和Win32 API)使用BOOL。

我会单独处理代码中生成的每个警告。将BOOL更改为bool可以简单,独立于编译器:

BOOL myBOOL; bool mybool;
mybool = (myBOOL != 0);

反过来说,可能是通过显式转换(例如静态转换),它应该删除警告。

这种方法还有一个优点,就是强制你查看所有BOOL到/从bool转换点,你可能会发现其他问题(或不是:)。