forked from nique_372/MQLArticles
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`
| |
|