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().