我运行一个小的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,它会混淆编译器吗?
答案 0 :(得分:0)
我发现了问题。块通过XML接口传入,似乎&#34;&lt;&#34;正被转换为&#34;&amp; lt;&#34;进行中。这解释了神秘的错误信息,以及&#34 ;;&#34;在原始代码中没有。我只是通过在传递给luaL_loadstring()之前传入的字符串的原始缓冲区转储来找到它。哇。没想到。