lua和c语言之间的互调大量出现在lua-nginx-module中,这里给出《lua程序设计》第24-27章的一些测试代码。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdarg.h>
#include <stdlib.h>
#define MAX_COLOR 255
static void stackDump(lua_State *L);
static int l_split(lua_State *L)
{
const char *s = luaL_checkstring(L, 1);
const char *sep = luaL_checkstring(L, 2);
const char *e;
int i = 1;
lua_newtable(L);
while ((e = strchr(s, *sep)) != NULL)
{
lua_pushlstring(L, s, e-s);
lua_rawseti(L, -2, i ++);
s = e + 1;
}
lua_pushstring(L, s);
lua_rawseti(L, -2, i);
return 1;
}
int l_map(lua_State *L)
{
int i, n;
luaL_checktype(L, 1, LUA_TTABLE);
luaL_checktype(L, 2, LUA_TFUNCTION);
n = lua_objlen(L, 1);
for (i = 1; i <= n; i ++)
{
//stackDump(L);
//printf("=====1=====\n");
lua_pushvalue(L, 2);