• <tfoot id='qYpsz'></tfoot>

    <small id='qYpsz'></small><noframes id='qYpsz'>

    1. <legend id='qYpsz'><style id='qYpsz'><dir id='qYpsz'><q id='qYpsz'></q></dir></style></legend>
      • <bdo id='qYpsz'></bdo><ul id='qYpsz'></ul>
      <i id='qYpsz'><tr id='qYpsz'><dt id='qYpsz'><q id='qYpsz'><span id='qYpsz'><b id='qYpsz'><form id='qYpsz'><ins id='qYpsz'></ins><ul id='qYpsz'></ul><sub id='qYpsz'></sub></form><legend id='qYpsz'></legend><bdo id='qYpsz'><pre id='qYpsz'><center id='qYpsz'></center></pre></bdo></b><th id='qYpsz'></th></span></q></dt></tr></i><div id='qYpsz'><tfoot id='qYpsz'></tfoot><dl id='qYpsz'><fieldset id='qYpsz'></fieldset></dl></div>

        luaL_dostring 在堆栈上什么都不放?

        luaL_dostring puts nothing on the stack?(luaL_dostring 在堆栈上什么都不放?)

          • <tfoot id='KUHXM'></tfoot>
                  <tbody id='KUHXM'></tbody>
                  <bdo id='KUHXM'></bdo><ul id='KUHXM'></ul>
                  <i id='KUHXM'><tr id='KUHXM'><dt id='KUHXM'><q id='KUHXM'><span id='KUHXM'><b id='KUHXM'><form id='KUHXM'><ins id='KUHXM'></ins><ul id='KUHXM'></ul><sub id='KUHXM'></sub></form><legend id='KUHXM'></legend><bdo id='KUHXM'><pre id='KUHXM'><center id='KUHXM'></center></pre></bdo></b><th id='KUHXM'></th></span></q></dt></tr></i><div id='KUHXM'><tfoot id='KUHXM'></tfoot><dl id='KUHXM'><fieldset id='KUHXM'></fieldset></dl></div>
                  <legend id='KUHXM'><style id='KUHXM'><dir id='KUHXM'><q id='KUHXM'></q></dir></style></legend>

                  <small id='KUHXM'></small><noframes id='KUHXM'>

                • 本文介绍了luaL_dostring 在堆栈上什么都不放?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试学习 Lua 与 C++ 接口的基础知识,但遇到了一个问题.我想调用一个返回字符串的函数,然后在 C++ 端处理这个字符串,但是 luaL_dostring 似乎没有在 Lua 堆栈上放任何东西.

                  I'm trying to learn the basics of interfacing Lua with C++, but I've run into a problem. I want to call a function that returns a string, and then work with the string on the C++ side, but luaL_dostring seems to put nothing on the Lua stack.

                  即使是一个简单的测试似乎也不能正常工作:

                  Even a simple test doesn't seem to work properly:

                  lua_State* lua = lua_open();
                  luaL_openlibs(lua);
                  
                  //Test dostring.
                  luaL_dostring(lua, "return 'derp'");
                  
                  int top = lua_gettop(lua);
                  cout << "stack top is " <<top << endl;
                  
                  //Next, test pushstring.
                  lua_pushstring(lua, "derp");
                  
                  top = lua_gettop(lua);
                  cout << "stack top is " << top << endl;
                  

                  输出:

                  stack top is 0
                  stack top is 1
                  

                  有什么想法吗?

                  推荐答案

                  啊哈,发现问题了.根据 this page,在 Lua 5.1 中 luaL_dostring 忽略返回.我的代码可能适用于 Lua 5.2.

                  Aha, found the problem. According to this page, in Lua 5.1 luaL_dostring ignores returns. The code I had would probably work in Lua 5.2.

                  要更改功能,您应该使用:

                  To alter the functionality, you should use:

                  #undef luaL_dostring
                  #define luaL_dostring(L,s)  
                      (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
                  

                  这篇关于luaL_dostring 在堆栈上什么都不放?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Constructor initialization Vs assignment(构造函数初始化 Vs 赋值)
                  Is a `=default` move constructor equivalent to a member-wise move constructor?(`=default` 移动构造函数是否等同于成员移动构造函数?)
                  Has the new C++11 member initialization feature at declaration made initialization lists obsolete?(声明时新的 C++11 成员初始化功能是否使初始化列表过时了?)
                  Order of constructor call in virtual inheritance(虚继承中构造函数调用的顺序)
                  How to use sfinae for selecting constructors?(如何使用 sfinae 选择构造函数?)
                  Initializing a union with a non-trivial constructor(使用非平凡的构造函数初始化联合)

                  1. <i id='U7Ogw'><tr id='U7Ogw'><dt id='U7Ogw'><q id='U7Ogw'><span id='U7Ogw'><b id='U7Ogw'><form id='U7Ogw'><ins id='U7Ogw'></ins><ul id='U7Ogw'></ul><sub id='U7Ogw'></sub></form><legend id='U7Ogw'></legend><bdo id='U7Ogw'><pre id='U7Ogw'><center id='U7Ogw'></center></pre></bdo></b><th id='U7Ogw'></th></span></q></dt></tr></i><div id='U7Ogw'><tfoot id='U7Ogw'></tfoot><dl id='U7Ogw'><fieldset id='U7Ogw'></fieldset></dl></div>

                      1. <legend id='U7Ogw'><style id='U7Ogw'><dir id='U7Ogw'><q id='U7Ogw'></q></dir></style></legend>

                            <tbody id='U7Ogw'></tbody>
                          • <bdo id='U7Ogw'></bdo><ul id='U7Ogw'></ul>
                          • <small id='U7Ogw'></small><noframes id='U7Ogw'>

                            <tfoot id='U7Ogw'></tfoot>