从C ++代码中获取调用的函数

时间:2010-11-11 22:34:23

标签: c++ lua

例如我有这个:

static int callFunction(lua_State* L)
{
 int p = lua_gettop(L);
 if (p == 1 && lua_isfunction(L, -1)) {
  /*
   * now i need something like "get the function thats in the first parametre
   */
 }
 return 0;
}

现在我需要在这个C ++代码中得到函数的第一个参数,sry因为不清楚,我很难解释。

3 个答案:

答案 0 :(得分:1)

如果需要调用该函数,可以使用lua_call。但是Lua不允许你使用任何有用的指向Lua函数的指针。如果要在Lua中存储函数,则必须使用Lua注册表来存储它。

答案 1 :(得分:0)

我猜你可能想要查看lua_tocfunction()函数。

答案 2 :(得分:0)

如果你想在C ++中存储Lua函数的“指针”,你可以只存储Lua函数的/ name /然后按照DeadMG的说法进行操作并用lua_call调用它,如下所示: http://pgl.yoyo.org/luai/i/lua_call

如果您对已经存在的代码感到困惑,那就是一个棘手的问题;我不确定你能从堆栈中获取Lua函数的名称。换句话说,您可能需要将代码修改为您发布的代码一级。