LuaとC——拡張Lua(四)
1022 ワード
Luaは拡張性があるので,新しいC関数を記述することによってLuaを拡張することができる.
まずC関数を書きます.
再登録関数
個々の関数を登録するには、次の手順に従います.
複数の関数の花を登録するには、lua 5.1と5.2が違う
Luaでは、ex.add(num 1,num 2)を使用すると拡張関数を使用することができ、ライブラリテーブルでグローバルテーブルを汚染することなくlua 5に注意することができる.1で定義されています
#define luaL_reg luaL_Reg
まずC関数を書きます.
int add(lua_State *L)
{
int num1 = lua_tonumber(L, 1);
int num2 = lua_tonumber(L, 2);
int sum = num1+ num2;
lua_pushnumber(L, sum);
return 1;
}
再登録関数
個々の関数を登録するには、次の手順に従います.
lua_register(L, "add", add);
複数の関数の花を登録するには、lua 5.1と5.2が違う
const luaL_Reg methods[] =
{
{ "add", add },
{ NULL, NULL }
};
const char* libname = "ex";
#if LUA_VERSION_NUM > 501
lua_newtable(L);
luaL_setfuncs(L, rclib, 0);
lua_setglobal(L, libname);
#else
const luaL_Reg metafuncs[] =
{
{ 0, 0 }
};
luaL_newmetatable(L, libname);
luaL_register(L, NULL, metafuncs);
luaL_register(L, libname, rclib);
#endif
Luaでは、ex.add(num 1,num 2)を使用すると拡張関数を使用することができ、ライブラリテーブルでグローバルテーブルを汚染することなくlua 5に注意することができる.1で定義されています
#define luaL_reg luaL_Reg