xlStack
適用対象: Excel 2013 | Office 2013 | Visual Studio
スタック上の空き領域を確認します。
Excel12(xlStack, LPXLOPER12 pxRes, 0);
パラメーター
この関数に引数はありません。
プロパティ値/戻り値
スタック上に残っているバイト数 (xltypeInt) を返します。
注釈
最近のバージョンの使用可能なスタック領域の容量は、XLOPER の 16 ビットの符号付き整数に収まりません。 つまり、xlStack は XLOPER および Excel4 または Excel4v を使用して呼び出したときに -32767 から 32768 の間の値を返すことができる、ということです。 この場合に正しい値を取得するには、戻り値を unsigned short 型にキャストします。
Excel 2007 以降では、XLOPER12 および Excel12 または Excel12v を使用して、この関数を呼び出す必要があります。その場合、戻り値は使用可能なスタック領域の容量か、64 KB のいずれか小さい方になります。
Excel にはスタック上の領域が限られているので、この領域をオーバーランしないように注意する必要があります。 スタックに非常に大きなデータ構造を配置し、できるだけ多くのローカル変数を静的にしないでください。 関数を再帰的に呼び出すことは避けてください。これはスタックをすばやくいっぱいにするためです。
スタックをオーバーランしている疑いがある場合は、この関数を頻繁に呼び出して、スタック領域がどの程度残っているか確認します。
例
最初の例では、残りのスタック領域の量と が に含まれている \SAMPLES\EXAMPLE\EXAMPLE.C
アラート メッセージを表示します。 2 つ目の例では、 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;
}