将空SAFEARRAY传递给CComVariant

时间:2013-10-30 21:09:40

标签: c++ com atl

我在CComVariant看到了一个看起来像是一个突破性变化的东西,但我在网上找不到这个。

直到visual studio 2008将NULL SAFEARRAY指针传递给CComVariant会产生一个空变体(VT_EMPTY),构造函数看起来像这样:

CComVariant(__in_opt const SAFEARRAY *pSrc)
{
    LPSAFEARRAY pCopy;
    if (pSrc != NULL)
    { // ...

从Visual Studio 2010开始,将nullptr SAFEARRAY传递给CComVariant默认情况下会抛出异常。如果定义了_ATL_NO_VARIANT_THROW,则会使CComVariant处于错误状态(VT_ERROR)。构造函数的开头如下:

CComVariant(_In_ const SAFEARRAY *pSrc) ATLVARIANT_THROW()
{
    ATLASSERT(pSrc != NULL);

是否有任何参数文档从 in-opt 更改为中的?为什么微软决定做出这样一个突破性的改变?这样做是非常不典型的。

0 个答案:

没有答案