sha*_*oth 22 c++ windows com interop boolean
当使用COM时,布尔值将作为VARIANT_BOOL传递,该变量在wtypes.h中声明为short.还有预定义的true和false值:
#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)
Run Code Online (Sandbox Code Playgroud)
哪个是从VARIANT_BOOL转换为C++ bool类型的最佳方法?明显的变体是:
与VARIANT_FALSE比较
简单地投奔布尔
其他方式可以很容易地发明.
这是最好的方法 - 最可读,最符合标准,最不容易出现种植错误,最不容易出现移植到64位平台的问题?
180*_*ION 29
比较VARIANT_FALSE.有很多错误的代码错误地将C++ bool true值(强制转换为整数值1)传递给期望的函数VARIANT_BOOL.如果您比较VARIANT_FALSE,您仍将获得正确的预期值.
Eur*_*lli 10
我不想担心不同布尔值之间的兼容性,所以我通常会写:
VARIANT_BOOL vb_bool = VARIANT_FALSE;
// ... vb_bool set to something by some other code
bool myBool = (vb_bool == VARIANT_TRUE);
Run Code Online (Sandbox Code Playgroud)
是否有更小的(如"将编译为更简单的x86代码"),有效的方法吗?当然.不值得.这保证有效,所以我可以担心我的业务逻辑.
| 归档时间: |
|
| 查看次数: |
21136 次 |
| 最近记录: |