在 C++ 中,我需要迭代一定次数,但我不需要迭代变量。例如:
for( int x=0; x<10; ++x ) {
/* code goes here, i do not reference "x" in this code */
}
我意识到我可以通过用 lambda 或命名函数替换“代码到这里”来做到这一点,但这个问题专门针对 for 循环。
我希望 C++11 基于范围的 for 循环会有所帮助:
for( auto x : boost::irange(0,10) ) {
/* code goes here, i do not reference "x" in this code */
}
但上面给出了一个“未引用的局部变量”,因为我从未明确引用 x。
我想知道是否有一种更优雅的方式来编写上述 for 循环,以便代码不会生成“未引用的局部变量”警告。
原文由 nonagon 发布,翻译遵循 CC BY-SA 4.0 许可协议
可能有办法做到这一点,但我 非常 怀疑它会更优雅。您在第一个循环中所拥有的已经是正确的方法,限制了循环变量的范围/生命周期。
我会简单地忽略未使用的变量警告(毕竟这只是编译器表示 可能 有问题的迹象)或使用编译器工具(如果可用)在那个时候简单地关闭警告。
这可能通过某种
#pragma
来实现,具体取决于您的环境,或者某些实现允许您执行以下操作:我已经看到
void
技巧用于函数体中未使用的参数。