关闭

lua学习总结——C API

532人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12976次
    • 积分:349
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:4篇
    • 译文:5篇
    • 评论:1条
    文章分类
    最新评论