在Lua中實現彙編中的跳轉語句Goto

2021-05-22 00:03:10 字數 1822 閱讀 9131

當指令碼只是一系列簡單命令序列的時候,乙個goto語句用起來會非常方便,比如可以這樣寫

--開始

print("這是1");

print("這是2");

goto("開始");

這是個無限迴圈,可以隨時跳轉,很方便,看起來也很清晰。

我基於luaplus實現了乙個,**如下:

/**    /file    cmdscript.h

*    /brief    基於命令式的lua指令碼物件

*    /author    cloud

*    /date    2010-3-15

*/#ifndef _cloud_cmd_script_h_

#define _cloud_cmd_script_h_

#include

#include

#include

#include

#include

using namespace luaplus;

class ccmdscript

;#endif

/**    /file    cmdscript.cpp

*    /author    cloud

*    /date    2010-3-15

*/#include "cmdscript.h"

#include

uint winapi scriptthread(void* p);

int lua_print(luastate* state)

ccmdscript::ccmdscript():m_icurrline(1)

ccmdscript::~ccmdscript()

bool ccmdscript::register()

int ccmdscript::parsefile(std::string strfile)

file.close();

return m_mapline.size();

}std::string ccmdscript::dolinebyindex(int index)

int ccmdscript::lua_goto(luastate* state)

}//找到,就返回1,否則,返回0

state->pushinteger((int)bfound);

return 1;

}int ccmdscript::getnextlineindex()

int ccmdscript::getsumline()

bool ccmdscript::runfile(std::string strfile)

/**    /brief 指令碼執行緒

*/uint winapi scriptthread(void* p)

return 0;

}寫個測試程式,

#include "cmdscript.h"

#pragma comment(lib,"luapluslib_1100.lib")

class myscript : public ccmdscript

~myscript(){}

virtual bool register();

};int myadd(int a,int b)

bool myscript::register()

int main(int argc,char** argv)

現在執行上面寫的指令碼

--開始

print("這是1");

print("這是2");

goto("開始");

這是個無限迴圈,vs2005 xp sp3 下測試通過。

在Lua中實現彙編中的跳轉語句Goto

當指令碼只是一系列簡單命令序列的時候,乙個goto語句用起來會非常方便,比如可以這樣寫 開始 print 這是1 print 這是2 goto 開始 這是個無限迴圈,可以隨時跳轉,很方便,看起來也很清晰。我基於luaplus實現了乙個,如下 file cmdscript.h brief 基於命令式的...

Python中的跳轉語句

上次我們說了 python 中的迴圈語句,而且還特別強調了,在寫迴圈的時候,一定要確保迴圈能夠退出,不然就成了死迴圈,那麼退出迴圈,其實是有三種方式的,第一種就是自然結束,比如上次說的,跑 5 圈,如果 5 圈跑完了,迴圈就自然退出了,除此之外,還有兩種,分別是跳過 continue 和結束 bre...

c 中的跳轉語句

1.goto語句 goto語句可以直接跳轉到程式中用標籤指定的另一行 標籤是乙個識別符號,後面跟乙個冒號 goto lable1 writeline 本行 不會執行 lable1 writeline 跳轉至本行 限制 1.不能跳轉到像for迴圈這樣的 塊中,也不能跳出類的範圍。2.不能退出try.c...