Проблема здесь в том, что я не могу объявлять переменные внутри функции после того, как функция уже содержит в себе некоторые операторы. Объявление в начале работает нормально, но после чего-то выдает ошибку синтаксического анализа. Например:
int main()
{
int b;
b = sisesta();
float st[b];
return 0;
}
Я хотел бы объявить массив st
, размер которого возвращается другой функцией, но она не позволяет мне этого сделать! Говорит "Ошибка синтаксического анализа перед плаванием". Это, кстати, на C, но я думаю, что он идентичен тому, что было бы на других языках с таким же синтаксисом.
Любая помощь приветствуется.
Чувак, в C вы должны объявить все переменные в начале. Вы не можете объявлять между заявлениями
В начале блока для C до ISO / IEC 9899: 1999 (C99)
В стандартах C до C99 вы должны объявить свои локальные переменные в начале функции. Начиная с C99, это больше не требуется.
Поскольку Dev-C++ поставляется с gcc, а последние версии gcc частично поддерживают C99, вы можете попробовать добавить -std=c99
в список аргументов gcc в настройках Dev-C++, чтобы запустить режим C99.
Оказывается, у меня была только старая версия Dev C++, которая не поддерживала новый стандарт, с последней версией операторы работают нормально, в любом случае спасибо за помощь.
Даже в C89 это был просто стилистический выбор - делать все объявления в начале функции - проблема, с которой вы столкнулись в своем коде, заключалась в том, что вы пытались объявить массив в стеке неизвестного размера, а это было недопустимо. до C99. Если бы вы использовали тот же код, но заменили "float st [b]" оператором, в котором "b" было константой, это сработало бы, как "float st [10]"
Вы имеете в виду «В начале охвата».