C++ 重构MFC,你使用BOOL还是BOOL

C++ 重构MFC,你使用BOOL还是BOOL,c++,performance,mfc,C++,Performance,Mfc,可能重复: 我现在正在整理一个大的C++代码库,它主要是MFC,有很多布尔变量和参数。它还有许多布尔值,当比较它们时,会产生一个编译器警告 警告C4800:“BOOL”:强制将值设置为BOOL“true”或“false”(性能警告) 计划是在VS2008中迁移到没有警告的干净编译,处于警告级别4。我的选择如下 将所有布尔值更改为布尔值全部更改 接二连三 让编译器不报告警告4800 你会怎么做,更重要的是为什么?我现在倾向于第一个选项,因为代码包含很多MFC,有很多框架函数返回BOOL 编辑

可能重复:

<>我现在正在整理一个大的C++代码库,它主要是MFC,有很多布尔变量和参数。它还有许多布尔值,当比较它们时,会产生一个编译器警告

警告C4800:“BOOL”:强制将值设置为BOOL“true”或“false”(性能警告)

计划是在VS2008中迁移到没有警告的干净编译,处于警告级别4。我的选择如下

  • 将所有布尔值更改为布尔值全部更改
  • 接二连三
  • 让编译器不报告警告4800
你会怎么做,更重要的是为什么?我现在倾向于第一个选项,因为代码包含很多MFC,有很多框架函数返回BOOL


编辑哎呀,给我想要的信息。关闭…

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

我将分别处理代码中生成的每个警告。将BOOL更改为BOOL操作简单,与编译器无关:

BOOL myBOOL; bool mybool;
mybool = (myBOOL != 0);
另一方面,可以通过显式强制转换(例如静态强制转换)来消除警告


此方法的另一个优点是,您必须查看所有BOOL到/从BOOL转换点,您可能会发现其他问题(或不是:)。

仅供参考,请参阅此警告C4800的讨论: