如何修复 MISRA C++ 规则 0-1-4

How to Fix MISRA C++ Rule 0-1-4

以下代码违反了 MISRA C++ 规则 0-1-4:

for (auto &a : b) {
    ... // The variable a is used only in the for condition.
}

规则:项目不得包含只有一种用途的非易失性 POD 变量。变量'a'只使用一次,即在初始化期间。

我尝试了什么:

for (const auto &a : b) {
    ... // The variable a is used only in the for condition.
}

但这不是解决方案。

有人知道我该如何解决吗?

唉,当前的 C++ 语法要求您在使用 for 循环的 range-for 形式时声明一个变量:

for (auto& : b) {

不允许,尽管它有潜在的应用(例如计算容器中的元素数量)。

写作

a;

(void)a;

在循环体中可能会根据类型起作用。这会愚弄静态分析器,你可以希望表达式被编译出来。