Qt while循环不按预期工作

时间:2018-02-28 13:58:04

标签: c++ qt qt5

我有一个while循环并且基于标志循环将终止,但即使在使标志为true循环后也没有退出。

在调试模式下,它的工作正常,并且在发布模式下使用qDebug也可以正常工作。如何追踪这个问题

while (1)
{
    if(isFlagUpdated)
    {
        isFlagUpdated = false;
        break;
    }
    qDebug()<<"Running while loop";
}

如果我删除了qDebug()<<"Running while loop";无法在发布模式下工作

2 个答案:

答案 0 :(得分:1)

编译器可能会检测到&#34; isFlagUpdated&#34;不应该改变并优化你的代码。

您可能想声明&#34; isFlagUpdated&#34;像挥发性一样,以避免这种行为。

答案 1 :(得分:0)

为什么不在循环条件下使用你的标志?

此循环将一直运行,直到isFlagUpdated变为true。

While(!isFlagUpdated) {
    qDebug() << "Running while loop";
}