適用於:Excel 2013 |Office 2013 |Visualstudio
檢查堆疊上剩餘的空間量。
Excel12(xlStack, LPXLOPER12 pxRes, 0);
參數
此函式不接受任何自變數。
屬性值/傳回值
傳回堆疊上剩餘的 xltypeInt () 位元組數目。
註解
最新版本的可用堆疊空間量會溢出 XLOPER 的 16 位帶正負號整數。 這表示使用 XLOPERs 和 Excel4 或 Excel4v 呼叫時,xlStack 可以傳回介於 -32767 和 32768 之間的值。 若要在此情況下取得正確的值,您必須將傳回的值轉換成不帶正負號的short。
從 Excel 2007 開始,您應該使用 XLOPER12s 和 Excel12 或 Excel12v 呼叫此函式,在此情況下,傳回的值是可用的堆疊空間量或 64 KB,以較小者為準。
Excel 在堆疊上的空間有限,您應該小心不要溢出此空間。 請勿將非常大的數據結構放在堆疊上,並盡可能將任意數量的局部變數設為靜態。 避免以遞歸方式呼叫函式,因為這樣會快速填滿堆棧。
如果您懷疑堆疊溢出,請經常呼叫此函式以查看有多少堆疊空間。
範例
第一個範例會顯示警示訊息,其中包含剩餘的堆疊空間量,並包含在 中 \SAMPLES\EXAMPLE\EXAMPLE.C。 第二個範例會執行相同的動作,使用 XLOPERs 且 不包含在 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;
}