lua学习总结——C API

来源:互联网 发布:枪林弹雨免费刷枪软件 编辑:程序博客网 时间:2024/04/30 08:14

1、lua与C语言通信的主要方法是一个无所不在的虚拟栈。该栈由lua管理,lua只会改变栈的顶部,而C代码可以检索栈中间的元素,甚至在栈的任意位置插入或删除元素。

2、C语言没有提供异常处理机制,lua使用C语言中的setjmp机制,这是一种类似于异常处理的机制。当编写库代码时(被lua调用的C函数)使用longjmp捕获所有可能的错误;而编写应用程序代码时(调用lua的C代码),必须提供一种捕获错误的方法。

1)应用程序中错误代码处理:如果发生了内存分配错误,又不想结束应用程序,两种做法:

(1)设置紧急函数,不要把控制权返还给lua;

(2)让代码在保护模式下运行,调用lua_pcall()函数运行。

2)库代码中错误处理:

当一个C函数检测到一个错误时,就应该调用lua_error,lua_error会清理lua中所有需要清理的东西,然后跳转回发起执行的那个lua_pcall,并附上一条错误消息。

0 0
原创粉丝点击