1. luaL_register 2 luaL_setfuncs
lua5.1 之中有一個luaL_register,用於把luaL_Reg 數組中的所有函數注冊到lua中。但在lua5.2中已經不支持這一函數了,
lua5.2的手冊中建議使用luaL_setfuncs來替代luaL_register.
使用如下。
-
- int luaopen_libname(lua_State *L)
- {
- static const luaL_Reg funcs[] = {
- {"func1", func1},
- {"func2", func2},
- {NULL, NULL}
- };
- #ifdef lua5.1
- //5.1 下直接使用luaL_register 就好
- luaL_register(L, "libname", funcs);
- #else //lua5.2
- lua_newtable(L);
- //先把一個table壓入VS,然後在調用luaL_setfuncs就會把所以的func存到table中
- //注意不像luaL_register這個table是個無名table,可以在的使用只用一個變量來存入這個table。
- //e.g local clib = require "libname". 這樣就不會污染全局環境。比luaL_register更好。
- luaL_setfuncs(L, funcs, 0);
- #endif
- return 1; //返回table
-
- }
luaL_register, 和 luaL_setfunc 實現很想,這不過luaL_register會先創建一個全局table在把函數注冊到這個table中。
具體實現請參考lua源馬。
更多關於Lua的詳細信息,或者下載地址請點這裡