重构 MFC,您使用 BOOL 还是 bool?

3

可能重复:
在C ++中何时应使用BOOL和bool?

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

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

计划在VS2008中以警告级别4进行干净的编译,没有任何警告。我的选择如下:

  • 将所有布尔值更改为BOOL值
  • 将所有BOOL值更改为布尔值
  • 让编译器不报告4800警告

你会怎么做,更重要的是为什么?我目前倾向于第一种选择,因为给定的代码包含大量的MFC,有许多框架函数返回BOOL。

编辑 噢,之前提出的问题 给了我想要的信息。关闭...


1
仅供参考,请查看有关警告C4800的讨论:https://dev59.com/W3I-5IYBdhLWcg3wc3-w - Michael Burr
1个回答

3

将bool全局更改为BOOL可能并不会有所帮助。您可能有返回bool或接受bool的函数。您可能会用另一个问题来改变一个问题。BOOL到bool也不能改变,因为MFC(和Win32 API)使用BOOL。

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

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

另一种方法是通过显式转换(例如静态转换),应该可以消除警告。
这种方法的优点还在于,它强制你检查所有BOOL与bool之间的转换点,并且你可能会发现其他问题(或者不会 :))。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接