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

39 lines
1.3 KiB
Markdown

# 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
```mql5
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:
```mql5
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`