我有一个具有某种元表类型的Lua userdata对象(例如"stackoverflow.test").从C代码,我希望能够确切地检查它是什么类型,并根据结果表现不同.是否有一个非常方便的功能(相当像luaL_checkudata,但如果答案不是你想要的,没有错误)让我查询userdata的metatable类型名称?如果没有,我想我需要使用lua_getmetatable,但是我有点不清楚我如何确定刚刚添加到堆栈中的metatable的名称.
只是为了澄清:我正在使用Lua 5.1,其中luaL_checkudata的行为被改变了.据我所知,在5.0中它并不习惯错误.