0Pricing
Lua Academy · Aula

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 nil

Lendo 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)); // 1

Verificaçã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

  1. Modelo de pilha da API C do Lua
  2. Chamando funções Lua a partir de C
  3. Registrando funções C no Lua
  4. Gerenciamento de estado e tratamento de erros
← Voltar para Lua Academy