如何解决警告 "ignoring return value of function declared with 'warn_unused_result' attribute"

How to resolve warning "ignoring return value of function declared with 'warn_unused_result' attribute"

我正在用 QT 编写测试自动化。我正在使用 QTest::qWaitFor 等待事件循环切换到 UI 中的另一个选项卡。

QTest::qWaitFor([tabs, &currentIdx]() {
    currentIdx = tabs->currentIndex();
    return currentIdx == 1;
}, 5000);

每次我使用这样的构造时都会出现以下警告:

ignoring return value of function declared with 'warn_unused_result' attribute

我花了好几个小时处理它,但没有结果。我认为问题在于函数使用 lambda 表达式返回值的方式。有什么解决方法吗?

问题不在于 lambda,而是您的 用法:

您应该 use/check return qWaitFor 的值(以了解是否发生超时):

if (QTest::qWaitFor([tabs, &currentIdx]() {
        currentIdx = tabs->currentIndex();
        return currentIdx == 1;
    }, 5000)) {
    // OK.
    // ...
} else {
    // timeout.
    // ...
}