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

 
Renat Fatkhullin:
2600 предупреждений в старом билде вас не смущают.

Но 2000 предупреждений и найденные новым компилятором ошибки вдруг делают компилятор неправильным?

Рекомендую разобраться с этим бардаком в вашем коде и привести его в порядок.

Право же, странно делать такие заявления, когда компилятор вопиет о проблемах в коде. Мы специально увеличиваем требования к качеству кода и не желаем скрывать по умолчанию проблемы. Это финансовая индустрия.

Не надо мешать всё в кучу.  Предупреждения предупреждениями, а ошибки ошибками,  все прекрасно понимают разницу.  До последнего билда всё компилировалось.  А если вы там втихаря ввели какие-то новые правила в компилятор, не поставив нас в известность, то разве мой код виноват в этом?  Зачем перекладывать проблему с больной головы на здоровую?

Там лишь предупреждения типа "implicit conversion from 'number' to 'string'" ,  "possible loss of data due to type conversion",  "sign mismatch" и аналогичные.  Т.е. речь идёт лишь о преобразовании числовых/текстовых типов друг в друга.  Какое вообще отношение они имеют к тем ошибкам, которые выдаёт последний компилятор:

declaration without type
cannot to apply function template
comma expected
undeclared identifier
'*' - pointer cannot be used
class type expected
no one of the overloads can be applied to the function call
object pointer expected
semicolon expected

Т.е. очевидно, что тут появились некие изменения в синтаксисе языка. И всё молчком.   А вы тут нам мораль читаете про "качество кода" и т.д., уводя разговор в сторону как обычно.

 
Alexey Navoykov:

Не надо мешать всё в кучу.  Предупреждения предупреждениями, а ошибки ошибками,  все прекрасно понимают разницу.  До последнего билда всё компилировалось.  А если вы там втихаря ввели какие-то новые правила в компилятор, не поставив нас в известность, то разве мой код виноват в этом?  Зачем перекладывать проблему с больной головы на здоровую?

Там лишь предупреждения типа "implicit conversion from 'number' to 'string'" ,  "possible loss of data due to type conversion",  "sign mismatch" и аналогичные.  Т.е. речь идёт лишь о преобразовании числовых/текстовых типов друг в друга.  Какое вообще отношение они имеют к тем ошибкам, которые выдаёт последний компилятор:

declaration without type
cannot to apply function template
comma expected
undeclared identifier
'*' - pointer cannot be used
class type expected
no one of the overloads can be applied to the function call
object pointer expected
semicolon expected

Т.е. очевидно, что тут появились некие изменения в синтаксисе языка. И всё молчком.   А вы тут нам мораль читаете про "качество кода" и т.д., уводя разговор в сторону как обычно.

если у вас 2600 предупреждений, вы можете дать гарантию, что там все предупреждения безобидные, вы все 2600 просмотрели

по поводу головы, только больная голова может допускать такое количество предупреждений и считать что это нормально и права еще качать 

 
Alexey Navoykov:

Не надо мешать всё в кучу.  Предупреждения предупреждениями, а ошибки ошибками,  все прекрасно понимают разницу.  До последнего билда всё компилировалось.  А если вы там втихаря ввели какие-то новые правила в компилятор, не поставив нас в известность, то разве мой код виноват в этом?  Зачем перекладывать проблему с больной головы на здоровую?

Там лишь предупреждения типа "implicit conversion from 'number' to 'string'" ,  "possible loss of data due to type conversion",  "sign mismatch" и аналогичные.  Т.е. речь идёт лишь о преобразовании числовых/текстовых типов друг в друга.  Какое вообще отношение они имеют к тем ошибкам, которые выдаёт последний компилятор:

declaration without type
cannot to apply function template
comma expected
undeclared identifier
'*' - pointer cannot be used
class type expected
no one of the overloads can be applied to the function call
object pointer expected
semicolon expected

Т.е. очевидно, что тут появились некие изменения в синтаксисе языка. И всё молчком.   А вы тут нам мораль читаете про "качество кода" и т.д., уводя разговор в сторону как обычно.

Товарисч, ты и дальше здесь будешь дер*** компилятор поливать, или может хотя бы строчек двадцать своего опуса на MQL приведешь? Неизвестно что у тебя за инфернальная хрень написана. Или по-твоему здесь все телепаты должны быть, что бы выслушать тебя, сделать печальные глаза и со всем этим бредом согласиться?

ГДЕ КОНКРЕТНЫЙ КОД ВЫЗЫВАЮЩИЙ ОШИБКИ?

 
Alexey Navoykov:

Не надо мешать всё в кучу.  Предупреждения предупреждениями, а ошибки ошибками,  все прекрасно понимают разницу.  До последнего билда всё компилировалось.  А если вы там втихаря ввели какие-то новые правила в компилятор, не поставив нас в известность, то разве мой код виноват в этом?  Зачем перекладывать проблему с больной головы на здоровую?

Я не мешаю. За плечами 26 лет безостановочного программирования.

Предупреждения - это по сути ошибки, если мы говорим о финансовом секторе. И все тысячи сообщений о "потере знака, потере точности, потере на приведениях и тд" являются приговором качеству кода. Видимо, вы не вполне понимаете последствия.

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

Без этого все обсуждение выглядит неприглядно и не честно.

 

В логе журнала эксперта нашел ошибку:

unknown command E0

Что это значит? 

 

Renat Fatkhullin:

Введите пожалуйста механизм пространств имен в MQL5, сами ведь понимаете как он полезен, а то вставлять костыли в виде макросов для отключения одинаковых имен в объявлениях, не элегантно как то выглядит :)

 
Renat Fatkhullin:

...

Предупреждения - это по сути ошибки, если мы говорим о финансовом секторе. И все тысячи сообщений о "потере знака, потере точности, потере на приведениях и тд" являются приговором качеству кода. Видимо, вы не вполне понимаете последствия.

...
Добавлю, что начиная с определенного уровня сложности проекта, предупреждения влекут гораздо больше кошмарных последствий, чем обычные ошибки времени компиляции. Коварство предупреждений в том, что с ними программа работает, но в друг на ровном месте при разных обстоятельствах начинаются чудеса, которые очень сложно исправить.
 

интересно по какому принципу попадают продукты в данный банер 

 

и попадают ли туда продукты авторизованного продавцы? То есть могу ли я в этом баннере увидеть свой продукт ? пролистал 30 страниц своих так и не увидел ...

 
Renat Fatkhullin:

Я не мешаю. За плечами 26 лет безостановочного программирования.

Предупреждения - это по сути ошибки, если мы говорим о финансовом секторе. И все тысячи сообщений о "потере знака, потере точности, потере на приведениях и тд" являются приговором качеству кода. Видимо, вы не вполне понимаете последствия.

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

Без этого все обсуждение выглядит неприглядно и не честно.

Ладно, Ренат, эти споры о "качестве кода" не относится к теме обсуждения.  Ибо мы здесь говорим лишь о компилируемости, т.е. работоспособности кода.   А потеря точности и т.д. - это уже личное дело программиста, так сказать под его ответственность.   Ведь неявное приведение например int к short не запрещено стандартом языка, правильно?   Так к чему эти нравоучения сейчас? 

ОК, я таки отыскал один из этих багов:

class CClass
{

};


class CArr
{
  CClass* data[];
 public: 
  CClass* operator[] (int i)  { return data[i]; }
};


template<typename T>
void Func (T* obj)      {  }
 

void OnStart()
{  
  CArr arr;
  Func(arr[0]);
}

на что получаю в логе:

'CClass' - declaration without type TestScript.mq5 16 9
'CClass' - comma expected TestScript.mq5 16 9

В прежних билдах всё нормально было.

 
Alexey Navoykov:

Ладно, Ренат, эти споры о "качестве кода" не относится к теме обсуждения.  Ибо мы здесь говорим лишь о компилируемости, т.е. работоспособности кода.   А потеря точности и т.д. - это уже личное дело программиста, так сказать под его ответственность.   Ведь неявное приведение например int к short не запрещено стандартом языка, правильно?   Так к чему эти нравоучения сейчас? 

2600 потенциально проблемных мест, да еще в финансах - это не нравоучения, а именно показатель качества кода.


ОК, я таки отыскал один из этих багов:

на что получаю в логе:

В прежних билдах всё нормально было.

Да, эту ошибку уже обсуждали (возможно, с A100) и исправили еще 4 мая. Перестарались с контролем типов, по всей видимости.

Я приложил последний MetaEditor билд 1329, в котором уже нет этой ошибки. Проверьте на нем, пожалуйста.

Релиз МТ5 выйдет 12 мая.

Файлы: