我正在处理一个项目,其中有一些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
。