omnet++: c++简单条件
Omnet++: C++ simple condition
是什么原因导致这个条件不为真而执行else
IPassiveQueue *queueModule = nullptr;
queueModule = nullptr;
if (queueModule == nullptr) {...}
else {...}
[edit1]根据下面的答案,我在这里添加了我试图强制条件为真的原因
下面的代码总是检查第一个条件并执行else。它在初始化中,所以它不依赖于任何先前执行的类,并且queueModule成员在类定义中被设置为受保护成员
class INET_API EtherMACBase : public MACBase
{virtual void initializeQueueModule();
IPassiveQueue *queueModule = nullptr;
...}
void EtherMACBase::initializeQueueModule()
{
queueModule = nullptr;
if (par("queueModule").stringValue()[0]) {...}
else {...}
}
而在这种情况下,条件为真,尽管参数被设置为相同的
class INET_API PPP : public MACBase
{
protected:
IPassiveQueue *queueModule = nullptr;
virtual void initialize(int stage) override;
...
}
void PPP::initialize(int stage)
{
queueModule = nullptr;
if (par("queueModule").stringValue()[0]) {...}
else {...}
}
[edit2]这是Jerzy d问的调试图片
您的问题是INET
中NED
文件中PPP和以太网接口的默认队列类型声明不同的结果。
看看这两个文件:src/inet/linklayer/ppp/PPPInterface.ned
和src/inet/linklayer/ethernet/EthernetInterface.ned
。这些文件的关键部分如下:
module PPPInterface like IWiredNic
{
parameters:
string queueType = default("DropTailQueue");
submodules:
queue: <queueType> like IOutputQueue if queueType != "" {
}
ppp: PPP {
parameters:
queueModule = (queueType == "" ? "" : "^.queue");
}
}
module EthernetInterface like IWiredNic
{
parameters:
string queueType = default("");
submodules:
queue: EtherQoSQueue if queueType != "" {
}
mac: <macType> like IEtherMAC {
parameters:
queueModule = (queueType == "" ? "" : "^.queue");
}
}
可以注意到PPPInterface
具有为queueType
参数分配的默认值,因此有一个队列子模块以及参数queueModule
不是空的。
但是EthernetInterface
没有queueType
的值,所以没有队列子模块,参数queueModule
为空字符串。读取空字符串的[0]
元素的结果为0 (false)。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在c++中用vector填充一个简单的动态数组
- (C++)分析树以计算返回错误值的简单算术表达式
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么简单的算术减法在"if"条件下不起作用?
- 改进简单条件下C++样式
- 类简单分数的不可接受的条件表达式
- 有没有更简单的方法在 Rcpp 中使用 NumericVector 编写条件语句
- 如果存在条件,是否有更简单的表示形式
- 在特定条件下的循环和简单计算器的结尾
- 是否有更简单的方法来定义C 中的for循环中的条件
- 带有字符串的简单 if 条件
- 关于条件C++如何执行的简单查询
- 为SPOJ NAKANJ编写条件块的更简单方法-最小骑士移动
- omnet++: c++简单条件
- QThread:用最简单的代码竞态条件
- C++:不应用于简单嵌套if-then-else语句的条件
- 有条件的简单析构函数
- 在条件语句中简单检查指针值的后果是什么?
- 处理两个if条件的最简单方法