我有一个while循环并且基于标志循环将终止,但即使在使标志为true循环后也没有退出。
在调试模式下,它的工作正常,并且在发布模式下使用qDebug也可以正常工作。如何追踪这个问题
while (1)
{
if(isFlagUpdated)
{
isFlagUpdated = false;
break;
}
qDebug()<<"Running while loop";
}
如果我删除了qDebug()<<"Running while loop";
无法在发布模式下工作
答案 0 :(得分:1)
编译器可能会检测到&#34; isFlagUpdated&#34;不应该改变并优化你的代码。
您可能想声明&#34; isFlagUpdated&#34;像挥发性一样,以避免这种行为。
答案 1 :(得分:0)
为什么不在循环条件下使用你的标志?
此循环将一直运行,直到isFlagUpdated变为true。
While(!isFlagUpdated) {
qDebug() << "Running while loop";
}