我正在尝试创建一个从 lua 检查时具有 2 个上值的函数。debug.getinfo(fvalues).nups 应该是 2 。
static int fvalues (lua_State *L) {
int n = lua_gettop(L);
if (str.size() == 0) {
str = "This_is_a_test";
}
const char *cstr = str.c_str();
lua_pushstring(L, cstr);
lua_pushcclosure(L, &fvalues, 1);
lua_pushstring(L, cstr);
lua_pushcclosure(L, &fvalues, 2);
lua_pushstring(L, cstr);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,pushclosure 不应该创造升值,我不太明白这应该如何工作。