xlStack
Aplica-se a: Excel 2013 | Office 2013 | Visual Studio
Verifica a quantidade de espaço deixada na pilha.
Excel12(xlStack, LPXLOPER12 pxRes, 0);
Parâmetros
Essa função não usa argumentos.
Valor de propriedade/Valor de retorno
Retorna o número de bytes (xltypeInt) restantes na pilha.
Comentários
A quantidade de espaço de pilha disponível das versões recentes transborda o inteiro assinado de 16 bits do XLOPER. Isso significa que xlStack pode retornar um valor entre -32767 e 32768 quando chamado usando XLOPERs e Excel4 ou Excel4v. Para obter o valor correto nesse caso, você deve lançar o valor retornado para um curto sem sinal.
A partir do Excel 2007, você deve chamar essa função usando XLOPER12s e Excel12 ou Excel12v, nesse caso, o valor retornado é a quantidade de espaço de pilha disponível ou 64 KB, o que for menor.
O Excel tem uma quantidade limitada de espaço na pilha e você deve tomar cuidado para não ultrapassar esse espaço. Nunca coloque estruturas de dados muito grandes na pilha e torne o maior número possível de variáveis locais estáticos. Evite chamar funções de forma recursiva, pois isso preencherá rapidamente a pilha.
Se você suspeitar que está ultrapassando a pilha, chame essa função com frequência para ver quanto espaço de pilha resta.
Exemplo
O primeiro exemplo exibe uma mensagem de alerta que contém a quantidade de espaço de pilha à esquerda e está contida em \SAMPLES\EXAMPLE\EXAMPLE.C
. O segundo exemplo faz a mesma coisa, trabalhando com XLOPERs e não está contido no código de exemplo do 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;
}