39 lines
1.3 KiB
Markdown
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`
| |||
|