程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Lua和C++交互詳細總結_2_堆棧的操作

Lua和C++交互詳細總結_2_堆棧的操作

編輯:關於C++

二、堆棧的操作

因為Lua與C/C++是通過棧來通信,Lua提供了C API對棧進行操作。

我們先來看一個最簡單的例子:

#include   
#include   
using namespace std;  
   
extern "C"  
{  
    #include "lua.h"  
    #include "lauxlib.h"  
    #include "lualib.h"  
}  
void main()  
{  
    //1.創建一個state  
    lua_State *L = luaL_newstate();  
       
    //2.入棧操作  
    lua_pushstring(L, "I am so cool~");   
    lua_pushnumber(L,20);  
   
    //3.取值操作  
    if( lua_isstring(L,1)){             //判斷是否可以轉為string  
        cout<可以簡單理解為luaL_newstate返回一個指向堆棧的指針,其它看注釋應該能懂了吧。

其他一些棧操作:

int   lua_gettop (lua_State *L);            //返回棧頂索引(即棧長度)  
void  lua_settop (lua_State *L, int idx);   //                
void  lua_pushvalue (lua_State *L, int idx);//將idx索引上的值的副本壓入棧頂  
void  lua_remove (lua_State *L, int idx);   //移除idx索引上的值  
void  lua_insert (lua_State *L, int idx);   //彈出棧頂元素,並插入索引idx位置  
void  lua_replace (lua_State *L, int idx);  //彈出棧頂元素,並替換索引idx位置的值
ua_settop將棧頂設置為一個指定的位置,即修改棧中元素的數量。如果值比原棧頂高,則高的部分nil補足,如果值比原棧低,則原棧高出的部分捨棄。所以可以用lua_settop(0)來清空棧。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved