我正在处理一个项目,其中包含一些用C++编写的COM/Automation东西。我知道MFC/ATL有一个漂亮的CComVariant class来处理VARIANT初始化,但是仅从“纯” VARIANT的角度来看,我知道建议使用以下方法来初始化它:
VARIANT v;
::VariantInit(&v);
但是我想知道从阅读VariantInit的描述开始,我可以这样做吗?
VARIANT v = {0};
最佳答案
正如您所发现的,VariantInit
只是将vt
成员设置为VT_EMPTY
。它不会将 union 的内容清零,因为VT_EMPTY
被解释为没有数据。您可以使用任何其他方法将vt
设置为VT_EMPTY
,这很好,但是标准且正确的方法是使用VariantInit
。