正确的变体初始化

Proper VARIANT initialization

本文关键字:初始化      更新时间:2023-10-16

我正在处理一个项目,其中有一些COM/Automation的东西是用c++写的。我知道MFC/ATL有一个漂亮的CComVariant类来处理VARIANT初始化,但仅仅从"纯"VARIANT的角度来看,我知道以下是初始化它的推荐方法:

VARIANT v;
::VariantInit(&v);

但我想知道从阅读描述到VariantInit,我可以这样做吗?

VARIANT v = {0};

正如您所发现的,VariantInit只是将vt成员设置为VT_EMPTY。它不会将联合的内容归零,因为VT_EMPTY被解释为没有数据。您可以使用任何其他方法将vt设置为VT_EMPTY,但标准正确的方法是使用VariantInit