xlStack
适用于:Excel 2013 | Office 2013 | Visual Studio
检查堆栈上剩余的空间量。
Excel12(xlStack, LPXLOPER12 pxRes, 0);
参数
此函数无需使用任何参数。
属性值/返回值
返回堆栈上剩余) (xltypeInt 的字节数。
备注
最新版本的可用堆栈空间会溢出 XLOPER 的 16 位有符号整数。 这意味着,使用 XLOPERs 和 Excel4 或 Excel4v 调用时,xlStack 可以返回 -32767 和 32768 之间的值。 在这种情况下,若要获取正确的值,必须将返回的值强制转换为无符号短。
从 Excel 2007 开始,应使用 XLOPER12和 Excel12 或 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;
}