Anuncios

Bienvenidos sean a este post, hoy veremos un tema muy particular.

Anuncios

Hasta ahora hemos visto lo basico de enum, struct y typedef, como estos nos pueden ser utiles para crear nuevos tipos de datos pero esto es inutil si lo implementamos como lo vimos hasta ahora, porque los tipos nuevos solo aplicarian al codigo del mismo archivo, aqui entran en escena los archivos de encabezado.

Anuncios

Los archivos de encabezado podriamos considerarlos como librerias porque ellas solo contendran toda la informacion para esto pero no ejecutara nada, dado que eso lo haremos con el programa como hasta ahora, y para diferenciarlos de nuestros programas llevan la extension .h, si son perspicaces este tipo de archivo es el utilizado siempre al inicio de nuestros codigos, repasemos su sintaxis para utilizarlos:

#include <archivo.h>
Anuncios

Con este tipo de nomenclatura el unico inconveniente que tenemos es la ubicacion del archivo, dado que debemos ubicarlo en algun directorio del path del SO y esto puede generar un inconveniente a la hora de trabajar con el codigo pero esta instruccion nos permite una alternativa y es la siguiente:

#include "archivo.h"
Anuncios

De esta forma buscara el archivo en el mismo directorio donde esta nuestro codigo, y si lo tenemos dentro de un directorio lo especificamos para que lo busque, les doy un ejemplo:

#include "libs/archivo.h"
Anuncios

Con todo esto comentado vamos a crear un ejemplo simple para verlo en accion, para ello primero generaremos un archivo llamado ejemplo08.h al cual le agregaremos el siguiente codigo:

ejemplo08.h

typedef enum Mamifero
{
	Perro,
	Gato
} Mamifero;

typedef struct Animal
{
	Mamifero mamifero;
	int	edad;
	int 	peso;
} Animal;

void mostrar_datos(Animal a)
{
	printf("Tipo: %s\nPeso: %i\nEdad: %i\n",
		a.mamifero == 0 ? "Perro" : "Gato",
		a.peso,
		a.edad);
}
Anuncios
Anuncios

En este caso tomamos el ultimo codigo que vimos en el ejemplo del post anterior, aqui primero definimos un enum para dos tipos de mamiferos, luego tenemos un struct que usaremos para crear nuestros objetos de tipo animal con sus respectivos datos, por ultimo tenemos la funcion mostrar_datos la cual se encargara de mostrar los datos del objeto de tipo Animal que le pasemos, tal como lo vimos en el post anterior, si observan no tenemos el main ni tampoco ningun include, en este caso no pero se pueden incluir para llamar a otras librerias, con todo esto comentado pasemos a la segunda parte, para ello debemos crear en el mismo directorio del anterior a otro archivo llamado ejemplo08.c y le agregaremos el siguiente codigo:

ejemplo08.c

#include <stdio.h>
#include "ejemplo08.h"

int main()
{
	Animal animal_1 = {Perro, 8, 25};
	Animal animal_2 = {Gato, 12, 5};

	mostrar_datos(animal_1);
	mostrar_datos(animal_2);

	return 0;
}
Anuncios

Siguiendo con el ejemplo del post anterior en este nuevo codigo incluiremos todo lo relacionado para su ejecucion, primero incluimos a la libreria de siempre, despues incluiremos el archivo que generamos anteriormente, para despues definir el main donde crearemos dos objetos del struct de nuestra libreria y despues llamaremos a la funcion mostrar_datos para mostrar el contenido de nuestros objetos, compilemos y veamos como es su salida:

tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo08 
Tipo: Perro
Peso: 25
Edad: 8
Tipo: Gato
Peso: 5
Edad: 12
tinchicus@dbn001vrt:~/lenguajes/C$
Anuncios

Como podemos ver el codigo funciono perfectamente, analicemos cuales son las ventajas de trabajar de esta forma:

  • Simplifican nuestro codigo
  • Nos ayuda para nuestra depuracion o correccion de errores
  • Estos elementos podemos reutilizarlos en otros codigos
Anuncios

Si bien esta es una forma muy simple de archivo de encabezado, mas adelante cuando nos adentremos en OOP, agregaremos mas funcionalidades y formas de definirlos, por el momento quedemonos con esta forma de trabajo.

Anuncios

En resumen, hoy hemos visto los archivos de encabezado, que son, como nos ayudan, como podemos invocarlo en nuestros codigos, vimos un ejemplo de archivo, y despues vimos como podemos incluirlo en nuestros codigos, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50