Known problems of FPC
From Lazarus wiki
Jump to navigationJump to search
Problemas conocidos de FPC
- Cuándo el compilador está instalado en una ruta que contiene nombres largos:
- El enlazador GNU (el que utiliza FPC) para DOS y windows no soporta nombres largos, por tanto, no instales el compilador en un directorio con una ruta que incluya nombres largos y no compiles fuentes que estén ubicadas en rutas semejantes. No obstante lo anterior, la librería en tiempo de ejecución si soporta nombres largos y por tanto los programas compilados podrán hacer uso de ellos. ¡¡Este problema se produce únicamente en la versión DOS y windows!!
- En modo Delphi, los conjuntos no coinciden en tamaño con los de Delphi. Las enumeraciones tienen siempre 4 octetos (0..32 elementos) o 32 octetos ((33..256 elementos), y no su tamaño real.
- La longitud de la documentación en texto plano es > 80 caracteres.
- Las siguientes funcionalidades de Delphi no se han implementado a día de hoy:
- Interfaces Display (dispinterface) y el modificador de indice dispip.
- Paquetes y sharemem, y la funcionalidad para DLL relacionada
- Delegación con la palabra clave implements
- La convención de llamada para registros pone los argumentos en orden incorrecto en la pila (Los parámetros a la izquierda son introducidos primero)
- La herramienta utilizada para crear la documentación en texto desde fuentes TeXT no es capaz de de crear archivos con longitud de línea mayor de 80 caracteres.
- Incompatibilidades conocidas con Delphi:
- Al usar un enlazador externo y por cuestiones de portabilidad entre plataformas, no es posible declarar una función en un interfaz de una unidad, y volver as declararla como externa en la implementación. Una función externa debe declararse completamente en la interfaz, y sólo en la interfaz..
- Errores conocidos específicos de Darwin/Mac OS X y Classic Mac OS
- El paso de parámetros en coma flotante a rutinas C mediante elipsis (cómo en printf) no funciona hoy día para AIX ABI (que es utilizado por todo los SO mencionados).
- El paso por valor de registros a rutinas C no funciona para registros cuyo tamaño es diferente de 1, 2 y 4 octetos.
- La creación de librerías compartidas no está soportada.
- El tipo moneda (currency) tiene algunos problemas con valores cercanos a los límites superior e inferior (debido a que el tipo double se utiliza para algunas conversiones, y su precisión es demasiado pequeño para estos casos).