Баг компилятора при параметре шаблона = void* - страница 12

 
fxsaber:

Разработчики. Как это происходит с OrderSend, например.

Вот Вам пример https://www.mql5.com/ru/forum/295485/page11#comment_9959761

Я думал они устанут отвечать на один и тот же вопрос и сделают наконец предупреждение - нет, не устали

Так что MQL это не для трейдеров, а для программистов

Баг компилятора при параметре шаблона = void*
Баг компилятора при параметре шаблона = void*
  • 2018.12.20
  • www.mql5.com
Ошибка компилятора. Билд 1961, 64 бит...
 
A100:

Достаточно отключать предупреждения по номеру (через MetaEditor его не видно, но он есть) что я и делаю через командный компилятор

Не подскажете, как это делается?
 
Alexey Navoykov:
Не подскажете, как это делается?

Результаты компиляции выводятся в файл и оттуда уже извлекаются строки в которых нет номера заранее известных номеров предупреждений (после слова warning там идёт номер)

 
A100:

Результаты компиляции выводятся в файл и оттуда уже извлекаются строки в которых нет номера заранее известных номеров предупреждений (после слова warning там идёт номер)

Так а как сделать, чтобы в МЕ эти предупреждения не отображались?  Куда эти номера прописывать?
 
Alexey Navoykov:
Так а как сделать, чтобы в МЕ эти предупреждения не отображались?  Куда эти номера прописывать?

Я компилирую в командной строке и все сообщения выводятся также в командной строке. К IDE MetaEditor это не прикрутить. Это уже финальная так сказать компиляция - проверка на важные warning. На warning в IDE я уже и не смотрю даже - слишком их там много

 
A100:

Так что MQL это не для трейдеров, а для программистов

Не будучи программистом пользуюсь MQL. Заканчивайте эту мантру про программистов. Думаю, владею MQL выше среднего пользователя и, возможно, фрилансера.

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

 
A100:

Я компилирую в командной строке и все сообщения выводятся также в командной строке. К IDE MetaEditor это не прикрутить. Это уже финальная компиляция - проверка на важные warning

А, ну так не интересно... Кстати, а зачем вы компилируете в командной строке?
 
Alexey Navoykov:
А, ну так не интересно... Кстати, а зачем вы компилируете в командной строке?

Вышел допустим новый build и\или мне нужно перекомпилировать все и или только определённые файлы - я задаю список и компилируется только список\несколько списков

Или мне нужно перекомпилировать в другом build - задаю номер build и список и командный файл сам все сделает

 
A100:

А какой смысл в таком значении, если Вы получаете только 4 байта из 8-ми. При том что Разработчики явно запретили преобразовывать значение указателя в ulong (раньше то можно было и поверьте старшие разряды тогда были ненулевыми)

Опытным путем установлено, что это число ведет себя в точности так, как вел бы себя индекс указателя в массиве указателей, если бы такой массив назначал номера указателям строго последовательно, а в случае освобождения ряда номеров - переиспользовал бы их от последнего освободившегося до первого в обратном порядке. Если кто-то задастся целью дублировать эту систему дескрипторов в своей архитектуре, например заменив тип указателя на структуру размером с инт, понятным поведением (возврат true встроенным типом для уничтоженного объекта, при том, что такое поведение запрещает перегрузку указателями целого ряда полезных логических операторов, это полный facepalm) и всеми преимуществами простого типа, при этом сохраняя жесткий контроль над популяцией объектов и указателей через счетчик, возможность получать это число из самого объекта сэкономило бы существенный объем памяти.

А если говорить о более приземленных задачах - то это число указывает на число созданных в системе объектов и полезно для отладки в любой архитектуре, основанной на динамических списках. Не удивительно, что я не первый, кто додумался как "обмануть" запрет на его получение, и мне даже подсказали более быстрый способ, правда только для 4-ки.
 
A100:

Вышел допустим новый build и\или мне нужно перекомпилировать все и или только определённые файлы

Ясно, но это уже частный случай. Всё-таки основное время мы проводим за кодированием и компиляцией в IDE.  Поэтому отключение ненужных предупреждений там было бы очень кстати.

Лично для меня там куча лишнего. Например предупреждения о неявном приведении к string. Не припомню случаев, чтобы это могло привести к каким-то неприятным последствиям.  string в 99% случаев используется лишь для вывода текста на экран или в файл.

Или допустим когда тип возвращаемого значение функции bool, а ты возвращаешь 0 или 1, то компилятор тоже ругается, мол тип не булевый.  В VS нету такого. Эти константы допустимы для bool.   Мне например удобнее писать return 0, нежели return false, т.к. намного легче для визуального восприятия.

В общем у меня лог почти целиком забит именно этими двумя предупреждениями. С удовольствием бы от них избавился )

Как руки дойдут, возможно допилю это сам.  У меня там много задумок накопилось.  Пока что сделал только автоматическую прокрутку лога по окончании компиляции на начало первой ошибки (если таковая имеется).  Без этого приходилось постоянно вручную крутить список (а он немаленький), выискивая сообщение об ошибке. Тот ещё гемор.

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