- Universal MA Cross EA
- Как обновить индикаторы для Build 600+?
- Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором
MT4 билд 610 имеет редактор МетаЭдитор-5 билд 887. В нем после компиляции сообщение: not all control paths return a value, при этом указывает на совершенно здоровые места в скрипте. Вопрос: что означает эта надпись? И как с ней бороться? В хелпе ответа нет. Ни в хелпе от МЭ, ни в хелпе от MQL4.
Вот пример, это самый короткий.
Функция работает абсолютно нормально, и остальные тоже.
Компилятор не может определить, что Ваши 3 ретурна покрывают всё множество возможных возвратов. Компилятор не видит ретурн в конце функции, поэтому и ругается.
Напишите вот так
if(Mode==0) return(...); if(Mode==1) return(....); return(-1);
Вот пример, это самый короткий.
Функция работает абсолютно нормально, и остальные тоже.
Ну, уже сказали... После последнего IF - непонятно, что должна вернуть функция.
Компилятор не может определить, что Ваши 3 ретурна покрывают всё множество возможных возвратов. Компилятор не видит ретурн в конце функции, поэтому и ругается.
Напишите вот так
Значит компилятор дурак. Ничего я там писать не буду.
Спасибо всем за растолковки.
Кстати, нехреново было бы эту фразу компилятора описать в хелпе, тогда и вопросов бы не было. И ваще все стандартные фразы компилятора. А то на голом месте дурацкие вопросы......
Значит компилятор дурак. Ничего я там писать не буду.
Спасибо всем за растолковки.
Ошибаетесь насчет компилятора. У Вас функция по определению double, значит она обязательно должна что-то вернуть. Если не исполняется ни одно из условий - что ей возвращать? Если не хотите, чтобы компилятор ругался, и при этом ничего больше в ф-ции не писать (как Вам правильно посоветовал artmedia70), определите ф-цию, как void ;)
Ошибаетесь насчет компилятора. У Вас функция по определению double, значит она обязательно должна что-то вернуть. Если не исполняется ни одно из условий - что ей возвращать? Если не хотите, чтобы компилятор ругался, и при этом ничего больше в ф-ции не писать (как Вам правильно посоветовал artmedia70), определите ф-цию, как void ;)
тут вы не правы, компилятор слабоват, так как код формально предлагает все варианты, но компилятор этого не понимает..
это недоIDE.. в java IDE таких проблем нет, так даже иногда с избытком мозг развит..
если бы компилятор был умный, то предложил бы убрать последний if (Mode == 1), т.к. он вообще лишний..
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования