Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua布尔can';你不能像数字一样比较吗?_C_Lua - Fatal编程技术网

Lua布尔can';你不能像数字一样比较吗?

Lua布尔can';你不能像数字一样比较吗?,c,lua,C,Lua,我使用Lua5.3CAPI 我使用luaapi与脚本建模设备通信。 Lua脚本描述设备的行为。 这里是从Lua调用的C函数 static int lua_get_pin_bool ( lua_State* L ) { lua_Number argnum = lua_gettop ( L ); if ( 1 > argnum ) { out_error ( "Function %s expects 1 arguments got %d\n", __PR

我使用Lua5.3CAPI

我使用luaapi与脚本建模设备通信。 Lua脚本描述设备的行为。 这里是从Lua调用的C函数

static int
lua_get_pin_bool ( lua_State* L )
{
    lua_Number argnum = lua_gettop ( L );
    if ( 1 > argnum )
    {
        out_error ( "Function %s expects 1 arguments got %d\n", __PRETTY_FUNCTION__, argnum );
        return 0;
    }
    int32_t pin_num = lua_tonumber ( L, -1 );
    bool state = get_pin_bool ( device_pins[pin_num]);
    if ( -1 == state )
    {       
        lua_pushnil(L);
        return 1;
    }
    lua_pushboolean ( L,  state);
    return 1;
}
以及使用它的相应Lua函数(
get\u pin\u bool
调用
Lua\u get\u pin\u bool

在Lua中,实际上从未返回
get\u pin\u bool
lua\u pushboolean
返回,C代码工作正常。 如果我将其更改为
lua\u pushnumber
所有工作正常。事实上,它并不影响库的逻辑,但我不明白为什么它会破坏luavm。
我仔细检查了C中的状态变量,它总是0或1。

这里的脚本逻辑有问题

if 1 == get_pin_bool(_G["A"..i]) then

lua不是C。布尔值不等于数字1(或任何其他数字)。

是否有任何东西实际被“损坏”了,或者脚本逻辑不工作?因为lua中的布尔值永远不会
==1
。非常感谢。看来我太沉迷于C了。更改为使用真/假,一切正常。。。我的错,别担心。但是要注意你如何表达你的问题。这里没有任何“腐败”,所以这是一个非常误导人的标题。问题是你的比较不起作用(快速打印结果,然后进行比较测试就会发现问题)。
if 1 == get_pin_bool(_G["A"..i]) then