C函式返回多個引數給lua

2021-09-02 06:18:30 字數 1508 閱讀 2259

lua通過乙個執行時棧來維護引數傳遞及返回,使用lua_to*等函式獲取lua傳遞到c函式的引數,使用lua_push*從c函式返回值到lua指令碼。此外也可以使用lua_getglobal從c函式獲取lua指令碼定義的全域性變數。

#include #include #include /* for function exit() */

#include /* for input/output */

void bail(lua_state *l, char *msg)

int lua_func_from_c(lua_state *l)

int main(int argc, const char *argv)

lua_state *l = lual_newstate(); /* create new lua state variable */

/* load lua libraries, otherwise, the lua function in *.lua will be nil */

lual_openlibs(l);

/* register new lua function in c */

lua_register(l, "lua_func_from_c", lua_func_from_c);

if( lual_loadfile(l,argv[1]) ) /* only load the lua script file */

bail(l, "lual_loadfile() failed");

if( lua_pcall(l,0,0,0) ) /* run the loaded lua file */

bail(l, "lua_pcall() failed");

lua_close(l); /* close the lua state variable */

return 0;

}

lua指令碼(my.lua)如下所示(在lua指令碼中,如果變數不用local明確宣告為區域性變數,則預設為全域性變數):

print("hello world")

global_var = "this is a global string"

first, second = lua_func_from_c("the first one", 2)

print("the first returned", first)

print("the second returned", second)

執行結果:

hello world

this is c

the first argument: the first one

the second argument: 2

global_var is this is a global string

the first returned the first return

the second returned 4

函式 返回多個引數

返回多個資料,返回的是元組 解包 用變數來接收 info xiaoming beijing haidian name addr,arte info 用三個變數來接受 print name addr,arte 區域性變數 在函式中定義的變數 沒有加global修飾 在函式裡面,除了函式就失效了 例如 ...

C 函式如何返回多個引數值

有時我們需要從通過乙個函式返回多個值,不幸的是c c 不允許這樣做 但我們可以通過一些巧妙的方法來達到這種效果。下面本篇文章就來給大家介紹c c 從函式中返回多個值的方法,希望對大家有所幫助。在函式呼叫時,傳遞帶有位址的引數,並使用指標更改其值 這樣,修改後的值就會變成原始引數。下面通過 示例來看看...

Lua函式的多個返回值

lua中的函式的乙個很特殊也很有用的性質,即可以有多個返回值。包括一些內建的函式就是這樣。比如string.find函式,在給定的字串中查詢乙個pattern,如果有匹配的部分,則返回對應的頭 尾的兩個索引值 如果不存在匹配,則返回nil。當然,使用者定義的函式也可以有多個返回值,通過return關...