工作後,整個人已經比較鬆懈了。雖然一直在看lua的原始碼,但是一直是比較零碎的時間,沒有系統的整理,所以還是收穫不多。因為最近工作也不是很忙了,就想整理下lua的原始碼學習的筆記,加深下印象,並分享給大家。
這些文章都是自己的淺薄的理解,有什麼錯誤,還請各位拍磚賜教。
typedef int (*lua_cfunction) (lua_state *l);
但是,我們很多函式都不是這樣的宣告,所以,我們就需要有乙個包裝函式:
比如cos函式:
在c語言,標準math庫中,宣告如下:
double cos (double);
經過包裝後:
static int math_cos (lua_state *l)
因為lua是乙個狀態機,所有的操作都是在操作棧,所以lua_cfunction中傳入的lua_state這個棧,就可以獲取lua執行中的所有資料了我們介面已經好了,那麼我們在lua中怎麼呼叫這些函式呢?lual_checknumber(l,1):表示獲取棧頂的number,並且呼叫標準c的cos函式,並且cos計算值重新壓棧。
lua為定義了這樣乙個結構體,name表示在lua中的函式名字,func表示name真正呼叫的函式typedef struct lual_reg lual_reg;
當我們對映表好了後,要怎樣註冊?
現在比較詳細的說下:
luamod_api int luaopen_math (lua_state *l)
lual_newlib:這個函式乙個巨集:建立乙個table來儲存我們對映資料(key-value值)。
lua 原始碼編譯
對於乙個開源工程,開始學習它的第一步自然是編譯工程。使用vc編譯lua,在網上已有許多介紹,但 紙上得來終覺淺 自己走一遍還是有必要的。步驟如下 2.開啟vc建立乙個solution,就叫lua.sln 3.建立乙個名為liblua的project lua庫 新增除lua.c和luac.c以外的所有...
LUA 原始碼閱讀筆記(一)
背景介紹 因為工作的需要,後台svr要能夠動態修改更新,使用c當然沒有問題,問題就在於修改原始碼後,需要重啟服務。所以就想到在c裡能夠嵌入一種指令碼,最好是和c無縫結合的。因此就想到使用到lua,lua的大名圈內人士應該早有耳聞,只不過一直沒有機會接觸。機緣巧合,有幸一見。俗話說得好,耳聞不如一見。...
Lua 簡單Lua直譯器原始碼分析
include include include lua.h include lauxlib.h include lualib.h int main void lua close l return 0 lua.h定義了lua提供的基礎函式,包括建立lua環境 呼叫lua函式,它的定義是以lua 開頭的...