Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Увеличивай свой рейтинг. Выполняй заказы в сервисе Фриланс!
incred
257
incred 2014.03.24 20:45 
MT4 билд 610 имеет редактор МетаЭдитор-5 билд 887. В нем после компиляции сообщение: not all control paths return a value, при этом указывает на совершенно здоровые места в скрипте. Вопрос: что означает эта надпись? И как с ней бороться? В хелпе ответа нет. Ни в хелпе от МЭ, ни в хелпе от MQL4.

Artyom Trishkin
69170
Artyom Trishkin 2014.03.24 22:00  
incred:
MT4 билд 610 имеет редактор МетаЭдитор-5 билд 887. В нем после компиляции сообщение: not all control paths return a value, при этом указывает на совершенно здоровые места в скрипте. Вопрос: что означает эта надпись? И как с ней бороться? В хелпе ответа нет. Ни в хелпе от МЭ, ни в хелпе от MQL4.

Это значит, что в какой-то вашей функции (а может и не в одной) есть вариант выхода из неё без возврата значения. Лучше бы показали "проблемное место" кода.
incred
257
incred 2014.03.25 10:25  

Вот пример, это самый короткий.

Функция работает абсолютно нормально, и остальные тоже.

incred
257
incred 2014.03.25 10:27  

Чот я пытался картинку прилепить, и не понял, похоже не получилось. Вот здесь:

Slawa
Модератор
6682
Slawa 2014.03.25 10:57  

Компилятор не может определить, что Ваши 3 ретурна покрывают всё множество возможных возвратов. Компилятор не видит ретурн в конце функции, поэтому и ругается.

Напишите вот так

if(Mode==0) return(...);
if(Mode==1) return(....);
return(-1);
George Merts
3325
George Merts 2014.03.25 13:31  
incred:

Вот пример, это самый короткий.

Функция работает абсолютно нормально, и остальные тоже.

Ну, уже сказали... После последнего IF - непонятно, что должна вернуть функция.

incred
257
incred 2014.03.25 14:16  
А таких функций, которые ничего не возвращают, у меня нет. И те, на которые указывают сообщения, ничем не отличаются от остальных. Все работают идеально.
incred
257
incred 2014.03.25 14:18  
stringo:

Компилятор не может определить, что Ваши 3 ретурна покрывают всё множество возможных возвратов. Компилятор не видит ретурн в конце функции, поэтому и ругается.

Напишите вот так


Значит компилятор дурак. Ничего я там писать не буду.

Спасибо всем за растолковки.

incred
257
incred 2014.03.25 14:21  

Кстати, нехреново было бы эту фразу компилятора описать в хелпе, тогда и вопросов бы не было. И ваще все стандартные фразы компилятора. А то на голом месте дурацкие вопросы......

George
505
George 2014.03.25 15:02  
incred:


Значит компилятор дурак. Ничего я там писать не буду.

Спасибо всем за растолковки.


Ошибаетесь насчет компилятора. У Вас функция по определению double, значит она обязательно должна что-то вернуть. Если не исполняется ни одно из условий - что ей возвращать? Если не хотите, чтобы компилятор ругался, и при этом ничего больше в ф-ции не писать (как Вам правильно посоветовал artmedia70), определите ф-цию, как void ;)
keekkenen
1128
keekkenen 2014.03.25 22:03  
PPC:

Ошибаетесь насчет компилятора. У Вас функция по определению double, значит она обязательно должна что-то вернуть. Если не исполняется ни одно из условий - что ей возвращать? Если не хотите, чтобы компилятор ругался, и при этом ничего больше в ф-ции не писать (как Вам правильно посоветовал artmedia70), определите ф-цию, как void ;)


тут вы не правы, компилятор слабоват, так как код формально предлагает все варианты, но компилятор этого не понимает..

это недоIDE.. в java IDE таких проблем нет, так даже иногда с избытком мозг развит..

если бы компилятор был умный, то предложил бы убрать последний if (Mode == 1), т.к. он вообще лишний..

/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий