Modelo de pilha da API C do Lua
Compreenda a pilha do Lua, os índices e as operações básicas de inserção e remoção.
Modelo de pilha da API C do Lua é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.
Por que a API C?
Lua pode ser incorporada a aplicações em C/C++. O código C hospedeiro cria um estado Lua, carrega scripts, chama funções Lua e expõe funções C para Lua — tudo por meio da API C de Lua.
A pilha Lua
A API C de Lua se comunica por meio de uma pilha virtual. O código C coloca valores na pilha antes das chamadas e lê os valores retornados dela após as chamadas.
Criando um estado Lua
luaL_newstate() cria um novo estado do interpretador Lua. luaL_openlibs(L) carrega as bibliotecas padrão.
// C code
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
lua_State *L = luaL_newstate();
luaL_openlibs(L);
// ... use L ...
lua_close(L);Índices da pilha
Os índices positivos contam a partir da base (1 = base). Os índices negativos contam a partir do topo (-1 = topo, -2 = segundo a partir do topo).
Colocando valores na pilha
Coloque vários tipos na pilha usando funções de inserção específicas para cada tipo.
// C code
lua_pushnumber(L, 42.0); // push number
lua_pushstring(L, "hello"); // push string
lua_pushboolean(L, 1); // push true
lua_pushnil(L); // push nilLendo valores
Leia valores da pilha sem removê-los usando funções lua_to*.
// C code
double n = lua_tonumber(L, -1); // read top as number
const char *s = lua_tostring(L, 1); // read bottom as string
int b = lua_toboolean(L, -2);Manipulação da pilha
Use lua_pop(L, n) para descartar n valores do topo. lua_gettop(L) retorna a altura atual da pilha.
// C code
lua_pushstring(L, "a");
lua_pushstring(L, "b");
printf("stack size: %d\n", lua_gettop(L)); // 2
lua_pop(L, 1);
printf("stack size: %d\n", lua_gettop(L)); // 1Verificação de tipos
Verifique o tipo de um valor da pilha com lua_type(L, idx), que retorna LUA_TNUMBER, LUA_TSTRING etc.
Colocando tabelas na pilha
Crie e preencha uma nova tabela a partir de C.
// C code
lua_newtable(L); // push empty table
lua_pushstring(L, "world");
lua_setfield(L, -2, "hello"); // t.hello = "world"Verificação de erros
A maioria das funções da API C que pode falhar retorna um código de erro (LUA_OK = 0). Sempre verifique os códigos retornados e chame lua_tostring(L, -1) para obter a mensagem de erro.
Equilíbrio da pilha
É sua responsabilidade manter a pilha equilibrada. Cada inserção deve corresponder a uma remoção (ou o valor deve ser consumido por uma chamada). O estouro da pilha causa um pânico.
Pergunta sobre o modelo da pilha
A que o índice -1 se refere na pilha da API C de Lua?
Recapitulação: modelo da pilha da API C de Lua
A API C de Lua usa uma pilha virtual para toda troca de dados. Coloque os valores na pilha antes das chamadas e leia os resultados depois. Use índices positivos (de baixo para cima) ou negativos (de cima para baixo). Mantenha a pilha equilibrada para evitar estouros.
Perguntas Frequentes
A aula “Modelo de pilha da API C do Lua” é grátis?
Sim — o texto completo de “Modelo de pilha da API C do Lua” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.
O que vou aprender em “Modelo de pilha da API C do Lua”?
Compreenda a pilha do Lua, os índices e as operações básicas de inserção e remoção. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Lua Academy?
Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Modelo de pilha da API C do Lua”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Lua Academy?
Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Modelo de pilha da API C do Lua
- Chamando funções Lua a partir de C
- Registrando funções C no Lua
- Gerenciamento de estado e tratamento de erros