Ошибки, баги, вопросы - страница 2641
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть такой советник. Выкидывает ошибку
Если закомментировать continue, будет нормально. Мне одному кажется это странным?
Есть такой советник. Выкидывает ошибку
Если закомментировать continue, будет нормально. Мне одному кажется это странным?
Если функция объявлена не как void, то обязана возвращать значение:
Из этой функции единственный выход через i==100. Почему он считает, что появление continue приводит к появлению дополнительного выхода из функции?
Единственный или множественный выход - это всё не важно. Важно то, что ВЫ объявили функцию с типом отличным ОТ void - а значит функция ОБЯЗАНА возвращать значение.
Функция и возвращает значение
Это единственный выход из функции. Т.е. единственное место, где она обязана вернуть значение. И компилятор C/C++ со мной согласен. Если всё же в MQL свои стандарты на этот счёт, почему оно нормально собирается, если убрать continue?
Функция и возвращает значение
Это единственный выход из функции. Т.е. единственное место, где она обязана вернуть значение. И компилятор C/C++ со мной согласен. Если всё же в MQL свои стандарты на этот счёт, почему оно нормально собирается, если убрать continue?
Компилятор не знает будет-ли обработан цикл и дойдёт-ли выполнение кода до return; Потому и требует подстраховки.
Компилятор не знает будет-ли обработан цикл и дойдёт-ли выполнение кода до return; Потому и требует подстраховки.
Компилятор C/C++ это прекрасно знает. Компилятор MQL построен на основе одного из компиляторов C/C++, как я понимаю. Но, опять же, даже если логика и своя, почему без continue он знает, а с continue это знание пропадает?
Компилятор C/C++ это прекрасно знает. Компилятор MQL построен на основе одного из компиляторов C/C++, как я понимаю. Но, опять же, даже если логика и своя, почему без continue он знает, а с continue это знание пропадает?
Наверное потому, что только человек с первого взгляда на такой код
не задумываясь может понять что произойдёт. На мой взгляд претензии должны быть к С и С++, а не к MQL. Именно mql защищает от таких случайных косяков.Функция и возвращает значение
Это единственный выход из функции. Т.е. единственное место, где она обязана вернуть значение. И компилятор C/C++ со мной согласен. Если всё же в MQL свои стандарты на этот счёт, почему оно нормально собирается, если убрать continue?
Эта Ваша функция - косяк. Если i==100, то уже следующая проверка на то же i==100 не сработает. И получится бесконечный цикл.