何时应该在C++中使用BOOL和bool?为什么?
我认为使用bool更清洁,更便携,因为它是内置类型.但是当你使用遗留代码/ C代码进行交互,或者使用C代码/ Windows API从.NET进行交互操作时,BOOL是不可避免的.
所以我的政策是:在C++中使用bool.与外界交谈时使用BOOL,例如windows DLL中的导出功能.
关于何时使用一个而不是另一个,是否有明确的解释?
如果BOOL是某种整数类型,并且它始终是,并且定义BOOL以使其正常工作,则标准转换将自动使其正确.你不能互换使用它们,但你可以接近.
在接口上使用BOOL,您必须与Win32 API或其他任何内容进行通信.在其他地方使用bool.
Matthew Wilson 在Imperfect C++的第13.4.2节中讨论BOOL
,bool
和类似.混合这两者可能是有问题的,因为它们通常具有不同的尺寸(因此指针和参考不可互换),并且因为不保证具有任何特定尺寸.尝试使用typedef或条件编译来平滑之间的差异和/ 或试图允许单个布尔类型在C和C++中工作更糟糕的是:bool
BOOL
bool
#if defined(__cplusplus) || \
defined(bool) /* for C compilation with C99 bool (macro) */
typedef bool bool_t;
#else
typedef BOOL bool_t;
#endif /* __cplusplus */
Run Code Online (Sandbox Code Playgroud)
这种方法意味着函数的返回类型可以根据哪种语言调用它而不同; 威尔逊解释说,他在自己的代码中看到了不止一个错误而其他错误也是由此产生的.他的结论是:
这种不完美的解决方案通常是禁欲.我从不使用bool
任何可以跨多个链接单元访问的东西 - 动态/静态库,提供的目标文件 - 这基本上不是在头文件之外出现的函数或类中.实际答案,例如,是使用伪布尔类型,其大小为int
.
简而言之,他会同意你的方法.
归档时间: |
|
查看次数: |
6109 次 |
最近记录: |