xlStack
Gilt für: Excel 2013 | Office 2013 | Visual Studio
Überprüft, wie viel Speicherplatz auf dem Stapel noch vorhanden ist.
Excel12(xlStack, LPXLOPER12 pxRes, 0);
Parameter
Diese Funktion verwendet keine Parameter.
Eigenschaftswert/Rückgabewert
Gibt die Anzahl der im Stapel verbleibenden Bytes (xltypeInt) zurück.
Hinweise
Die Menge des verfügbaren Stapelspeicherplatzes der letzten Versionen überläuft die 16-Bit-Ganzzahl mit Vorzeichen des XLOPER.The amount of available stack space of recent versions overflows the 16-bit integer of the XLOPER. Dies bedeutet, dass xlStack einen Wert zwischen -32767 und 32768 zurückgeben kann, wenn er mit XLOPERs und Excel4 oder Excel4v aufgerufen wird. Um in diesem Fall den richtigen Wert zu erhalten, müssen Sie den zurückgegebenen Wert in einen Short ohne Vorzeichen umwandeln.
Ab Excel 2007 sollten Sie diese Funktion mit XLOPER12s und Excel12 oder Excel12v aufrufen. In diesem Fall ist der zurückgegebene Wert die Menge des verfügbaren Stapelspeicherplatzes oder 64 KB, je nachdem, welcher Wert kleiner ist.
Excel verfügt über einen begrenzten Speicherplatz auf dem Stapel, und Sie sollten darauf achten, diesen Speicherplatz nicht zu überlaufen. Platzieren Sie niemals sehr große Datenstrukturen auf dem Stapel, und machen Sie so viele lokale Variablen wie möglich statisch. Vermeiden Sie das rekursive Aufrufen von Funktionen, da dadurch der Stapel schnell gefüllt wird.
Wenn Sie vermuten, dass Sie den Stapel überführen, rufen Sie diese Funktion häufig auf, um zu sehen, wie viel Stapelspeicherplatz noch vorhanden ist.
Beispiel
Im ersten Beispiel wird eine Warnmeldung angezeigt, die die Menge des noch verfügbaren Stapelspeichers enthält und in \SAMPLES\EXAMPLE\EXAMPLE.C
enthalten ist. Das zweite Beispiel führt dasselbe aus, da es mit XLOPERs arbeitet und nicht im SDK-Beispielcode enthalten ist.
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;
}