xlStack
Hace referencia a: Excel 2013 | Office 2013 | Visual Studio
Comprueba la cantidad de espacio que queda en la pila.
Excel12(xlStack, LPXLOPER12 pxRes, 0);
Parameters
Esta función no toma ningún argumento.
Valor de la propiedad/valor devuelto
Devuelve el número de bytes (xltypeInt) restantes en la pila.
Comentarios
La cantidad de espacio de pila disponible de las versiones recientes desborda el entero de 16 bits con signo del XLOPER. Esto significa que xlStack puede devolver un valor entre -32767 y 32768 cuando se llama a mediante XLOPERs y Excel4 o Excel4v. Para obtener el valor correcto en este caso, debe convertir el valor devuelto en un short sin signo.
A partir de Excel 2007, debe llamar a esta función mediante XLOPER12s y Excel12 o Excel12v, en cuyo caso el valor devuelto es la cantidad de espacio de pila disponible o 64 KB, lo que sea menor.
Excel tiene una cantidad limitada de espacio en la pila y debe tener cuidado de no saturar este espacio. Nunca coloque estructuras de datos muy grandes en la pila y haga tantas variables locales como sea posible estática. Evite llamar a las funciones de forma recursiva, ya que esto llenará rápidamente la pila.
Si sospecha que está superando la pila, llame a esta función con frecuencia para ver cuánto espacio de pila queda.
Ejemplo
En el primer ejemplo se muestra un mensaje de alerta que contiene la cantidad de espacio de pila que queda y está contenido en \SAMPLES\EXAMPLE\EXAMPLE.C
. El segundo ejemplo hace lo mismo, trabajando con XLOPERy no está incluido en el código de ejemplo del 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;
}