Bug de compilador com parâmetro de modelo = vazio* - página 12

 
fxsaber:

Desenvolvedores. Como é o caso da OrderSend, por exemplo.

Aqui está um exemplo https://www.mql5.com/ru/forum/295485/page11#comment_9959761

Pensei que eles se cansariam de responder a mesma pergunta e finalmente emitir um aviso - não, eles não

Portanto, MQL não é para comerciantes, mas para programadores.

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

É suficiente desativar avisos baseados em números (você não pode vê-los através do MetaEditor, mas eles estão lá), o que eu faço através do compilador de comandos

Você pode me dizer como fazer isso?
 
Alexey Navoykov:
Você pode me dizer como isso é feito?

Os resultados da compilação são enviados para um arquivo e de lá são extraídas as linhas sem números de advertência pré-definidos (após a palavra advertência há um número)

 
A100:

Os resultados da compilação são enviados para um arquivo e daí são extraídas as linhas que não possuem números de advertência pré-definidos (a palavra advertência é seguida por um número)

Então como faço para que estes avisos não apareçam em ME? Onde coloco estes números?
 
Alexey Navoykov:
Então como faço para que estes avisos não apareçam em ME? Onde coloco estes números?

Eu compenso na linha de comando e todas as mensagens também são exibidas na linha de comando. Ela não pode ser anexada à IDE MetaEditor. Esta é a última, por assim dizer, compilação - verificação de avisos importantes. Eu não olho mais para avisos na IDE - há muitos deles

 
A100:

Portanto, MQL não é para comerciantes, mas para programadores.

Não sendo um programador, eu uso MQL. Termine esse mantra sobre programadores. Acho que tenho um melhor domínio da MQL do que um usuário médio e talvez um freelancer.

Portanto, posso razoavelmente dizer que compreendo os problemas enfrentados pela maioria dos usuários do idioma.

 
A100:

Eu compenso na linha de comando e todas as mensagens também são emitidas na linha de comando. Ele não pode ser anexado ao MetaEditor IDE. Esta é a compilação final - verifique se há avisos importantes

Bem, não é interessante... A propósito, por que você compila na linha de comando?
 
Alexey Navoykov:
Ah, isso não é interessante... A propósito, por que você compila na linha de comando?

Digamos que um novo build está fora e / ou eu preciso recompilar todos e / ou apenas certos arquivos - eu estabeleço uma lista e apenas a lista é compilada / várias listas

Ou eu preciso recompilar em outra construção - eu defino o número da construção e a lista e o arquivo de comando faz tudo sozinho

 
A100:

E para que serve tal valor, se você recebe apenas 4 bytes em 8. Dado que os Desenvolvedores proibiram explicitamente a conversão do valor de um ponteiro em ulong (antes que você pudesse, e acredite em mim, os bits altos eram não-zero naquela época).

Foi experimentalmente demonstrado que este número se comporta exatamente como um índice ponteiro em uma matriz de ponteiros se comportaria se tal matriz atribuísse números aos ponteiros de forma estritamente consecutiva e, se um intervalo de números fosse liberado, os reutilizasse do último número liberado para o primeiro em ordem inversa. Se alguém quisesse duplicar este sistema de descritores em sua arquitetura, por exemplo, substituir um tipo de ponteiro por uma estrutura de tamanho int, comportamento compreensível (retorno verdadeiro como tipo em linha para um objeto destruído, enquanto este comportamento proíbe sobrecarregar um número de operadores lógicos úteis com ponteiros, este é um completo facepalm) e todos os benefícios do tipo simples, mantendo um controle apertado sobre a população de objetos e ponteiros via contador, a capacidade de obter este número do próprio objeto economizaria uma quantidade significativa de pa

E falando em tarefas mais mundanas - este número indica o número de objetos criados no sistema e é útil para depuração em qualquer arquitetura baseada em listas dinâmicas. Não me surpreende, não sou o primeiro a descobrir como "enganar" a proibição de obtê-la, e até me disseram uma maneira mais rápida, embora apenas por 4.
 
A100:

Por exemplo, uma nova construção saiu e / ou eu preciso recompilar todos ou apenas alguns arquivos

Estou vendo, mas este é um caso especial. Afinal, passamos a maior parte do nosso tempo codificando e compilando na IDE, de modo que desativar avisos desnecessários seria muito útil.

Eu pessoalmente encontro muitas coisas desnecessárias lá. Por exemplo, há avisos sobre a conversão implícita em cadeia. Não posso me lembrar de casos em que possa causar algumas conseqüências desagradáveis. 99% dos casos em cadeia são usados apenas para imprimir texto na tela ou escrevê-lo em um arquivo.

Ou, suponha, quando o tipo de valor de retorno da função é bool, e você retorna 0 ou 1, o compilador também reclamará, dizendo que o tipo não é booleano. VS não o tem. Estas constantes são permitidas para bool. Por exemplo, sou mais conveniente escrever retorno 0 em vez de retorno falso porque é muito mais fácil de perceber visualmente.

Portanto, meu tronco está quase completamente embalado apenas com estes dois avisos. Eu gostaria de me livrar deles).

Quando chegar lá, talvez eu mesmo o termine. Tenho muitas idéias lá. Por enquanto só fiz rolagem automática do log depois de terminar a compilação até o início do primeiro erro (se houver). Sem ele eu tive que rolar manualmente a lista (e não é tão grande assim), procurando por mensagem de erro. Que chato.