lua调用c函数
2013-07-12 11:55
281 查看
lua调用C函数和C调用lua函数是使用相同类型的栈来交互。
lua调用C使用的栈不是全局变量,每一个函数都有它自己的私有栈。当lua调用C函数的时候 第一个参数总是在栈的index=1的位置。
lua中注册C函数必须有相同的原型:typedef int (*lua_CFunction) (lua_State* L);
当lua调用C函数的时候,lua会把传入的参数全部压栈,然后在C函数中取出所有的参数,根据参数去获得所需要的结果,并把函数的返回值压栈,然后再压入返回值的个数。函数在将返回值入栈之前不需要清理栈,函数返回后,lua会自动的清理除栈中返回结果下面的所有的内容。
lua调用C使用的栈不是全局变量,每一个函数都有它自己的私有栈。当lua调用C函数的时候 第一个参数总是在栈的index=1的位置。
lua中注册C函数必须有相同的原型:typedef int (*lua_CFunction) (lua_State* L);
当lua调用C函数的时候,lua会把传入的参数全部压栈,然后在C函数中取出所有的参数,根据参数去获得所需要的结果,并把函数的返回值压栈,然后再压入返回值的个数。函数在将返回值入栈之前不需要清理栈,函数返回后,lua会自动的清理除栈中返回结果下面的所有的内容。