Ошибки, баги, вопросы - страница 1654

 
Alexey Viktorov:
Хочешь сказать при закрытых графиках не скрывается символ?
Alexey Viktorov
:

Хочешь сказать при закрытых графиках не скрывается символ?

Да. Несколько раз уже сталкивался с такой бякой.

 
Vitalii Ananev:

Все равно сообщение об ошибке правильное.

Первоначально не придал этому значения, но столкнувшись с этим повторно - появились аргументы, что оно не правильное. И вот почему: далее условный код

int f()
{
        while ( true )
        {
//много строк c return, continue, без break
                return 0;
//много строк c return, continue, без break
                return 1;
//много строк c return, continue, без break
        }
        return Random(); //(*)написано по требованию MQL компилятора //строка 61
}

Рассуждения что ставить после while(true) {}  сводятся к следующему: "Мы же там все-равно никогда не будем... return нужен только формально - чтобы компилятор сказал OK... значит - поставим там случайное значение - return Random();"

Спустя время вносим в код изменения и появляется необходимость поставить break внутри while
В этом случае компилятор скажет: "OK: Да все нормально. Там же после while(true) {} есть код - значит случай break был предусмотрен ранее и наверняка среди этого множества строк уже есть такой же break. Все значения возврата уже были продуманы еще тогда - не парься!"
И в итоге получим случайное значение. 

А если бы первоначально не было строки (*), то компилятор скажет: "Error: Нее... так не пойдет... раньше break не было и нужно вернуть что-то осознанное"

Получается, что строка (*) не просто избыточна, а еще и увеличивает вероятность появления трудноуловимых ошибок

 
A100:

Первоначально не придал этому значения, но столкнувшись с этим повторно - появились аргументы, что оно не правильное...

Более того, в этом вашем примере по-хорошему нужно выдавать предупреждение "unreachable code". Студия такого предупреждения тоже не выдаёт, а вот борландовский компилятор, помнится, выдавал.
 
Sergei Vladimirov:
Более того, в этом вашем примере по-хорошему нужно выдавать предупреждение "unreachable code". Студия такого предупреждения тоже не выдаёт, а вот борландовский компилятор, помнится, выдавал.

Хорошая у Вас память

А Borland предупреждения по пустяка не выдает, что лишний раз подтверждает мои доводы

 
A100:

А Borland предупреждения по пустяка не выдает...

А вот в этом я с вами не соглашусь. :) По мне так это мелочь, недостойная внимания. Воткнули return(0), да и дело с концом.

К тому же, в МКЛ вместо while(true) лучше всегда использовать while(!IsStopped()), а в этом случае возврат после цикла уже обязателен.

 
С облачной (и не только) оптимизацией есть ещё у кого проблемы или это мне исключительно "повезло" и она с новым билдом MT5 перестала работать?
 
  У меня в редакторе после точки не выпадает список доступных методов. Для меня очень не удобно. Как это поправить? На старой версии список выпадал.
 
vinnipyx:
  У меня в редакторе после точки не выпадает список доступных методов. Для меня очень не удобно. Как это поправить? На старой версии список выпадал.
Та же беда. Приходится по памяти начинать вписывать, и после пары букв выпадает, но уже только начинающееся на эти буквы.
Жуть как не удобно.
 

А как Вам такой прикол

 

 
Vladimir Pastushak:

А как Вам такой прикол

 

может это конструктор структуры? он ведь есть в любом случае
Причина обращения: