C語言中呼叫Lua

2022-02-13 08:21:19 字數 635 閱讀 2073

c語言和lua天生有兩大隔閡:

一、c語言是靜態資料型別,lua是動態資料型別

二、c語言需要程式設計師管理記憶體,lua自動管理記憶體

為了跨越世俗走到一起,肯定需要解決方案。

解決第一點看上去比較容易,c語言中有union。

可是第二點呢?萬一c語言正引用著lua的乙個值,lua自動釋放了怎麼辦?

所以就有了一種比union更好的解決方案:棧。

這是乙個虛擬的棧,是溝通兩者的橋梁,兩者的資料交換全都通過這個棧進行,這樣只要不pop,lua就不會自動釋放,而什麼時候pop由c語言說了算。

下面是一段喜聞樂見的示例。

由於新建的cpp檔案,所以需要extern "c" 。

1 #include 2

extern"c

"78//

呼叫lua中的add函式

9int call_lua_add(lua_state *l)

1019

20int

main()

21

下面是test.lua檔案中的內容:

1

function

add(x, y)

2return x +y;

3end

C語言中呼叫LUA(1)

c程式中呼叫lua指令碼檔案 1,新建lua指令碼 test.lua print hello world 2,在c程式中呼叫 include include include includeint main void 3,編譯 gcc o c usr local lib liblua.a ldl lm...

c語言中的函式呼叫

今天是我第一天寫部落格,最近一直在看c語言的書。函式呼叫是乙個非常重要的知識點,相當於各個模組的 介面 當然c語言裡沒有介面的說法。c語言中實參和形參要麼是基本的資料型別或者是結構體型別,當然也可以指標 位址 由於在c語言規定陣列名就是乙個位址,因此也可以把陣列規定到指標的行列。另外,不要天真的以為...

lua與C(一) C呼叫lua

lua和c有兩種關係 一種是在lua中呼叫c的函式,c稱為庫 一種是c中呼叫lua,c就稱為應用程式 此時c中包含了lua的直譯器 c 部分 注意在c 中,通常要把lua的一些標頭檔案定義在extern c 中,因為他們是c語言實現的。1.作為應用程式呼叫lua char buffer print ...