gpt4 book ai didi

c++ - for 循环计数器给出未使用变量警告

转载 作者:行者123 更新时间:2023-12-02 16:01:16 26 4
gpt4 key购买 nike

我的程序有一个带有 for 循环的迭代算法,我将其编写为

for ( auto i: std::views::iota( 0u, max_iter ) ) { ... }

我真的很喜欢它可以这样写,即使必要的头文件很大。当我编译它时,虽然我收到一条警告,指出 i 是一个未使用的变量。

当我以老式方式编写 for 循环时

for ( unsigned i=0; i < max_iter; i++ ) { ... }

那么就没有警告了。

我用一个最小的程序 for-loop.cpp 测试了这个:

#include<ranges>
#include<numeric>
#include<iostream>

int main() {

char str[13] = "this is good";

for (auto i : std::views::iota(0u, 2u)) {
std::cout << str << "\n";
}

for (unsigned it=0; it<2; it++ ) {
std::cout << str << "\n";
}

return 0;
}

果然,使用 g++ -Wall --std=c++20 -o for-loop for-loop.cpp 编译它会为第一个循环而不是第二个循环发出警告。

我是不是漏掉了什么?我更喜欢第一种表示法——而且我知道我可以通过 -Wno-unused-variables 停止警告;我想要那些警告,只是我真的在使用 for 循环计数器。

最佳答案

i 确实从未使用过。

您可以添加属性 [[maybe_unused]] (C++17) 忽略该警告:

for ([[maybe_unused]]auto i : std::views::iota(0u, 2u)) {
std::cout << str << "\n";
}

关于c++ - for 循环计数器给出未使用变量警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70622617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com