xlStack

适用于:Excel 2013 | Office 2013 | Visual Studio

检查堆栈上剩余的空间量。

Excel12(xlStack, LPXLOPER12 pxRes, 0);

参数

此函数无需使用任何参数。

属性值/返回值

返回堆栈上剩余) (xltypeInt 的字节数。

备注

最新版本的可用堆栈空间会溢出 XLOPER 的 16 位有符号整数。 这意味着,使用 XLOPERs 和 Excel4 或 Excel4v 调用时,xlStack 可以返回 -32767 和 32768 之间的值。 在这种情况下,若要获取正确的值,必须将返回的值强制转换为无符号短。

从 Excel 2007 开始,应使用 XLOPER12Excel12 或 Excel12v 调用此函数,在这种情况下,返回的值是可用的堆栈空间量或 64 KB,以较小者为准。

Excel 在堆栈上的空间有限,应注意不要超过此空间。 切勿在堆栈上放置非常大的数据结构,并使尽可能多的局部变量成为静态变量。 避免以递归方式调用函数,因为这会很快填满堆栈。

如果怀疑堆栈溢出,请经常调用此函数,以查看还剩下多少堆栈空间。

示例

第一个示例显示一条警报消息,其中包含剩余的堆栈空间量,并包含在 中 \SAMPLES\EXAMPLE\EXAMPLE.C。 第二个示例执行相同的操作,使用 XLOPER,SDK示例代码中未包含。

short WINAPI xlStackExample(void)
{
   XLOPER12 xRes;
   Excel12(xlStack, &xRes, 0);
   Excel12(xlcAlert, 0, 1, (LPXLOPER12)&xRes);
   return 1;
} 
short int WINAPI xlStackExample_XLOPER(void)
{
    XLOPER xRes;
    Excel4(xlStack, (LPXLOPER)&xRes, 0);
    xRes.xltype = xltypeNum; // Change the type to double
    // Cast to an unsigned short to get rid of the overflow problem
    xRes.val.num = (double)(unsigned short) xRes.val.w;
    Excel4(xlcAlert, 0, 1, (LPXLOPER)& xRes);
    return 1;
}

另请参阅