在omnet ++中,可以这样在omnetpp.ini文件中建立索引是可以的:
*.Member[0].numTcpApps = 2
*.Member[1..numberOfMembers].numTcpApps = 1
已在.ned文件中将参数numberOfMembers
指定为通常的整数变量。它被初始化为某个值,例如10.
如果将我的numberOfMembers
变量设置为仅1,会发生什么情况。在这种情况下,我应该只有一个成员(Member[0]
)。那么,.ini文件的第二个条目会怎样?
答案 0 :(得分:1)
一个人不能使用omnetpp.ini
中的NED参数的值。但是,您可以使用omnetpp.ini
中的wildcard patterns实现您的目标。
我们假设在.ned
中将网络定义为:
network ExampleNetwork
{
parameters:
int numberOfMembers;
submodules:
Member[numberOfMembers] : SomeMemberType;
// ...
}
然后omnetpp.ini
中的一个可以控制网络。例如,只为numTcpApps = 2
设置Member[0]
,为所有其他子模块设置numTcpApps = 1
,则应写:
*.numberOfMembers = 10
*.Member[0].numTcpApps = 2
*.Member[*].numTcpApps = 1 # i.e. Member[1], Member[2], ..., Member[9]
请注意omnetpp.ini
中的条目顺序,因为:
通配符的输入顺序非常重要。当键与多个通配符模式匹配时,将使用 first 匹配项。
因此,输入顺序如下:
*.numberOfMembers = 10
*.Member[*].numTcpApps = 1 # i.e. Member[0], Member[1], Member[2], ..., Member[9]
*.Member[0].numTcpApps = 2
将为所有子模块设置numTcpApps = 1
。由于条目Member[0]
已设置Member[*]
,因此不考虑最后一行。