MQLArticles/MqlCompilerBugs/PtrFuncTer/README.md
2026-08-31 20:50:01 -05:00

1.3 KiB

Bug: Internal compiler error con ternario + puntero a funcion

Descripcion

Este bug connsiste en que por lo visto el compilador de MQL5 no puede inferir si cierta funcion "calza" con la firma de un typedef cuando se resuleve un ternario ?:, siendo que termina abrutamente la compilacion del codigo.

Estado

  • Build: 6140
  • Fecha exacta: 2026-08-31
  • Error que reporta el Metaeditor: Internal compiler error

Reproducibilidad

En Repro.mq5 esta la forma de reproducirlo

Solucion (puede aplicar a esta build o quizas se arregle)

Hacer explicito el cast para lo que "resulte ambiguo" ejemplo para

typedef string(*FormatFunc)(double value, int8_t decimals);
m_func = func_txt == NULL ? DefaultFormat : func_txt;

DefaultFormat es una funcion global que (calza con la firma que pide m_func), pero si lo declaras asi dara ese error la solucion, guiar al compilar osea hacer explicito que si coincide con la firma osea:

m_func = func_txt == NULL ? (FormatFunc)DefaultFormat : func_txt;

Donde se encontro

  • Repositorio: https://forge.mql5.io/nique_372/GrapichsByLeo
  • Commit exacto (hash): a34663a1b6ec552e7fa79fa2d7b9fd7e2a877382
  • Archivo exacto: GrapichsByLeo\General\EjeLine\Ejes.mqh
  • LOC: 361-362
  • Link exacto: https://forge.mql5.io/nique_372/GrapichsByLeo/src/commit/a34663a1b6ec552e7fa79fa2d7b9fd7e2a877382