繁体   English   中英

Lua - lua_tostring() 返回奇怪的结果

[英]Lua - lua_tostring() returning strange results

让以下代码:

lua_pushinteger( m_pLuaState, 123 );
const char * sAsString = lua_tostring( m_pLuaState, -1 );

返回包含奇怪数值的字符串的非空指针,如"17137503626592379""14326121113845883"等......

它似乎是随机的,不会违反内存(至少在几次尝试中),并且返回的字符串始终包含有效的数值,尽管不是我首先传递的数值(即 123)。

我认为这与浮点/整数转换有关。

我正在使用Lua 5.3.2 ,它支持“整数”和“浮点数”作为“数字”的两个子类型,并且我使用浮点数表示数字,使用 int 表示整数。 我同时使用 Windows CE 和 Windows 7。在两个平台上,“int”和“float”都是 32 位,尽管我的 Windows 7 是 64 位,因为我明确地为 x86 编译。

这是我的 luaconf.h 的一部分

#if !defined(LUA_INT_TYPE)
#define LUA_INT_TYPE    LUA_INT_INT
#endif

#if !defined(LUA_FLOAT_TYPE)
#define LUA_FLOAT_TYPE  LUA_FLOAT_FLOAT
#endif

在写这篇文章时,我意识到这可能是因为我更改了正在使用的类型而没有重新编译我正在链接的静态 lua .lib。 这可能是由于这个吗? 我会尝试重新编译...

这可能是由于其他原因吗? 谢谢你。

一旦定义了用于整数和浮点数的类型,重新编译 lua53.lib 之后,它就可以正常工作了。

问题是我在没有重新编译库的情况下更改了这些类型。 Windows 桌面版本最初使用双精度而不是浮点数进行编译。 我想这就是问题的根源。

我回答是因为我不能评论,但我在你的代码中看到了什么。

lua_pushinteger( m_pLuaState, 123 );
const char * sAsString = lua_tostring( m_pLuaState, -1 );

您正在推动和整数并拉动一个字符串,因为它们是不同的数据类型,我认为它会为您提供有趣的输出是正常的。 我想这是试图将堆栈的信息从整数转换为字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM