Не могу понять "предупреждение C4090: '=': разные квалификаторы 'const'" в моей программе c - PullRequest
0 голосов
/ 01 апреля 2019

Я получил сообщение warning C4090: '=': different 'const' qualifiers при компиляции моей программы на Си.

Я видел некоторую информацию здесь , здесь и даже здесь . Но я до сих пор не понимаю, как они связаны с моей проблемой. Для компиляции я использую командную строку Visual C ++ 2015 x64 Native Build Tools. Я знаю, что это из-за использования const в объявлении функции. Но массив не меняется. Так в чем же дело?

Вот мой код:

#include <stdio.h>

int sum_array(const int a[], int n)
{
    int *p, sum;

    sum = 0;
    for (p = a; p < a + n; p++)
        sum += *p;

    return sum;
}

int main(void)
{
    int a[5] = {1, 2, 3, 4, 5};
    printf("%d", sum_array(a, 5));
    return 0;
}

Программа работает хорошо, я просто хочу понять, почему я получаю это предупреждение.

1 Ответ

2 голосов
/ 01 апреля 2019

Я удивлен, что это только предупреждение. В C ++ это было бы совершенно неправильно.

Ваша функция принимает const int*, который вы затем назначаете int*.

Это не const - неправильно.

Полагаю, вы имели в виду const int *p ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...