重构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 [重复]
bool / Boolean,string / String等之间的区别[重复]