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

10-06 03:20