我在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 更改为中的?为什么微软决定做出这样一个突破性的改变?这样做是非常不典型的。