在omnetpp.ini中引用NED的numHosts变量时配置报错的解决方法
解决OMNeT++中output-scalar-file引用模块参数的错误
问题原因
当前写法出错的核心原因:output-scalar-file是全局配置项,由场景生成器(Scenario generator)处理,它不支持par("numHosts")这种仅在模块上下文生效的表达式,因此触发语法错误。
解决步骤
- 定义全局配置变量:先把
numHosts声明为全局配置参数,而非仅模块参数 - 模块参数绑定全局变量:让模块的
numHosts参数引用这个全局变量 - 全局变量直接用于输出文件名:在
output-scalar-file中直接引用全局变量
修改后的完整配置如下:
# 全局配置变量 numHosts = 4 # 模块参数绑定全局变量 *.numHosts = ${numHosts} # 输出文件名引用全局变量 output-scalar-file = ${resultdir}/${configname}-h${numHosts}.sca
补充说明
如果numHosts是在NED文件中定义的模块参数,也可以通过上述方式将其与全局配置变量绑定,既能保留NED中的定义,又能在全局配置项中正常引用该值。
内容的提问来源于stack exchange,提问作者Maryam
相关产品推荐
相关产品推荐

