Error del compilador con el parámetro de la plantilla = void* - página 12

 
fxsaber:

Los promotores. Como ocurre con OrderSend, por ejemplo.

Este es un ejemplo https://www.mql5.com/ru/forum/295485/page11#comment_9959761

Pensé que se cansarían de responder a la misma pregunta y que finalmente emitirían una advertencia - no, no lo hicieron

Así que MQL no es para los comerciantes, sino para los programadores

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

Basta con desactivar las advertencias numéricas (no se ven a través del MetaEditor, pero están ahí), lo que hago a través del comando compilador

¿Puede decirme cómo hacerlo?
 
Alexey Navoykov:
¿Puede decirme cómo se hace esto?

Los resultados de la compilación se envían a un archivo y de ahí se extraen las líneas que no tienen números de advertencia predefinidos (después de la palabra warning hay un número)

 
A100:

Los resultados de la compilación se envían a un archivo y de ahí se extraen las líneas que no tienen ningún número de advertencia predefinido (la palabra warning va seguida de un número)

¿Cómo hago para que estos avisos no aparezcan en ME? ¿Dónde pongo estos números?
 
Alexey Navoykov:
¿Cómo hago para que estos avisos no aparezcan en ME? ¿Dónde pongo estos números?

Compilo en la línea de comandos y todos los mensajes se muestran también en la línea de comandos. No se puede adjuntar al MetaEditor IDE. Esta es la compilación final, por así decirlo, la comprobación de las advertencias importantes. Ya ni siquiera miro las advertencias en el IDE - hay demasiadas

 
A100:

Así que MQL no es para los comerciantes, sino para los programadores

Al no ser programador, utilizo MQL. Termina ese mantra sobre los programadores. Creo que domino mejor el MQL que un usuario medio y quizás un autónomo.

Así que puedo decir razonablemente que comprendo los problemas a los que se enfrentan la mayoría de los usuarios de la lengua.

 
A100:

Compilo en la línea de comandos y todos los mensajes también salen en la línea de comandos. No se puede adjuntar a MetaEditor IDE. Esta es la compilación final - compruebe las advertencias importantes

Bueno, no es interesante... Por cierto, ¿por qué compilas en la línea de comandos?
 
Alexey Navoykov:
Ah, eso no es interesante... Por cierto, ¿por qué compila en la línea de comandos?

Digamos que sale una nueva compilación y / o necesito recompilar todos y / o sólo ciertos archivos - establezco una lista y sólo la lista se compila / varias listas

O tengo que volver a compilar en otra compilación - pongo el número de compilación y la lista y el archivo de comandos lo hace todo por sí mismo

 
A100:

Y qué sentido tiene ese valor, si sólo se obtienen 4 bytes de 8. Dado que los desarrolladores prohibieron explícitamente convertir el valor de un puntero a ulong (antes se podía, y créeme que los bits altos eran distintos de cero en aquella época).

Se ha demostrado experimentalmente que este número se comporta exactamente como se comportaría un índice de puntero en una matriz de punteros si dicha matriz asignara números a los punteros de forma estrictamente consecutiva y, si se liberara un rango de números, los reutilizara desde el último número liberado hasta el primero en orden inverso. Si alguien quisiera duplicar este sistema de descriptores en su arquitectura, por ejemplo, sustituyendo un tipo de puntero por una estructura de tamaño int, un comportamiento comprensible (devolver true como tipo inline para un objeto destruido, mientras que este comportamiento prohíbe sobrecargar una serie de operadores lógicos útiles con punteros, esto es un completo facepalm) y todos los beneficios del tipo simple, mientras se mantiene un control estricto sobre la población de objetos y punteros a través del contador, la capacidad de obtener este número desde el propio objeto ahorraría una cantidad significativa de pa

Y hablando de tareas más mundanas, este número indica el número de objetos creados en el sistema y es útil para la depuración en cualquier arquitectura basada en listas dinámicas. No en vano, no soy el primero que ha descubierto cómo "engañar" la prohibición de conseguirlo, e incluso me han dicho una forma más rápida, aunque sólo para 4.
 
A100:

Por ejemplo, ha salido una nueva compilación y/o necesito recompilar todos o sólo ciertos archivos

Ya veo, pero este es un caso especial. Después de todo, pasamos la mayor parte de nuestro tiempo codificando y compilando en el IDE, por lo que desactivar las advertencias innecesarias allí sería muy práctico.

Personalmente encuentro muchas cosas innecesarias allí. Por ejemplo, hay advertencias sobre la conversión implícita a cadena. En el 99% de los casos, la cadena se utiliza únicamente para imprimir texto en la pantalla o escribirlo en un archivo.

O, supongamos, cuando el tipo del valor de retorno de la función es bool, y devuelves 0 o 1, el compilador se quejará también, diciendo que el tipo no es booleano. VS no lo tiene. Estas constantes son admisibles para bool. Por ejemplo, me resulta más cómodo escribir return 0 en lugar de return false, porque es mucho más fácil de percibir visualmente.

Por lo tanto, mi registro está casi completamente lleno de sólo estas dos advertencias. Me gustaría deshacerme de ellos).

Cuando me ponga a ello, tal vez lo termine yo mismo. Tengo muchas ideas al respecto. Por ahora sólo hice un desplazamiento automático del registro después de terminar la compilación hasta el principio del primer error (si lo hay). Sin ello tenía que desplazar manualmente la lista (y es bastante grande), buscando el mensaje de error. Qué dolor de cabeza.

Razón de la queja: