我有两个方法,例如,delayloop()和function(),其中delayloop()有一个while和time()延迟,每隔n秒循环一次。
如果在我的主要部分,我打电话:
delayloop();
然后
function();
永远不会调用方法function(),因为它之前的循环方法似乎阻止了它。
防止应用程序不传递delayloop()函数的方法是什么?
编辑:
delayloop();
void delayloop() {
boolean delay = true;
while (delay){
time_t start_time, cur_time;
time(&start_time);
do
{
time(&cur_time);
}
while((cur_time - start_time) < 5);
cout << "+5 seconds" << endl;
}
}
答案 0 :(得分:2)
在正常情况下,控制按顺序流过您的程序。如果您在function()
行之前输入无限循环,则永远不会调用function
。所以看起来你在delayloop
函数中有一个错误,如果我们能看到代码就会有所帮助。
我们有它。你永远不会将delay
设置为false,因此我们进入无限循环。
答案 1 :(得分:0)
在delayloop()中用while
循环替换for
循环。
(假设while循环的退出条件永远不会满足,你可以通过更容易理解的for循环来纠正它...但这是一个很长的镜头,没有看到代码并理解这两个函数的目标)
添加代码后编辑:
第一个while
条件始终为真(delay
未被修改),这就是它阻止的原因。将其替换为if
。
答案 2 :(得分:0)
你永远不会改变延迟状态,因此它将始终保持为真,并且循环将无限期地执行。
答案 3 :(得分:0)
你永远不会改变delay
;没有办法摆脱循环。在不知道想要 delayloop()
要做什么的情况下,很难建议您如何更改它。