向棧中壓入資料:
lua_pushnil(lua_state*);
lua_pushboolean(lua_state*, bool);
lua_pushnumber(lua_state*, lua_number);
lua_pushinteger(lua_state*, lua_integer)
lua_pushlstring(lua_state*, const char*, size_t);
lua_pushstring(lua_state*, const char*);
獲取棧中元素的型別
lua_type(lua_state* l, int index);
型別包括 lua_tnil, lua_tboolean, lua_tnumber, lua_tstring, lua_ttable, lua_tfunction, lua_tuserdata
驗證棧中的元素型別;
lua_is*(lua_state* l, int index)
其實有了lua_type()完全可以自己寫型別驗證的 每必要使用lua提供的api
比如可以定義
bool lua_is_number (lua_state*l, int index)
所以完全是可以利用lua_type來自行定義對棧中元素的驗證的。
獲取棧中元素的型別的字串表示:
lua_typename(lua_state*, int )這裡的int值是通過lua_type()獲取到的值
其實這些都可以通過lua_type(lua_state*)來進行實現
const char*lua_type_str(int lua_type)return
type
;}
這樣就可以實現你自己的棧元素型別的字串顯示了
獲取指定位置的元素可以使用lua_to*(lua_state*, int )
int lua_toboolean(lua_state*, int);
lua_number lua_tonumber(lua_state*, int);
lua_integer lua_tointeger(lua_state*, int );
const char* lua_tolstring(lua_state*, int, size_t length);
lua_gettop(lua_state*) 得到棧中元素的個數
lua_settop(lua_state*, int index)
設定棧中元素的個數,如果設定的值比當前棧中元素的個數多,則將多出的那部分全部丟棄,如果設定的值比當前棧中元素個數多,則將新加的值全部設定為nil.
lua_pushvalue(lua_state*, int index) 將index位置的值的副本壓入棧頂
lua_remove(lua_state* l, int index)將指定位置的元素刪除,並且其上的所有元素下移
lua_insert(lua_state*, int index) 將指定位置之上的元素上移,空出該位置,並將棧頂元素移到此處
lua_replace(lua_state*, int index)將棧頂元素彈出,並將其設定到指定的索引上。
lua_pop是以乙個巨集的形式進行定義的
#define lua_pop(l, n) lua_settop(l, -(n) - 1);
比如彈出棧頂的元素則可以使用 lua_pop(l, 1)
Lua操作棧c呼叫lua
include stdafx.h int main 得到初始化棧大小 printf 初始化棧大小 d n lua gettop plua 開啟所有功能庫 lual openlibs plua 載入指令碼 lual dofile plua,test.lua 將指令碼中的add函式入棧 int ret ...
Lua和C語言的互動 C API
lua可作為擴充套件性語言 lua可以作為程式庫用來擴充套件應用的功能 同時也是個可擴充套件的語言 lua程式中可以註冊由其他語言實現的函式 c和lua互動的部分稱為c api。c api是乙個c 與lua進行互動的函式集。他由以下部分組成 讀寫lua全域性變數的函式 呼叫lua函式的函式 執行lu...
c呼叫 lua 棧操作
打算記錄一些lua api,可能會覺得lua文件中已經說的很清楚了,但是我將用自己的方式,記錄下我認為重要的東西,先約定一下api說明的格式 編號.api作用簡述 api函式原型 api操作說明 返回值說明 對棧的影響 注意事項 1.建乙個新錶 void lua createtable lua st...