我想在从 Lua 调用的 C 函数中弹出/清理 Lua 调用堆栈。这可能吗?
背景:
我希望我的 C 库及其扩展脚本使用相同的测试框架。(我知道 Lua 存在各种单元测试工具。我不在乎;我想要一份报告)我将 CUnit 包装在 Lua 的薄层中。CUnit 提供了致命和非致命测试断言的选择。致命断言会导致立即longjmp
退出测试并返回到框架运行程序。如果我不先清理堆栈,这似乎会对 Lua VM 造成不利影响。
堆栈可能看起来像:
#0. C: assert_wrapper_fcn(test, fatal)
#1. Lua: assert_fcn(bool)
#2. Lua: test_fcn()
#3. C: runner(&test_fcn)
我想清理 #0 和 #3 之间的所有内容。test_fcn()
我知道and的方法签名assert_fcn(bool)
,仅此而已。