歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

lua-5.1 和 lua-5.2 之間的一些差異

1. luaL_register 2 luaL_setfuncs

lua5.1 之中有一個luaL_register,用於把luaL_Reg 數組中的所有函數注冊到lua中。但在lua5.2中已經不支持這一函數了,

lua5.2的手冊中建議使用luaL_setfuncs來替代luaL_register.

使用如下。

  1. int luaopen_libname(lua_State *L)  
  2. {  
  3.     static const luaL_Reg funcs[] = {  
  4.     {"func1", func1},  
  5.         {"func2", func2},  
  6.     {NULL, NULL}  
  7.     };  
  8. #ifdef lua5.1   
  9. //5.1 下直接使用luaL_register 就好   
  10.     luaL_register(L, "libname", funcs);  
  11. #else //lua5.2   
  12.     lua_newtable(L);   
  13.     //先把一個table壓入VS,然後在調用luaL_setfuncs就會把所以的func存到table中   
  14.     //注意不像luaL_register這個table是個無名table,可以在的使用只用一個變量來存入這個table。   
  15.     //e.g local clib = require "libname". 這樣就不會污染全局環境。比luaL_register更好。   
  16.     luaL_setfuncs(L, funcs, 0);  
  17. #endif   
  18.     return 1;  //返回table   
  19.    
  20. }  

luaL_register, 和 luaL_setfunc 實現很想,這不過luaL_register會先創建一個全局table在把函數注冊到這個table中。

具體實現請參考lua源馬。

更多關於Lua的詳細信息,或者下載地址請點這裡 

Copyright © Linux教程網 All Rights Reserved