1

我有两个功能:

bool f() const
int g() const

有问题的 if 语句位于 while 循环中,如下所示:

while(/*get next element*/){
  if ( f() || g() == 5 ) continue;
  // Do some stuff...
}

gdb告诉我f()返回TRUE;但是,continue并没有被执行。该程序在循环体中进一步“做一些事情”。

这里有什么问题?是在gdb骗我吗?

解决方案:我的代码的先前版本没有f()在 if 语句中包含对的调用。我忘了重新编译,所以消息来源让我相信这个电话在那里,但事实并非如此。https://stackoverflow.com/a/19989652/1566525

4

2 回答 2

1

gdb:源文件比可执行文件更新

以为我重新编译了,但显然没有。希望这个警告更加突出。

我的上一个修订版没有调用f()它。

于 2013-11-14T22:21:03.570 回答
0

您是否if在任何循环中声明?

来自 cppreference:

导致封闭的 for、range-for、while 或 do-while 循环体的剩余部分被跳过。当使用条件语句忽略循环的剩余部分很尴尬时使用。

于 2013-11-14T22:08:17.233 回答