栈
C/C++与Lua的交互通过栈来实现的,可以通过下面API来对栈进行操作:
1 | lua_toboolean() |
Lua调用C函数
被调用的C函数需要满足下面的函数原型:
1 | typedef int (*lua_CFunction) (lua_State *L); |
下面例子中的C函数将接收若干数字参数,并返回它们的平均数与和:
1 | static int C_FUNC_SUM (lua_State *L) |
C调用Lua函数
1 | void lua_call (lua_State *L, int nargs, int nresults); |
下面的例子中,这行 Lua 代码等价于在宿主程序中用 C 代码做一些工作:
1 | a = f("how", t.x, 14) |
这里是与上面Lua代码等价的C代码:
1 | lua_getglobal(L, "f"); /* function to be called */ |