如何摆脱这些c ++警告?

时间:2011-08-10 00:44:27

标签: c++ lua warnings

warning: argument to `int' from `lua_Number'

我使用lua_tonumber函数得到这些警告。有什么问题?

4 个答案:

答案 0 :(得分:4)

如果您需要int中的lua_Number,请使用lua_tointeger

答案 1 :(得分:3)

来自http://pgl.yoyo.org/luai/i/lua_tonumber

lua_Number lua_tonumber (lua_State *L, int index);

它想要第二个参数的int。你的警告有助于“int' from lua_Number'的争论”。所以你可能传递'lua_Number'作为第二个参数,而不是int。 'lua_Number'是双倍的。

因为它是Lua堆栈的索引号,所以传递double是没有任何意义的。我会检查你的代码,因为传入lua_Number可能是一个错误。

答案 2 :(得分:0)

根据提供的和备用的信息,我的答案是:

lua_Number是一个双倍。所以它抱怨转换为int。

转换它的最简单方法是:

lua_Number a = 3.7;
int b;
b = static_cast<int>(a)

然而,b将是3.如果你想围绕它,你可以做这样的事情:

lua_Number a = 3.7;
int b;
b = static_cast<int>(a+0.5)

这样,您可以确保每个后缀大于或等于0.5的数字都是四舍五入的。

但你需要自己决定,你想要什么样的解决方案。

答案 3 :(得分:-1)

试试static_cast?它通常会抑制警告,但我不熟悉Lua。