MT4 билд 610 имеет редактор МетаЭдитор-5 билд 887. В нем после компиляции сообщение:

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

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

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

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

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

 

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

 

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

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

if(Mode==0) return(...);
if(Mode==1) return(....);
return(-1);
 
incred:

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

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

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

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

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

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


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

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

 

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

 
incred:


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

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


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

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


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

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

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

Причина обращения: