Error for loop initial declaration used outside c99 mode

I'm trying to solve the 3n+1 problem and I have a for loop that looks like this: for(int i = low; i highes...

I’m trying to solve the 3n+1 problem and I have a for loop that looks like this:

for(int i = low; i <= high; ++i)
        {
                res = runalg(i);
                if (res > highestres)
                {
                        highestres = res;
                }

        }

Unfortunately I’m getting this error when I try to compile with GCC:

3np1.c:15: error: ‘for’ loop initial
declaration used outside C99 mode

I don’t know what C99 mode is. Any ideas?

Sina's user avatar

Sina

6077 silver badges22 bronze badges

asked Aug 24, 2008 at 6:30

The.Anti.9's user avatar

The.Anti.9The.Anti.9

42.6k47 gold badges122 silver badges161 bronze badges

I’d try to declare i outside of the loop!

Good luck on solving 3n+1 :-)

Here’s an example:

#include <stdio.h>

int main() {

   int i;

   /* for loop execution */
   for (i = 10; i < 20; i++) {
       printf("i: %dn", i);
   }   

   return 0;
}

Read more on for loops in C here.

dhilt's user avatar

dhilt

17.5k8 gold badges66 silver badges80 bronze badges

answered Aug 24, 2008 at 6:31

OysterD's user avatar

2

There is a compiler switch which enables C99 mode, which amongst other things allows declaration of a variable inside the for loop. To turn it on use the compiler switch -std=c99

Or as @OysterD says, declare the variable outside the loop.

Ivaylo Strandjev's user avatar

answered Aug 24, 2008 at 6:46

JamesSugrue's user avatar

JamesSugrueJamesSugrue

14.8k9 gold badges63 silver badges93 bronze badges

2

To switch to C99 mode in CodeBlocks, follow the next steps:

Click Project/Build options, then in tab Compiler Settings choose subtab Other options, and place -std=c99 in the text area, and click Ok.

This will turn C99 mode on for your Compiler.

I hope this will help someone!

answered Dec 1, 2014 at 9:57

akelec's user avatar

akelecakelec

3,6853 gold badges42 silver badges39 bronze badges

3

I’ve gotten this error too.

