第一种情况是,C语言拥有控制权,Lua是一个库,这种形式中的C代码称为“应用程序代码”;第二种情况是,Lua拥有控制权,C语言是一个库,这个时候C代码就是“库代码”。“应用程序代码”和“库代码”都使用同样的API来与Lua通信,这些API就称为C API。 C API是一组能使C代码与Lua交互的函数,包括很多对Lua代码的操...
int lua_Strlen(lua_State *L){ //首先取出脚本执行这个函数时压入栈的参数 //假设这个函数提供一个参数,有一个返回值 //get the first parameter const char *par = lua_tostring(L, -1); cout << "at lua_Strlen,the str is :"<<par << endl; //push the first result lua_pushnumber(L, s...
1. 常见Lua相关的C API 压入元素 // cpp void lua_pushnil(lua_State *L); void lua_pushboolean(lua_State *L, int bool); void lua_pushnumber(lua_State *L, lua_Number n); void lua_pushinteger(lua_State *L, lua_Integer n); void lua_pushlstring(lua_State *L, const char* s, size...
(1)针对每一种能用C语言直接表示的Lua数据类型,C API中都有一个对应的压栈函数:nil使用lua_pushnil;布尔值(在C语言中是整型)使用lua_pushboolean;双精度浮 点数使用lua_pushnumber;整型使用lua_pushinteger;任意字符串(一个指向char的指针,外加一个长度)使用lua_ pushlstring;以\0终止的字符串使用lua_pushstri...
Lua是类C的,所以,他是大小写字符敏感的,同时,Lua脚本的语句的分号是可选的(和GO语言类似) 可以像python一样,在命令行上运行lua命令后进入lua的shell中执行语句 也可以把脚本存成一个文件,用如下命令行来运行 0x2:语法 1. 注释 --两个减号是行注释--[[ ...
*lauxlib.h是一个辅助库,是使用lua.h中的 API 编写的一个较高的抽象层,所有定义以luaL_开头 #include "lua.h" #include "lualib.h" #include "lauxlib.h" #include <stdio.h> #include <string.h> int main() { char buff[255]; int error; ...
Lua和C交互的部分称为C API。C API是一个C代码与Lua进行交互的函数集 重要的头文件: lua.h: (the basic API)provides the primitive functions for all interactions between C and Lua,主要包含C和Lua之间交互的基础函数,以 lua_ 开头。 lauxlib.h:(lua auxiliary library —— lauxlib)provides higher-level...
Lua语言是一个能够完全支持函数式编程的语言,Lua语言中变量是没有固定类型的,完全由它引用的值决定其类型,变量不需要声明,以下语句是合法的: a=1 此时a为number类型 a="hello" 此时a为string类型 a={"x"=1,"y"=2,Sunday,Monday,Quesday,Wednesday,Thursday,Friday,Saturday} 此时a为table类型 ...
lua是c写的,无论是lua调用c还是c调用lua都非常容易,以下是基于文档做的一些学习笔记,在文档的索引可以快速找到api的名称方便参考,文档地址如下: 官网5.3文档:http://www.lua.org/manual/5.3/#index 中文文档:http://www.runoob.com/manual/lua53doc/contents.html#index ...
lua只能调用typedef int (*lua_CFunction) (lua_State *L)这种函数类型,返回值int表示C函数的返回值个数 #include<lua.h>#include<lauxlib.h>#include<lualib.h>//待Lua调用的C注册函数。staticintadd2(lua_State*L){//检查栈中的参数是否合法,1表示Lua调用时的第一个参数(从左到右),依此类推。//如...