Я пытаюсь решить проблему 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. Любые идеи?
Есть переключатель компилятора, который включает режим C99 , который, помимо прочего, позволяет объявлять переменную внутри цикла for. Чтобы включить его, используйте переключатель компилятора
-std=c99
Или, как говорит @OysterD, объявите переменную вне цикла.
источник
Чтобы переключиться в режим C99 в CodeBlocks , выполните следующие действия:
Нажмите « Параметры проекта / сборки» , затем на вкладке « Параметры компилятора» выберите вложенную вкладку « Другие параметры» , поместите ее
-std=c99
в текстовую область и нажмите « ОК». .Это превратится C99 режим для вашего компилятора.
Надеюсь, это кому-то поможет!
источник
-std=gnu99
как показано в некоторых ответах выше!Я тоже получил эту ошибку.
не действует в стандарте C89 / C90. Как говорит OysterD, вам нужно сделать:
Ваш исходный код допускается в C99 и более поздних стандартах языка C.
источник
@Blorgbeard :
Новые возможности C99
http://en.wikipedia.org/wiki/C99
Экскурсия по C99
источник
если вы компилируете в C, измените
в
Вы также можете скомпилировать с набором переключателей C99. Поместите -std = c99 в строку компиляции:
ССЫЛКА : http://cplusplus.syntaxerrors.info/index.php?title= 'for'_loop_initial_declaration_used_outside_C99_mode
источник
Для всех, кто пытается скомпилировать код из внешнего источника, который использует утилиту автоматической сборки, такую как Make , чтобы избежать необходимости отслеживать явные вызовы компиляции gcc, вы можете установить переменную среды. Введите в командной строке или введите .bashrc (или .bash_profile на Mac):
Обратите внимание, что аналогичное решение применимо, если вы столкнетесь с аналогичным сценарием с компиляцией C ++, для которой требуется C ++ 11, вы можете использовать:
источник
У меня была такая же проблема, и она работает, вам просто нужно объявить
i
вне цикла:источник
Джихене Стамбули ответил на вопрос ОП наиболее прямо ... Вопрос был; Почему
выдать ошибку;
на что ответ
должно быть
источник
Включить режим C99 в Code :: Blocks 16.01
источник
Для Qt-creator: просто добавьте следующие строки в файл * .pro ...
источник