gnuplot:宏处理中脚本和交互模式的区别

gnuplot:宏处理中脚本和交互模式的区别,gnuplot,Gnuplot,Iam使用windows版本的gnuplot Version 4.6 patchlevel 3 last modified April 2013 我在通过“加载…”运行gnuplot脚本时遇到问题 如果我从gnuplot命令行执行以下命令 set macro test1 = "@test2" test2 = "sin(x)" pl @test1 gnuplot> load 'test.gp' 它确实像预期的那样工作。但是如果我将代码放入脚本并从命令行执行它 set macro

Iam使用windows版本的gnuplot

Version 4.6 patchlevel 3    last modified April 2013
我在通过“加载…”运行gnuplot脚本时遇到问题

如果我从gnuplot命令行执行以下命令

set macro
test1 = "@test2"
test2 = "sin(x)"
pl @test1
gnuplot> load 'test.gp'
它确实像预期的那样工作。但是如果我将代码放入脚本并从命令行执行它

set macro
test1 = "@test2"
test2 = "sin(x)"
pl @test1
gnuplot> load 'test.gp'
我得到了错误

gnuplot> pl @test2
            ^
         "test.gp", line 4: invalid character @'
在脚本和交互模式之间,宏处理器的工作方式(宏嵌套深度)似乎有所不同。 有没有可能解决这个问题

编辑: 我将脚本更改如下:

set macro
test1 = "sin(x)"
test2 = "@test1"
test3 = "@test2"
test4 = "@test3"
pl @test1
pl @test2
pl @test3
pl @test4
在交互模式下,它在
pl@test4
处中止,嵌套宏的级别太多。 在脚本执行时,它在第一个预处理步骤后的第二个plot命令中中止,并执行以下操作:

gnuplot>     pl @test1
                ^
         "test.gp", line 7: invalid character @

load
命令的问题是一个bug,请参阅,该bug已在2013-06-28的开发版本中修复

交互模式中的限制是预期行为,
ChangeLog
说明了上述错误修复:

  • src/misc.c(加载文件):在 逐步执行“加载”操作。这与允许的深度相匹配 用于顶级命令行。 臭虫#1246

嗯,用我需要或想要的所有终端进行构建更为复杂。我想我必须解决这个问题。@vlad_tepesch你有什么操作系统,如果你正在使用Debian/类似的,我可以帮你:)第一行问题;)-windows winXP32将完全兼容。构建cvs代码可以很好地工作,但是wxt和cairo支持需要大量额外的LIB,我必须首先构建这些LIB。很遗憾,我没有时间做这些。@vlad_tepesch很抱歉,但对于在Windows上编译,我完全迷路了。不时会有新的CVS测试二进制文件,请参阅。但我还没试过。