38 Diferencias entre plataformas

Aqu� tiene un r�pido resumen de las cosas que pueden causar problemas cuando mueva su c�digo de una plataforma a otra (puede encontrar una versi�n detallada de esto en la secci�n docs de la p�gina web de Allegro).

Las versiones Windows y Unix requieren que escriba END_OF_MAIN() tras su funci�n main(), lo que transforma m�gicamente su main() de estilo ANSI C en un WinMain() de estilo Windows, y permite que el c�digo Unix obtenga una copia de sus par�metros argv[].

En muchas plataformas Allegro funcionar� lentamente si espera que bloquee autom�ticamente los bitmaps cuando dibuje sobre ellos. Para mejorar el rendimiento, necesita llamar usted mismo acquire_bitmap() y release_bitmap(), e intentar minimizar el n�mero de bloqueos.

La versi�n Windows puede perder el contenido de la memoria de v�deo si el usuario cambia de tarea a otro programa, por lo que deber� tratar eso.

Ninguna de las plataformas actuales necesitan input polling, pero es posible que esto sea necesario en el futuro, por lo que si quiere asegurar al 100% la portabilidad de su programa, deber�a llamar poll_mouse() y poll_keyboard() en los lugares apropiados.

Allegro define un n�mero est�ndar de macros que pueden ser usadas para verificar los atributos de la plataforma actual, o para aislarle de algunas diferencias entre sistemas:

ALLEGRO_PLATFORM_STR
Cadena de texto que contiene el nombre de la plataforma actual.

ALLEGRO_DOS
ALLEGRO_DJGPP
ALLEGRO_WATCOM
ALLEGRO_WINDOWS
ALLEGRO_MSVC
ALLEGRO_MINGW32
ALLEGRO_BCC32
ALLEGRO_UNIX
ALLEGRO_LINUX
ALLEGRO_BEOS
ALLEGRO_QNX
ALLEGRO_GCC
Definidos si est� compilando en el sistema relevante. A menudo ser�n aplicables varias, ej: DOS+Watcom, o Windows+GCC+MinGW32.

ALLEGRO_I386
ALLEGRO_BIG_ENDIAN
ALLEGRO_LITTLE_ENDIAN
Definidos si est� compilando para el procesador del tipo relevante.

ALLEGRO_VRAM_SINGLE_SURFACE
Definido si la pantalla es una sola superficie grande partida en m�ltiples sub-bitmaps de v�deo (ej: DOS), en vez de cada bitmap sea una entidad totalmente �nica (ej. Windows).

ALLEGRO_CONSOLE_OK
Definido cuando no est� en modo gr�fico, y hay una consola en modo texto a la cual puede mandar mensajes con printf(), salida est�ndar que puede ser capturada y redirigida por el usuario incluso cuando est� en modo gr�fico. Si este define est� ausente, est� ejecutando su programa en un entorno como Windows, el cual no tiene salida est�ndar.

ALLEGRO_LFN
Distinto de cero si hay soporte para ficheros de nombres largos, o cero si est� limitado al formato 8.3 (en la versi�n DJGPP esto es una variable dependiente del entorno durante la ejecuci�n).

INLINE
Use esto en lugar de la palabra reservada modificadora de funci�n "inline" y su c�digo funcionar� correctamente en cualquiera de los compiladores soportados.

ZERO_SIZE
Use esto para declarar arrays de tama�o cero, ej: "char *line[ZERO_SIZE]" dentro de la estructura BITMAP. Algunos compiladores esperan un cero en ese lugar, mientras que otros no quieren tener nada dentro de [], por lo que esta macro permite que el mismo c�digo funcione bien de cualquier modo.

LONG_LONG
Definido a lo que quiera que represente un entero "long long" de 64 bits para el compilador actual, o no definido si no est� soportado.

OTHER_PATH_SEPARATOR
Definido a un car�cter separador de ruta distinto de la barra para plataformas que lo usen (ej: antibarra bajo DOS y Windows), o definido a la barra normal si no hay otro separador de car�cter.

DEVICE_SEPARATOR
Definido al car�cter que separa el nombre de fichero del dispositivo (dos puntos para DOS y Windows), o cero si no hay dispositivos expl�citos en las rutas (ej: Unix).

USE_CONSOLE
Si define esto antes de incluir los ficheros de cabecera de Allegro, la versi�n Windows har� que su programa se compile como una aplicaci�n de consola en vez del programa normal en modo gr�fico.

END_OF_MAIN()
Al poner esto tras su funci�n main() permitir� que los programas Windows funcionen con una rutina main() regular, para que no tenga que cambiar todo para usar WinMain().



Volver al Indice