重构MFC,你使用BOOL还是bool [重复]

Posted

技术标签:

【中文标题】重构MFC,你使用BOOL还是bool [重复]【英文标题】:Refactoring MFC, do you use BOOL or bool [duplicate] 【发布时间】:2010-11-25 08:44:18 【问题描述】:

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

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

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

计划是在 VS2008 中以警告级别 4 进行无警告的干净编译。我的选择如下;

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

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

编辑糟糕,previously asked question 给了我想要的信息。关闭...

【问题讨论】:

仅供参考,请参阅此关于警告 C4800 的讨论:***.com/questions/1847860/… 【参考方案1】:

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

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

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

反过来,它可以通过显式强制转换(例如静态强制转换)来消除警告。

这种方法还有一个优势,它迫使您检查所有 BOOL 到/从 bool 转换点,您可能会发现其他问题(或没有:))。

【讨论】:

以上是关于重构MFC,你使用BOOL还是bool [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Json.Net 将 int 转换为 bool [重复]

C++如何处理&&? (短路评估)[重复]

bool / Boolean,string / String等之间的区别[重复]

Python TypeError:'bool'对象不可调用[重复]

组合 Func<bool> 表达式[重复]

c#.net中的bool和boolean有啥不同[重复]