Ошибка: начальные объявления цикла for разрешены только в режиме c99

У меня есть эта проблема, когда я могу скомпилировать только с помощью gcc -std = c99, но, тем не менее, мне нужно, чтобы она скомпилировалась с использованием c89 aka gcc -Wall. Это часть моего кода, где я использую цикл for. Пожалуйста, подумайте, можете ли вы помочь мне заранее, спасибо.

#include<stdio.h>
int main()
{
    int arr[100],i=0,ch;
    int n = 1, sum = 0;
    printf("Check out our selection! \n");
    printf("Airhead - 25 cents\n");
    printf("Fun Dip - 40 cents\n");
    printf("Gummi Bears - 20 cents\n");
    while (n != 0)
    {
        printf("Insert Coins: ");
        scanf("%d",&n);
        arr[i++] = n;
    }

    for(int j=0;j<i;j++)
    {   sum = sum + arr[j];
    }
......

person Ryan    schedule 27.05.2017    source источник
comment
Определить переменную j в начале функции вместе с другими переменными?   -  person Some programmer dude    schedule 27.05.2017
comment
мне нужно его скомпилировать с помощью c89 aka gcc -Wall ‹- это разные мысли. зачем вам это?   -  person    schedule 27.05.2017
comment
Возможный дубликат Как исправить ошибку GCC в режиме C99 при начальном объявлении цикла?   -  person Hiko Haieto    schedule 27.05.2017
comment
gcc без языковой опции компилируется для gnu11 (который не является ни c89, ни c99, ни c11). См. руководство по gcc. Для c89 нужно gcc -std=c89 -pedantic ...   -  person pmg    schedule 27.05.2017


Ответы (1)


Это не правильно:

for (int j = 0; j < i; j++) {
    sum = sum + arr[j];
}

Вы должны инициализировать j в начале функции.

 int main() {
    int j;
    ...
    for (j = 0; j < i; j++) {
        sum = sum + arr[j];
    }
}
person tilz0R    schedule 27.05.2017