ошибка: начальные объявления цикла «for» разрешены только в режиме C99 [дубликаты]

    

На этот вопрос уже есть ответ здесь:

    

Я получаю приведенную ниже ошибку. Что такое режим std = c99 /std = gnu99?

исходный код:

#include <stdio.h>

void funct(int[5]);

int main() 
{        
    int Arr[5]={1,2,3,4,5};
    funct(Arr);
    for(int j=0;j<5;j++)
    printf("%d",Arr[j]);
}

void funct(int p[5]) {
        int i,j;
        for(i=6,j=0;i<11;i++,j++)
            p[j]=i;
}


Error Message:
hello.c: In function ‘main’:
hello.c:11:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
for(int j=0;j<5;j++)
      ^
hello.c:11:2: note: use option -std=c99 or -std=gnu99 to compile your code`
12 голосов | спросил Rajit s rajan 30 MaramMon, 30 Mar 2015 07:02:28 +03002015-03-30T07:02:28+03:0007 2015, 07:02:28

4 ответа


0

Это происходит потому, что объявление переменных внутри цикла for было недействительным C до C99 (что является стандартом C, опубликованным в 1999 году), вы можете либо объявить свой счетчик вне for, как указано другими, либо использовать -std = флаг c99, чтобы явно указать компилятору, что вы используете этот стандарт, и он должен интерпретировать его как таковой.

ответил Alejandro Díaz 30 MaramMon, 30 Mar 2015 07:11:02 +03002015-03-30T07:11:02+03:0007 2015, 07:11:02
0

Вам нужно объявить переменную j, которая используется для первого цикла for перед циклом.

    int j;
    for(j=0;j<5;j++)
    printf("%d",Arr[j]);
ответил MySequel 30 MaramMon, 30 Mar 2015 07:06:07 +03002015-03-30T07:06:07+03:0007 2015, 07:06:07
0

Самое простое решение от "Профессор, доктор Майкл Хелбиг". он переключит ваш режим на c99, так что вам не нужно каждый раз добавлять флаг в make-файл http: //www.bigdev .de /2014/10 /затмение-сс-для-петли-initial.html? showComment = 1447925473870 # c6845437481920903532

Решение: используйте опцию -std = c99 для вашего компилятора! Перейти к: Project> Свойства> C /C ++ Buils> Настройки> Настройки инструмента> Компилятор GCC C> Диалект> Стандарт языка: выберите «ISO C99»

ответил Kashif 19 42015vEurope/Moscow11bEurope/MoscowThu, 19 Nov 2015 12:36:16 +0300 2015, 12:36:16
0

Это будет рабочий код

#include <stdio.h>

    void funct(int[5]);
    int main()
    {
         int Arr[5]={1,2,3,4,5};
         int j = 0;

        funct(Arr);

        for(j=0;j<5;j++)
        printf("%d",Arr[j]);
    }
    void funct(int p[5]){
        int i,j;
        for(i=6,j=0;i<11;i++,j++)
            p[j]=i;
    }
ответил Yasir Majeed 30 MaramMon, 30 Mar 2015 07:46:14 +03002015-03-30T07:46:14+03:0007 2015, 07:46:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132