for (int i=0;i<10;i++) { ..

is not valid in the C89/C90 standard. As OysterD says, you need to do:

int i;
for (i=0;i<10;i++) { ..

Your original code is allowed in C99 and later standards of the C language.

answered Aug 24, 2008 at 6:50

Blorgbeard's user avatar

BlorgbeardBlorgbeard

99.7k48 gold badges226 silver badges270 bronze badges

6

@Blorgbeard:

New Features in C99

  • inline functions
  • variable declaration no longer restricted to file scope or the start of a compound statement
  • several new data types, including long long int, optional extended integer types, an explicit boolean data type, and a complex type to represent complex numbers
  • variable-length arrays
  • support for one-line comments beginning with //, as in BCPL or C++
  • new library functions, such as snprintf
  • new header files, such as stdbool.h and inttypes.h
  • type-generic math functions (tgmath.h)
  • improved support for IEEE floating point
  • designated initializers
  • compound literals
  • support for variadic macros (macros of variable arity)
  • restrict qualification to allow more aggressive code optimization

http://en.wikipedia.org/wiki/C99

A Tour of C99

Community's user avatar

answered Aug 25, 2008 at 11:41

Imran's user avatar

ImranImran

85.2k23 gold badges97 silver badges130 bronze badges

if you compile in C change

for (int i=0;i<10;i++) { ..

to

int i;
for (i=0;i<10;i++) { ..

You can also compile with the C99 switch set. Put -std=c99 in the compilation line:

gcc -std=c99 foo.c -o foo

REF: http://cplusplus.syntaxerrors.info/index.php?title=’for’_loop_initial_declaration_used_outside_C99_mode

answered Apr 8, 2013 at 5:25

Roberto Cuadros's user avatar

For anyone attempting to compile code from an external source that uses an automated build utility such as Make, to avoid having to track down the explicit gcc compilation calls you can set an environment variable. Enter on command prompt or put in .bashrc (or .bash_profile on Mac):

export CFLAGS="-std=c99"

Note that a similar solution applies if you run into a similar scenario with C++ compilation that requires C++ 11, you can use:

export CXXFLAGS="-std=c++11"

answered Jun 27, 2018 at 15:37

Mink's user avatar

MinkMink

8072 gold badges10 silver badges24 bronze badges

0

Jihene Stambouli answered OP question most directly…
Question was;
why does

for(int i = low; i <= high; ++i)
{
    res = runalg(i);
    if (res > highestres)
    {
        highestres = res;
    }
}

produce the error;

3np1.c:15: error: 'for' loop initial declaration used outside C99 mode

for which the answer is

for(int i = low...

should be

int i;
for (i=low...

answered Oct 7, 2018 at 6:51

Dark Burrow's user avatar

Enable C99 mode in Code::Blocks 16.01

  • Go to Settings-> Compiler…
  • In Compiler Flags section of Compiler settings tab, select checkbox ‘Have gcc follow the 1999 ISO C language standard [-std=c99]

answered Jul 29, 2019 at 10:57

Jobayer Ahmmed's user avatar

Jobayer AhmmedJobayer Ahmmed

1,8263 gold badges15 silver badges20 bronze badges

I had the same problem and it works you just have to declare the i outside of the loop:

int i;

for(i = low; i <= high; ++i)

{
        res = runalg(i);
        if (res > highestres)
        {
                highestres = res;
        }

}

James's user avatar

James

4,6155 gold badges36 silver badges48 bronze badges

answered Sep 12, 2013 at 22:57

Jihene Stambouli's user avatar

For Qt-creator: just add next lines to *.pro file…

QMAKE_CFLAGS_DEBUG = 
    -std=gnu99

QMAKE_CFLAGS_RELEASE = 
    -std=gnu99

answered May 29, 2013 at 14:27

demiurg_spb's user avatar

Вопрос:

Я пытаюсь решить проблему 3n + 1, и у меня есть цикл for, который выглядит следующим образом:

for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}

}

К сожалению, я получаю эту ошибку, когда пытаюсь скомпилировать GCC:

3np1.c: 15: ошибка: “для” начального цикла декларация, используемая вне режима C99

Я не знаю, что такое режим C99. Любые идеи?

Лучший ответ:

Я попытался бы объявить i вне цикла!

Удачи в решении 3n + 1: -)

Вот пример:

#include <stdio.h>

int main() {

   int i;

   /* for loop execution */
   for (i = 10; i < 20; i++) {
       printf("i: %dn", i);
   }   

   return 0;
}

Подробнее о циклах в C здесь.

Ответ №1

Существует компилятор, который позволяет режим C99, который, среди прочего, позволяет объявлять переменную внутри цикла for. Чтобы включить его, используйте переключатель компилятора -std=c99

Или, как говорит @OysterD, объявите переменную вне цикла.

Ответ №2

Чтобы перейти в режим C99 в CodeBlocks, выполните следующие шаги:

Нажмите Параметры проекта/сборки, затем в закладке Параметры компилятора выберите subtab Другие параметры и поместите -std=c99 в текстовую область, и нажмите ОК.

Это приведет к включению режима C99 для вашего компилятора.

Я надеюсь, что это поможет кому-то!

Ответ №3

Я тоже получил эту ошибку.

for (int i=0;i<10;i++) { ..

недействителен в стандарте C89/C90. Как говорит OysterD, вам нужно сделать:

int i;
for (i=0;i<10;i++) { ..

Ваш исходный код разрешен в C99 и более поздних версиях языка C.

Ответ №4

@Blorgbeard:

Новые функции на C99

  • встроенные функции
  • Объявление переменной больше не ограничивается областью файлов или началом составного оператора
  • несколько новых типов данных, включая long long int, необязательные расширенные целочисленные типы, явный тип данных булева и сложный тип для представления комплексных чисел
  • массивы переменной длины
  • поддержка однострочных комментариев, начинающихся с //, как в BCPL или С++
  • новые функции библиотеки, такие как snprintf
  • новые файлы заголовков, такие как stdbool.h и inttypes.h
  • Тип-общие математические функции (tgmath.h)
  • улучшенная поддержка плавающей точки IEEE
  • назначенные инициализаторы
  • составные литералы
  • поддержка переменных массивов (макросов переменной arity)
  • ограничить квалификацию, чтобы обеспечить более агрессивную оптимизацию кода.

http://en.wikipedia.org/wiki/C99

Прогулка по C99

Ответ №5

если вы компилируете в C изменения

for (int i=0;i<10;i++) { ..

в

int i;
for (i=0;i<10;i++) { ..

Вы также можете скомпилировать с помощью набора переключателей C99. Поместите -std = c99 в строку компиляции:

gcc -std=c99 foo.c -o foo

REF: http://cplusplus.syntaxerrors.info/index.php?title=‘for’_loop_initial_declaration_used_outside_C99_mode

Ответ №6

Для любого, кто пытается скомпилировать код из внешнего источника, который использует утилиту автоматической сборки, такую как Make, чтобы избежать необходимости отслеживать явные вызовы компиляции gcc, вы можете установить переменную окружения. Введите в командной строке или введите .bashrc (или .bash_profile на Mac):

export CFLAGS="-std=c99"

Обратите внимание, что подобное решение применимо, если вы столкнетесь с похожим сценарием с компиляцией C++, для которой требуется C++ 11, вы можете использовать:

export CXXFLAGS="-std=c++11"

Ответ №7

У меня была такая же проблема, и вам нужно просто объявить i вне цикла:

int i;

for(i = low; i <= high; ++i)

{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}

}

Ответ №8

Jihene Stambouli ответил на вопрос OP наиболее прямо…
Вопрос был;
почему

for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}

выдает ошибку;

3np1.c:15: error: 'for' loop initial declaration used outside C99 mode

для которого ответ

for(int i = low...

должно быть

int i;
for (i=low...

Ответ №9

Включить режим C99 в Code :: Blocks 16.01

  • Перейдите в Настройки -> Компилятор…
  • В разделе Флаги компилятора вкладки настроек компилятора установите флажок “Пусть gcc будет соответствовать языковому стандарту ISO C 1999 года [-std = c99]

Ответ №10

Для Qt-creator: просто добавьте следующие строки в файл *.pro…

QMAKE_CFLAGS_DEBUG = 
-std=gnu99

QMAKE_CFLAGS_RELEASE = 
-std=gnu99

Ответ №11

Просто скомпилируйте в режиме С++. Вам не нужно использовать классы для использования С++. Я в основном использую С++ как “лучше C”:)

Я почти никогда не использую классы и никогда не использую метод override.

sotoges

0 / 0 / 0

Регистрация: 19.10.2017

Сообщений: 10

1

15.12.2017, 01:14. Показов 16751. Ответов 4

Метки нет (Все метки)


Возникшие проблемы с кодом:

Кликните здесь для просмотра всего текста

main.c||In function ‘print’:|
main.c|5|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|5|note: use option -std=c99 or -std=gnu99 to compile your code|
main.c|7|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|17|error: redefinition of ‘i’|
main.c|5|note: previous definition of ‘i’ was here|
main.c|17|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c||In function ‘clear’:|
main.c|23|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c||In function ‘main’:|
main.c|42|error: ‘for’ loop initial declarations are only allowed in C99 mode|
||=== Build finished: 6 errors, 0 warnings (0 minutes, 0 seconds) ===|

Код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <string.h>
void print(char word[], int length)
{
for(int i = 0; i < length; i++)
{
for(int k = length-1; k > i; k--)
{
if(word[k-1] > word[k])
{
char temp = word[k];
word[k] = word[k-1];
word[k-1] = temp;
}
}
}
for(int i = 0; i < length; i++)
printf("%c", word[i]);
}
void clear(char word[])
{
int size = strlen(word);
for(int i = 0; i <= size; i++)
{
word[i] = '';
}
}
int main ()
{
char text [1024], word[20];
puts("Введите текст");
scanf("%s", text);
int end = strlen(text);
int end_index = 0;
int index = 0;
int length = 1;
do
{
clear(word);
int k = 0;
end_index = index + length;
for(int i = index; i < end_index; i++)
{
word[k] = text[i];
k++;
}
index = end_index;
print(word, length);
printf("n");
length++;
} while((end_index + length) <= end);
return 0;
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



sotoges

0 / 0 / 0

Регистрация: 19.10.2017

Сообщений: 10

15.12.2017, 01:32

 [ТС]

2

Возникшие проблемы с кодом:

Кликните здесь для просмотра всего текста

main.c||In function ‘main’:|
main.c|9|error: unknown type name ‘foat’|
main.c|19|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|19|note: use option -std=c99 or -std=gnu99 to compile your code|
main.c|23|warning: format ‘%f’ expects argument of type ‘float *’, but argument 3 has type ‘int *’ [-Wformat]|
main.c|28|error: redefinition of ‘i’|
main.c|19|note: previous definition of ‘i’ was here|
main.c|28|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|33|warning: format ‘%f’ expects argument of type ‘double’, but argument 3 has type ‘int’ [-Wformat]|
main.c|38|error: redefinition of ‘i’|
main.c|28|note: previous definition of ‘i’ was here|
main.c|38|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|46|error: unknown type name ‘foat’|
main.c|47|warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘int *’ [-Wformat]|
main.c|48|error: redefinition of ‘i’|
main.c|38|note: previous definition of ‘i’ was here|
main.c|48|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|51|warning: format ‘%f’ expects argument of type ‘double’, but argument 3 has type ‘int’ [-Wformat]|
main.c|53|error: redefinition of ‘i’|
main.c|48|note: previous definition of ‘i’ was here|
main.c|53|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|56|error: ‘for’ loop initial declarations are only allowed in C99 mode|
||=== Build finished: 12 errors, 4 warnings (0 minutes, 0 seconds) ===|

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main()
{
struct toy
{
char name[1024];
foat price;
int lower_limit;
int upper_limit;
};
int amount;
setlocale(LC_ALL,"RUS");
puts("Введите количество игрушек");
scanf("%d", &amount);
 
struct toy toys[amount];
for(int i = 0; i < amount; i++)
{
printf("Введите название, цену и возрастной диапазон для %d игрушкиn", i+1);
scanf("%s%f%d%d", toys[i].name, &toys[i].price,
&toys[i].lower_limit, &toys[i].upper_limit);
}
puts("Ввод информации завершён");
//Поиск самое дорогой игрушки
int max_price = 0;;
for(register int i = 0; i < amount; i++)
{
if (toys[max_price].price < toys[i].price)
max_price = i;
}
printf("Самая дорогоая игрушка - %s стоимостью %.2fn",toys[max_price]. name, toys[max_price].price);
//Подбор игрушек по возрасту
puts("Введите возраст Вашего ребёнка");
int age;
scanf("%d", &age);
for (register int i = 0; i < amount; i++)
{
if ((toys[i].lower_limit < age) && (age < toys[i].upper_limit))
{
printf("Вашему ребёнку подойдёт %sn", toys[i].name);
}
}
puts("Введите ваш бюджет");
foat budget, total_price = 0;
scanf("%f", &budget);
for (register int i = 0; i < amount; i++)
{
if (toys[i].price <= budget)
printf("Вы можете купить %s на ваши деньги. У вас как раз останется %.2f на чашечку кофеn", toys[i].name, budget - toys[i].price);
}
for (register int i = 0; i < amount; i++)
{
total_price = toys[i].price;
for (register int k = 0; k < amount; k++)
{
total_price += toys[k].price;
if (total_price <= budget)
{
printf("Вы можете купить на ваши деньги комплект из %s и %sn", toys[i].name, toys[k].name);
}
}
}
return 0;
}



0



3532 / 2196 / 401

Регистрация: 09.09.2017

Сообщений: 9,050

15.12.2017, 08:48

3

Цитата
Сообщение от sotoges
Посмотреть сообщение

main.c|9|error: unknown type name ‘foat’|

Возможно, имелся в виду float?

Цитата
Сообщение от sotoges
Посмотреть сообщение

main.c|19|error: ‘for’ loop initial declarations are only allowed in C99 mode|

Либо включите совместимость с С99 или выше (в gcc это -std=c99), собственно, в следующей строке вам это и написали, либо вынесите объявление переменной в начало функции.
Большая часть остальных сообщений — следствие этих двух ошибок



0



14 / 14 / 0

Регистрация: 01.12.2017

Сообщений: 577

15.12.2017, 12:51

4

int i объяви в начале функции. а в for (i=0;i<=size; i++)



0



LaFayette

48 / 48 / 57

Регистрация: 25.11.2015

Сообщений: 140

15.12.2017, 13:11

5

Цитата
Сообщение от sotoges
Посмотреть сообщение

main.c||In function ‘print’:|
main.c|5|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|5|note: use option -std=c99 or -std=gnu99 to compile your code|

Инициализация в цикле for доступна начиная со стандарта С99. Для использования стандарта во время компиляции нужно добавить опцию -std=c99.

Например

Bash
1
gcc hello.c -std=c99 -o hello.exe



0



Я пытаюсь решить проблему 3n+1 , и у меня есть цикл for , который выглядит следующим образом:

for(int i = low; i <= high; ++i)
        {
                res = runalg(i);
                if (res > highestres)
                {
                        highestres = res;
                }

        }

К сожалению, я получаю эту ошибку, когда пытаюсь скомпилировать с GCC:

3np1.c:15: ошибка: ‘for’ начальный цикл
объявление, используемое вне режима C99

Я не знаю, что такое режим C99. Есть какие-нибудь идеи?


dump


19:42, 25th August, 2020

Я бы попытался объявить i вне цикла!

Удачи в решении задачи 3n+1 :-)

Вот вам пример:

#include <stdio.h>

int main() {

   int i;

   /* for loop execution */
   for (i = 10; i < 20; i++) {
       printf("i: %dn", i);
   }   

   return 0;
}

Подробнее о циклах в C читайте здесь .


ЯЯ__4


03:55, 6th August, 2020

Существует переключатель компилятора, который включает режим C99, который среди прочего позволяет объявлять переменную внутри цикла for. Чтобы включить его, используйте переключатель компилятора -std=c99

Или, как говорит @OysterD, объявите переменную вне цикла.


PROGA


21:06, 1st October, 2020

Чтобы перейти в режим C99 в CodeBlocks, выполните следующие действия:

Щелкните параметры проекта / сборки , затем на вкладке Параметры компилятора выберите вложенную вкладку другие параметры, поместите -std=c99 в текстовую область и нажмите кнопку ОК .

Это позволит включить режим C99 для вашего компилятора.

Надеюсь, это кому-то поможет!


P_S_S


18:14, 23rd August, 2020

Я тоже получил эту ошибку.

for (int i=0;i<10;i++) { ..

не действует в стандарте C89/C90. Как говорит OysterD, вам нужно сделать:

int i;
for (i=0;i<10;i++) { ..

Ваш исходный код разрешен в стандартах C99 и более поздних стандартах языка C.


DINO


17:08, 13th August, 2020

@Blorgbeard :

Новые возможности в C99

  • встроенная функция
  • объявление переменной больше не ограничивается областью действия файла или началом составного оператора
  • несколько новых типов данных, включая long long int, необязательные расширенные целочисленные типы, явный логический тип данных и сложный тип для представления комплексных чисел
  • массивы переменной длины
  • поддержка однострочных комментариев, начинающихся с//, как в BCPL или C++
  • новые библиотечные функции, такие как snprintf
  • новые заголовочные файлы, такие как stdbool.h и inttypes.h
  • тип-общие математические функции (tgmath.h)
  • улучшена поддержка IEEE с плавающей точкой
  • назначенные инициализаторы
  • составные литералы
  • поддержка variadic macros (macros переменной арности)
  • ограничьте квалификацию, чтобы разрешить более агрессивную оптимизацию кода

http://en.wikipedia.org/wiki/C99

Экскурсия по С99


LAST


03:26, 2nd August, 2020

если вы компилируете в C change

for (int i=0;i<10;i++) { ..

к

int i;
for (i=0;i<10;i++) { ..

Вы также можете компилировать с помощью набора переключателей C99. Put-std=c99 в строке компиляции:

gcc -std=c99 foo.c -o foo

REF: http://cplusplus.syntaxerrors.info/index.php?название= » за » _loop_initial_declaration_used_outside_C99_mode


fo_I_K


03:52, 2nd August, 2020

У меня была та же проблема, и она работает, вам просто нужно объявить i вне цикла:

int i;

for(i = low; i <= high; ++i)

{
        res = runalg(i);
        if (res > highestres)
        {
                highestres = res;
        }

}


LAST


05:08, 29th August, 2020

Для тех, кто пытается скомпилировать код из внешнего источника, использующего автоматизированную утилиту сборки, такую как Make, чтобы избежать необходимости отслеживать явные вызовы компиляции gcc, можно задать переменную среды. Введите в командной строке или введите .bashrc (или .bash_profile на Mac):

export CFLAGS="-std=c99"

Обратите внимание, что аналогичное решение применяется при выполнении аналогичного сценария с компиляцией C++, которая требует C++ 11, можно использовать:

export CXXFLAGS="-std=c++11"


ITSME


17:56, 20th August, 2020

Для Qt-creator: просто добавьте следующие строки в файл*. pro…

QMAKE_CFLAGS_DEBUG = 
    -std=gnu99

QMAKE_CFLAGS_RELEASE = 
    -std=gnu99


nYU


03:03, 2nd August, 2020

Джихен Стамбули ответила на OP вопрос наиболее прямо…
Вопрос был такой;
почему

for(int i = low; i <= high; ++i)
{
    res = runalg(i);
    if (res > highestres)
    {
        highestres = res;
    }
}

произвести ошибку;

3np1.c:15: error: 'for' loop initial declaration used outside C99 mode

за что и будет дан ответ

for(int i = low...

должно быть

int i;
for (i=low...

Я пытаюсь решить проблема 3n + 1 и у меня есть for цикл, который выглядит так:

for(int i = low; i <= high; ++i)
        {
                res = runalg(i);
                if (res > highestres)
                {
                        highestres = res;
                }

        }

К сожалению, я получаю эту ошибку, когда пытаюсь скомпилировать с GCC:

3np1.c: 15: error: начальное объявление цикла for, используемое вне режима C99

Я не знаю, что такое режим C99. Любые идеи?

11 ответы

Я бы попытался объявить i вне цикла!

Удачи в решении 3n + 1 :-)

Вот пример:

#include <stdio.h>

int main() {

   int i;

   /* for loop execution */
   for (i = 10; i < 20; i++) {
       printf("i: %dn", i);
   }   

   return 0;
}

Подробнее о циклах в C здесь.

Создан 08 ноя.

Есть переключатель компилятора, который позволяет C99 режим, который, помимо прочего, позволяет объявлять переменную внутри цикла for. Чтобы включить его, используйте переключатель компилятора -std=c99

Или, как говорит @OysterD, объявите переменную вне цикла.

Создан 15 ноя.

Чтобы переключиться на C99 режима в Кодовые блоки, выполните следующие действия:

Нажмите Варианты проекта / сборки, затем во вкладке Настройки компилятора выбрать вложенную вкладку Другие варианты, и место -std=c99 в текстовой области и щелкните Ok.

Это превратится C99 включен для вашего компилятора.

Надеюсь, это кому-то поможет!

ответ дан 02 апр.

Я тоже получил эту ошибку.

for (int i=0;i<10;i++) { ..

не действует в стандарте C89 / C90. Как говорит OysterD, вам нужно сделать:

int i;
for (i=0;i<10;i++) { ..

Ваш исходный код разрешен в C99 и более поздних стандартах языка C.

Создан 13 сен.

@Блоргберд:

Новые возможности C99

  • встроенные функции
  • объявление переменной больше не ограничивается областью файла или началом составного оператора
  • несколько новых типов данных, включая long long int, необязательные расширенные целочисленные типы, явный логический тип данных и сложный тип для представления комплексных чисел
  • массивы переменной длины
  • поддержка однострочных комментариев, начинающихся с //, как в BCPL или C ++
  • новые библиотечные функции, такие как snprintf
  • новые файлы заголовков, такие как stdbool.h и inttypes.h
  • типовые математические функции (tgmath.h)
  • улучшенная поддержка плавающей запятой IEEE
  • назначенные инициализаторы
  • составные литералы
  • поддержка вариативных макросов (макросов переменной арности)
  • ограничить квалификацию, чтобы разрешить более агрессивную оптимизацию кода

http://en.wikipedia.org/wiki/C99

Экскурсия по C99

ответ дан 23 мая ’17, 13:05

если вы компилируете в C, измените

for (int i=0;i<10;i++) { ..

в

int i;
for (i=0;i<10;i++) { ..

Вы также можете скомпилировать с набором переключателей C99. Поместите -std = c99 в строку компиляции:

gcc -std=c99 foo.c -o foo

Рекомендации: http://cplusplus.syntaxerrors.info/index.php?title=’for’_loop_initial_declaration_used_outside_C99_mode

ответ дан 08 апр.

Для всех, кто пытается скомпилировать код из внешнего источника, который использует служебную программу автоматической сборки, такую ​​как MAKE, чтобы избежать необходимости отслеживать явные вызовы компиляции gcc, вы можете установить переменную среды. Введите в командной строке или введите .bashrc (или .bash_profile на Mac):

export CFLAGS="-std=c99"

Обратите внимание, что аналогичное решение применимо, если вы столкнетесь с аналогичным сценарием с компиляцией C ++, для которой требуется C ++ 11, вы можете использовать:

export CXXFLAGS="-std=c++11"

Создан 27 июн.

Джихене Стамбули ответил на вопрос ОП наиболее прямо … Вопрос был; Почему

for(int i = low; i <= high; ++i)
{
    res = runalg(i);
    if (res > highestres)
    {
        highestres = res;
    }
}

произвести ошибку;

3np1.c:15: error: 'for' loop initial declaration used outside C99 mode

на что ответ

for(int i = low...

должно быть

int i;
for (i=low...

ответ дан 07 окт ’18, 07:10

У меня была такая же проблема, и она работает, вам просто нужно объявить i вне цикла:

int i;

for(i = low; i <= high; ++i)

{
        res = runalg(i);
        if (res > highestres)
        {
                highestres = res;
        }

}

Создан 13 сен.

Включить режим C99 в Code :: Blocks 16.01

  • Перейдите в Настройки-> Компилятор …
  • In Флаги компилятора раздел Настройки компилятора вкладка, установите флажок ‘Следуйте стандарту языка C ISO от 1999 г. [-std = c99]

Создан 29 июля ’19, 11:07

Для Qt-creator: просто добавьте следующие строки в файл * .pro …

QMAKE_CFLAGS_DEBUG = 
    -std=gnu99

QMAKE_CFLAGS_RELEASE = 
    -std=gnu99

ответ дан 29 мая ’13, 15:05

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

c
gcc
for-loop

or задайте свой вопрос.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error flow is broken director cannot populate world
  • Error code 291 standoff 2 что значит
  • Error floating point exception ansys
  • Error code 29004 this list name has been used
  • Error flexible array member

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии