c++ - 如何最好地将 VARIANT_BOOL 转换为 C++ bool?

标签 c++ windows com interop boolean

使用 COM 时, boolean 值将作为 VARIANT_BOOL 传递,在 wtypes.h 中声明为 shorttruefalse 也有预定义的值:

#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)

从 VARIANT_BOOL 转换为 C++ bool 类型的最佳方法是什么?明显的变体是:

  1. 与 VARIANT_FALSE 比较

  2. 只需转换为 bool

可以很容易地发明其他方法。

最好的方法是什么 - 最易读、最符合标准、最不容易出现意外错误植入以及最不容易移植到 64 位平台时出现问题?

最佳答案

VARIANT_FALSE 比较。有很多错误代码错误地将 C++ bool true 值(强制转换为整数值 1)传递给期望 VARIANT_BOOL 的函数。如果您与 VARIANT_FALSE 进行比较,您仍然会得到正确的预期值。

关于c++ - 如何最好地将 VARIANT_BOOL 转换为 C++ bool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/886729/

相关文章:

c# - ADODB.Connection 包装器作为 System.Data.Common.DbConnection

c# - MS Office COM 与多个 UAC 用户的互操作和线程安全

c++ - 在 VC++ 2005 中使用日期时间

c++ - 使用 std::inner_product 时内积为零

c++ - 如何在 Ubuntu 16.04 中安装 MySql Connector/C++

windows - VS2010 SP1 安装。 “The feature you are trying to use is on a network resource that is unavailable”

node.js - 如何将命令从 BAT 文件发送到在 Windows 中运行的 NodeJS 进程?

c++ - 根据字符串表示设置枚举值

java - 如何在 Windows 上正确制作 Mac 应用程序/安装程序 (Java)?

c# - 是否有可用于查询脱机文件结果的 API?