好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Lua中調用C語言函數實例

Lua中調用C語言函數實例

熱門標簽:漳州智云呼電話機器人 百度地圖標注早餐區域 冀州市地圖標注 清朝地圖標注哈爾濱 怎么去除地圖標注 個人怎么在地圖標注需要的店鋪 武漢外呼防封系統多少錢 地圖標注大廈 新岸線智能電銷機器人

在上一篇文章(C調用lua函數)中,講述了如何用c語言調用lua函數,通常,A語言能調用B語言,反過來也是成立的。正如Java與c語言之間使用JNI來互調,Lua與C也可以互調。

當lua調用c函數時,使用了和c調用lua中的同一種棧,c函數從棧中得到函數,然后將結果壓入棧中。為了區分返回結果和棧中的其他值,每一個函數返回結果的個數。
這里有個重要的概念:這個棧不是全局的結構,每個函數都有自己的私有局部棧。哪怕c函數調用了lua代碼,lua代碼再次調用該c函數,他們有各自獨立的局部棧。第一個參數的索引是1。
作為第一個例子,讓我們看看如何實現一個簡單的函數,返回給定2個參數的和:

復制代碼 代碼如下:

static int l_plus(lua_State* L)
{
     lua_Integer a = lua_tointeger(L, 1);
     lua_Integer b = lua_tointeger(L, 2);
     lua_pushinteger(L, a+b);
     return 1;
}

每一個Lua注冊的函數都必須是這個原型,它已經在lua.h中定義了:
復制代碼 代碼如下:

typedef int (*lua_CFunction) (lua_State *L);

由于c函數返回了一個int類型的返回值個數。因此,當壓入返回值之前,不必要清理棧,lua會自動移除返回值下面的任何數據。

在lua中使用該函數之前,我們需要注冊它。使用lua_pushcfunction,它接受一個c函數,然后在lua內部創建一個函數類型的值來表示該函數。

復制代碼 代碼如下:

lua_pushcfunction(L, lua_plus);
lua_setglobal(L, "myplus");

一個專業點的寫法是,我們必須檢查它的參數類型:
復制代碼 代碼如下:

static int l_plus(lua_State* L)
{
     lua_Integer a = luaL_checkinteger(L, 1);
     lua_Integer b = luaL_checkinteger(L, 2);
     lua_pushinteger(L, a+b);
     return 1;
}

完整代碼:
復制代碼 代碼如下:

#include lua.h>
#include lauxlib.h>
#include lualib.h>
static int l_plus(lua_State* L)
{
     lua_Integer a = luaL_checkinteger(L, 1);
     lua_Integer b = luaL_checkinteger(L, 2);
     lua_pushinteger(L, a+b);
     return 1;
}

int main()
{
     lua_State *L = luaL_newstate();
     luaL_openlibs(L);
     lua_pushcfunction(L, l_plus);
     lua_setglobal(L, "myplus");
     if (luaL_dostring(L, "print(myplus(2,2))")) {
          lua_close(L);
          error("Failed to invoke");
     }
     lua_close(L);
     return 0;
}


(完)

您可能感興趣的文章:
  • Lua教程(二十):Lua調用C函數
  • Lua教程(四):在Lua中調用C語言、C++的函數
  • Lua教程(三):C語言、C++中調用Lua的Table示例
  • C++中調用Lua函數實例
  • Lua中調用C++函數實例
  • Lua調用自定義C模塊
  • Lua教程(十九):C調用Lua
  • Lua編程示例(六): C語言調用Lua函數
  • C語言中調用Lua函數實例
  • C語言與Lua之間的相互調用詳解

標簽:金昌 儋州 天門 宣城 濰坊 天門 臺灣 德宏

巨人網絡通訊聲明:本文標題《Lua中調用C語言函數實例》,本文關鍵詞  Lua,中,調用,語言,函數,實例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中調用C語言函數實例》相關的同類信息!
  • 本頁收集關于Lua中調用C語言函數實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日本3p强伦无码视频| 韩国理伦一级毛片| 亚欧有色亚欧乱色视频| 日韩美香港a一级毛片| 91热久久免费频精品动漫99| 迈开腿让我尝一下你的味道一| 潘金莲三级女学生| 凹凸国产AV熟女白浆精品视| 精品人妻无码一区二区三区伊人直播| 被猛男cao尿了| 黑人精品videos亚洲人| 麻麻张开腿让我爽了一夜| 美女扒开粉嫩的尿囗给人摸| 1000部拍拍拍18资源类型| 真实男女动态无遮挡图| 色婷婷狠狠18禁久久YY| 把禁欲校草做到哭h| 99久久夜色精品国产亚洲AV卜无码 | 日韩高清在线高清免费| 国产精品一二三产区区| 国产人妻熟女ⅩXXX网站| 粗暴泄欲h| 欧美人成在线观看网站高清| 色欲AV天天天久久久综合网88| 国产区精品系列有声小说| jazzjazzjazz日本成熟视频| 色婷婷亚洲综合| 欧州裸体性色生活片| 蜜臀av性久久久久蜜臀aⅴ涩爱 | 美女张开腿让男人插| 18美女隐私频网站视频照片| 日日噜噜噜夜夜爽爽狠狠福利| 午夜dj在线观看高清视频完整| 黄三级日本三级香港三级| 宅男噜噜噜66国产免费| tianfangeab国产精品| 欧美youjizz| 欧美不卡一区二区三区| 37tp高清人体粉嫩美鲍| 免费一级婬片A片AAA小说软件 | 羞羞网站视频|