Está en la página 1de 3

Directiva #if

La directiva #if evala una expresin constante entera. Siempre se debe terminar
con #endif para delimitar el fin de esta sentencia.
Se pueden as mismo evaluar otro cdigo en caso se cumpla otra condicin, o bien,
cuando no se cumple ninguna usando #elif o #else respectivamente.
Ejemplo:
#define MEX 0
#define EUA 1
#define FRAN 2
#define PAIS_ACTIVO MEX

#if PAIS_ACTIVO == MEX
char moneda[]="pesos";
#elif PAIS_ACTIVO == EUA
char moneda[]="dolar";
#else
char moneda[]="franco";
#endif

Directiva #else
El # else Directiva tiene la siguiente sintaxis:
# Else nueva lnea
Esta directiva delimita el texto fuente alternativa para ser compilado si la
condicin probada en el correspondiente si # , # ifdef o # ifndef directiva es
falsa. Un # else directiva es opcional.
Ejemplo:
#define MAX 10

int main(void){
#if MAX > 99
printf("versin PRO, compilada para arrays mayores de 99.\n");
...
#else
printf("versin DEMO, compilada para arrays menores de 99.\n");
...
#endif
return 0;
}
La directiva # elif
El # elif Directiva tiene la siguiente sintaxis:
# Elif expresin constante de nueva lnea
El # elif directiva realiza una tarea similar a la utilizacin combinada de los dems-
si las declaraciones de C. Esta directiva delimita las lneas de fuentes alternativas
que se debern elaborar si la expresin constante en el correspondiente si # , #
ifdef , # ifndef , u otro # elif Directiva es falso y si la expresin de la constante
adicional presentada en el # elif lnea es verdad. Un # elif directiva es opcional.
Ejemplo:
#define USA 1
#define INGLATERRA 2
#define FRANCIA 3
#define PAIS_ACTIVO USA
#if PAIS_ACTIVO == USA
char moneda[] = "dolar";
#elif PAIS_ACTIVO == INGLATERRA
char moneda[] = "libra";
#else
char moneda[] = "franco";
#endif
La directiva # endif
El # endif Directiva tiene la siguiente sintaxis:
# Endif nueva lnea
Esta directiva termina el alcance de la # si , # ifdef , # ifndef , # else o #
elif Directiva.
El nmero de los necesarios # endif directivas cambia de acuerdo a si el elif o #
else se utiliza directiva.
Ejemplo:
int Ordena( int Vector[], int n)
{
...
#ifdef USAHEAP
int *aux;
aux= ( int *) malloc(n* sizeof( int));
#else
int aux[MAXSIZE];
#endif
...
#ifdef USAHEAP
free(aux);
#endif
}
Directiva #line
La directiva #line nmero ``cadena'' informa al preprocesador cual es el nmero
siguiente de la lnea de entrada. Cadena es opcional y nombra la siguiente lnea de
entrada. Esto es usado frecuentemente cuando son traducidos otros lenguajes a C.
Por ejemplo, los mensajes de error producidos por el compilador de C pueden
referenciar el nombre del archivo y la lnea de la fuente original en vez de los
archivos intermedios de C.
Ejemplo: lo siguiente especifica que el contador de lnea empezar con 100.
#line 100 "test.c" /* inicializa el contador de linea
y nombre de archivo */
main() /* linea 100 */
{
printf("%d\n",__LINE__); /* macro predefinida, linea
102 */
printf("%s\n",__FILE__); /* macro predefinida para el
nombre */
}