Como usar la directiva #ifdef en C

En este ejemplo veremos como usar la directiva #ifdef en C lo cual nos servirá para debuguear en C rápidamente sin necesidad de un ide o de usar gdb. Esta directiva nos permite que todo lo que esta dentro de ella se ejecute solo si al compilar usamos la opción -D seguido y sin espacios del nombre de la etiqueta.

arrays_c

Es muy útil para hacer trazas de código si queremos enviar a archivos de logs o mostrar información por pantalla de las variables que deseemos.

El siguiente ejemplo en la función main declaramos un array de punteros char con los dias de la semana. Luego llamamos a la función pintar para que muestre por pantalla el contenido del array de strings. Pintar recibe como parámetro un puntero al inicio del array de chars

Lo siguiente que hay en el código es la directiva #ifdef , un printf y el fin de la directiva #endif. Si compilamos con el comando:

gcc -DDEBUG_MAIN -o arrays arrays.c

y luego ejecutamos el programa nos mostrará por pantalla el printf que está entre las directivas. Las directivas se pueden repetir a lo largo del programa tantas veces como queremos.

#include 
#define N 3
void pintar(char *day[], int n);
 
int main (int argc, int argv[])
{


	int i;
	char *day[]={
		"lunes","martes","miercoles","jueves",
		"viernes","sabado","domingo"
	};

	pintar(day, N);

	#ifdef DEBUG_MAIN

	printf("DEBUG: %s %d tam day %lu, tam day*  %lu tam int %lu \n",
	 __FILE__, __LINE__, sizeof(day), sizeof(*day), sizeof(char));

	#endif

	return 0;
}

void pintar(char *day[], int n)
{
	int i;

	printf("** Array con %d elementos", n);
	for(i = 0; i < n; i++){
		printf("day %d  %s \n",i+1,day[i] );
	}
}

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s