如何摆脱这些 c++警告?
warning: argument to `int' from `lua_Number'
我通过使用 lua_tonumber 函数收到这些警告。问题是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
warning: argument to `int' from `lua_Number'
我通过使用 lua_tonumber 函数收到这些警告。问题是什么?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
当您需要
lua_Number
中的int
时,请使用lua_tointeger
。When you want an
int
from alua_Number
, uselua_tointeger
.来自http://pgl.yoyo.org/luai/i/lua_tonumber:
它想要第二个参数为 int。您的警告很有帮助,“从 lua_Number' 到
int' 的参数”。因此,您可能为第二个参数传递“lua_Number”,而不是 int。 'lua_Number' 是一个双精度数。
因为它是 Lua 堆栈中的索引号,所以传递 double 没有任何意义。我会检查您的代码,因为传入 lua_Number 可能是一个错误。
From http://pgl.yoyo.org/luai/i/lua_tonumber:
It wants an int for the 2nd parameter. Your warning says, helpfully, "argument to
int' from
lua_Number'". So you're probably passing in a 'lua_Number' for the 2nd parameter, rather than an int. a 'lua_Number' is a double.Since it's an index number into Lua's stack, passing a double doesn't make any sense. I would check your code as passing in a lua_Number is probably a mistake.
根据提供的和备用的信息,我的答案是:
lua_Number 是一个双精度数。所以它抱怨转换为 int 。
最简单的转换方法是这样的:
但是,b 将是 3。如果你想对其进行四舍五入,你可以这样做:
这样你就可以确保每个后缀大于或等于 0.5 的数字都被四舍五入。
但你需要自己决定,你想要什么样的解决方案。
Based on the provided and spare informations, my answer is this:
lua_Number is a double. So it is complaining about getting converted to an int.
The easiest method to convert it is this:
However, b will be 3. If you want to round it, you can do something like this:
This way you can ensure that every number which has a suffix higher or equal to 0.5 is rounded.
But you need to decide yourself, what kind of solution you want here.
尝试 static_cast 吗?它通常会抑制警告,但我对 Lua 不熟悉。
Try static_cast? It usually suppresses warnings, but I'm not familiar with Lua.