lua呼叫c庫中stub是什麼?

時間 2021-06-09 21:01:28

1樓:acebear

不用想得太複雜,其實挺樸素的東西。

但跨語言的呼叫,還要解決另外乙個麻煩:確保對引數理解一致。

我們用最常見的字串來說明一下:

比如,C,字串是以ASCII編碼每個字元(8bits),最後以乙個字元(8bits)0作為結尾。

而另乙個語言,它的字串極有可能是另外的結構,比如可能是以unicode編碼每個字元(16bits),在最開頭增加乙個16bits的無符號整數,表示字串的長度,無最後的結尾的0。

而LUA的字串更複雜一些(拆成了2個部分,乙個按hash組織的全域性字串堆,乙個引用hash值),LUA自己內部呼叫傳遞字串,只用傳送那個簡短的hash值就行,但把這個hash值傳給C的庫函式就完蛋了,C根本不知道LUA的字串是這麼個結構。

這樣,就需要有STUB了。STUB部分仍然是LUA語言的,你從LUA呼叫C時,你寫的部分呼叫這個STUB,把引數(比如字串的HASH)傳給STUB,LUA的跨語言底層把引數轉換為目標語言(比如C)的形式(計算機針對這個有個專用術語marshal),然後發起對目標語言的真正呼叫(傳送先前在STUB裡轉換過的引數值);返回引數/返回值也是一樣的類似機制來處理。

c 中float是什麼意思?

風之頌 英文單詞的翻譯為 飄移 浮動 在程式設計的世界裡翻譯為 浮點數 或者 浮點型別 這個 點 就是指數學上的小數點。所以,浮點數 顧名思義就是指小數,對於不同位數的小數 如0.123,1.23,12.3 來說,這個 點 小數點 的位置是可以變化的,左右移動,像不像船在水面上飄來飄去的浮動的感覺?...

C 中 sqrt 函式的原理是什麼?

計算機求平方根用的是 牛頓逐步逼近法 基本思想是先對第一次 sqrt 的結果進行乙個猜測,然後通過計算去得到乙個更好的猜測,逐漸能讓 sqrt 逼近 出使用者所期待的精度。假設我們要計算x的平方根,那麼我們先猜乙個y值,然後求出y和x y的平均值 這樣的結果更加接近實際的平方根 然後不斷經過迭代,能...

c 中的 的作用是什麼呢?

鹹蛋 沒什麼複雜的東西 就是把型別本身再歸類 list 就是乙個int型別的list 這裡int作為實際型別引數編譯器有個型別推導的過程會在你使用實際型別引數的時推導出這個型別沒有的型別不會被推導出 sdhjkd list的定義過程,其中 的作用是傳引數嗎?是的,函式模板通過 裡的引數進行例項化。不...

其他用戶還看了: