<< Anterior
Siguiente >>
Índice

Directivas del preprocesador

Para los no iniciados en programación, una directiva es un comando no perteneciente a la sintaxis de un lenguaje, que instruye o canaliza al compilador en la forma en que debe procesar el código fuente de la sintaxis. Inpaws provee un soporte básico de directivas con dos objetivos básicos:

  • Poder dividir el código fuente en varios ficheros con objeto de clarificar el código.
  • Decidir, en función del hardware para el que vayamos a generar la aventura, si procesar o no ciertas partes del código.
Todas las directivas del preprocesador de Inpaws comienzan por el carácter #.

Inclusión de ficheros

Con objeto de evitar manejar ficheros muy grandes con nuestros fuentes, es posible separar la aventura en varios ficheros (por ejemplo uno por cada zona del juego) y juntarlos todos al compilar la aventura. Para ello utilizaremos la directiva #INCLUDE:

  #INCLUDE "<nombre de fichero a incluir>"

Una vez procesada esta directiva, el compilador seguirá leyendo del nuevo fichero hasta que finalice, momento en el que continuará la compilación donde lo dejó antes del #INCLUDE.

No hay inconveniente en incluir nuevos ficheros dentro de los ficheros incluidos (includes dentro de includes), hasta un nivel indeterminado. No obstante tendrás que prestar atención a no hacer includes "anidados", aunque esta situación te será avisada por el compilador.

No se pueden incluir ficheros en directorios diferentes al del fichero principal (el que damos como parámetro al invocar el comando), por lo que cualquier nombre de fichero con ruta establecida será rechazado por el preprocesador.

Compilación condicional

El objetivo de la compilación condicional es forzar o ignorar la compilación de ciertas partes del fichero fuente dependiendo de la existencia de ciertas "banderas" o variables del preprocesador. En el caso de Inpaws, el soporte a compilación condicional viene dado por la posibilidad de generar aventuras para varias plataformas (Spectrum, PC o Amstrad CPC). En cuyo caso el programador tendrá que tener en cuenta las particularidades de cada versión decidiendo en cada momento qué partes deben compilarse y cuales no en función de lo anterior. No obstante no sólo está restringido a estos casos, y el programador podrá usarlo para los fines que considere.

  #DEFINE <variable>

La variable nombrada será definida y tenida en cuenta como existente en el resto de la compilación. Las variables de preprocesador en Inpaws no tienen valor asignados, su definición cumple simplemente el objetivo de declararlas como existentes, para su posterior comprobación en directivas #IFDEF e #IFNDEF.

Inpaws tiene predefinidas ciertas variables en función del comando de compilación que se haya indicado. Para la opción de compilación "c" (Spectrum) existirá una variable PAWSPECTRUM. En el caso de la compilación para PC (opción "cd") existirá una variable predefinida PAWPC. Finalmente si estamos compilando para CPC, la variable predefinida por el preprocesador será PAWCPM.

#IFDEF <variable>
... Código ...
#ENDIF

El trozo de código entre las directivas #IFDEF y #ENDIF sólo será procesado si está declarada la variable de preprocesador especificada tras la directiva #IFDEF.

#IFNDEF <variable>
	  ... Código ...
#ENDIF

El trozo de código entre las directivas #IFNDEF y #ENDIF sólo será procesado si NO está declarada la variable de preprocesador especificada tras la directiva #IFNDEF.

No se permite anidamiento de #IFDEF/#IFNDEF dentro del mismo fichero. Tampoco se soporta la directiva #ELSE.

<< Anterior
Siguiente >>
Índice