当我在 for 循环中设置变量时,为什么会出现“错误:变量 \'sum_r\' 已设置但未使用 [-Werror,-Wunused-but-set-variable]\”?

发布于 2023-02-14 00:21:22

当我在 for 循环中设置变量 sum_r sum_gsum_b 然后尝试稍后在另一个 for 循环中更改它们的值时,为什么会出现错误 error: variable 'sum_r' set but not used [-Werror,-Wunused-but-set-variable]

这是我当前的代码:

// Blur image
void blur(int height, int width, RGBTRIPLE image[height][width])
{
    RGBTRIPLE new[height][width];

    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            int sum_r = 0;
            int sum_g = 0;
            int sum_b = 0;

            for (int ji = i - 1; ji < 3; ji++)
            {
                for (int jj = j - 1; jj < 3; jj++)
                {
                    int rgb_r = image[ji][jj].rgbtRed;
                    int rgb_g = image[ji][jj].rgbtGreen;
                    int rgb_b = image[ji][jj].rgbtBlue;

                    sum_r += rgb_r;
                    sum_g += rgb_g;
                    sum_b += rgb_b;
                }
            }
        }
    }
    return;
}

我试过使用指针和地址,但我似乎无法弄明白。有人可以解释为什么会这样吗?

查看更多

1楼回答 2023-02-07
  1. void函数中不需要return
  2. 您收到此消息是因为您在循环中设置了这些变量但未使用它们。您的函数可以减少为空操作,并且编译器会警告您忘记对您的值执行某些操作。

    优化编译器会将此功能挽救为:

    void blur(int height, int width, RGBTRIPLE image[height][width])
    {
    }
    

    https://godbolt.org/z/cEeejGKrh

请登录后再发布答案,点击登录