它的工作原理,如果一個C函數調用Lua函數當Lua調用C API 和LUA函數調用C API,longjmp的錯誤如何獲得LUA腳本C功能
lua_yieldk,lua_callk和lua_pcallk 如何它工作嗎?
我的C代碼:
int trace(lua_State *L)
{
const char *str = luaL_checkstring(L, 1);
printf("%d:%s\n", GetTickCount(), str);
return 1;
}
int pause(lua_State *L)
{
printf("pause");
return lua_yield(L, 0);
}
int _tmain(int argc, _TCHAR* argv[])
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_pushcfunction(L, pause);
lua_setglobal(L, "pause");
lua_pushcfunction(L, trace);
lua_setglobal(L, "trace");
if (luaL_loadfile(L, "test.lua"))
error(L, "cannot run script %s\n", lua_tostring(L,-1));
lua_resume(L, NULL, 0);
lua_getglobal(L, "t");
lua_pcallk(L, 0, 0, 0, 0, 0);
lua_resume(L, NULL, 0);
lua_resume(L, NULL, 0);
lua_resume(L, NULL, 0);
lua_resume(L, NULL, 0);
lua_close(L);
getchar();
return 0;
}
Lua代碼
function t()
pause(2)
pause(2)
pause(2)
pause(2)
end
非常感謝你....我現在可以睡了^^ – user1790687 2013-05-08 05:25:18