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`
|
|
|