gpt4 book ai didi

C:从调用中替换表

转载 作者:行者123 更新时间:2023-11-30 17:26:41 25 4
gpt4 key购买 nike

我可以更换 table 吗?例如我无法让它工作:

lua_createtable(L,0,0);
lua_replace(L,2); // is the 2nd parameter of a function call

最佳答案

您可以用顶部的内容lua_replace给定索引处的任何lua值。这是一个简单的单元测试,它将新的空表移动到位置 2,替换那里发生的任何内容:

int test_replace(lua_State *L)
{
lua_getglobal(L, "_VERSION");
lua_getglobal(L, "os");
lua_getglobal(L, "os");
printstack(L);

lua_createtable(L, 0, 0);
lua_replace(L, 2);
printstack(L);

return 0;
}

一个简单的printstack来显示lua堆栈上的内容:

const char *lprint = 
"function lprint(...)"
" local _, arg2 = ..."
" print(...)"
" return ..."
" end";

int printstack(lua_State *L)
{
const int argc = lua_gettop(L);
lua_getglobal(L, "lprint");
lua_insert(L, 1);
lua_call(L, argc, argc);
return argc;
}

现在,如果您运行 test_replace,例如。

luaL_dostring(L, lprint);

lua_pushcfunction(L, test_replace);
lua_call(L, 0, 0);

可能的输出:

Lua 5.2 table: 00431A10 table: 00431A10
Lua 5.2 table: 00431DD0 table: 00431A10

如果您问题中的代码片段不起作用,那么您在未显示的周围上下文中做了错误的事情。

关于C:从调用中替换表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26693750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com