编译错误'如果'声明

时间:2016-06-30 21:12:05

标签: lua

我运行一个小的Lua块作为事件循环,调用luaL_loadstring()来加载它。 请注意,我在这些示例中有两个C函数;函数logmsg()将其字符串参数输出到日志文件,函数getevt()等待,直到事件准备好传递给块并在事件发生时返回整数事件ID。

当我加载这个块时:

logmsg( 'Entering evt loop' )
while true do
    local evt
    evt = getevt()
    logmsg( 'Got event '..evt )
    if evt == 73 then
        logmsg( "Event equal to 73" )
    end
end
logmsg( "Exited evt loop" )

加载成功,当我运行它时,我得到了预期的输出。

但是,如果我试图改变'如果'声明如下:

logmsg( 'Entering evt loop' )
while true do
    local evt
    evt = getevt()
    logmsg( 'Got event '..evt )
    if evt < 73 then
        logmsg( "Event less than 73" )
    elseif evt > 73 then
        logmsg( "Event greater than 73" )
    else
        logmsg( "Event equal to 73" )
    end
end
logmsg( "Exited evt loop" )

然后加载失败,并返回错误代码3,错误字符串

  

[string&#34; logmsg(&#39;进入evt循环&#39;)...&#34;]:6:&#39;然后&#39;预计在&#39;;&#39;

附近

这怎么可能?甚至没有&#39 ;;&#39;大块中的角色。是否有可能如果我的编辑器放入CR而不是CR + LF,它会混淆编译器吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题。块通过XML接口传入,似乎&#34;&lt;&#34;正被转换为&#34;&amp; lt;&#34;进行中。这解释了神秘的错误信息,以及&#34 ;;&#34;在原始代码中没有。我只是通过在传递给luaL_loadstring()之前传入的字符串的原始缓冲区转储来找到它。哇。没想到。

相关问题