我有以下功能,我想用只有当Lua版本等于或小于5.1
。
所以我写了像在以下myBindings.i
文件:
/* used to backport lua_len to Lua 5.1 */
#if LUA_VERSION_NUM <= 501
%{
static void lua_len(lua_State *L, int i)
{
switch (lua_type(L, i))
{
case LUA_TSTRING:
lua_pushnumber(L, (lua_Number)lua_objlen(L, i));
break;
case LUA_TTABLE:
if (!luaL_callmeta(L, i, "__len"))
lua_pushnumber(L, (lua_Number)lua_objlen(L, i));
break;
case LUA_TUSERDATA:
if (luaL_callmeta(L, i, "__len"))
break;
default:
luaL_error(L, "attempt to get length of a %s value",
lua_typename(L, lua_type(L, i)));
}
}
%}
#endif
然而,当我编译代码,编译器不会跳过lua_len
在Lua功能5.3
。
我怎么可以公开lua_len
功能,根据版本信息,编译器?