DUDA LIBRERIAS

DUDA LIBRERIAS

de Ignacio Javier Gonzalez Ubiedo -
Número de respuestas: 4

Buenas, tengo una duda en cuanto a la creación de una libreria. No se si se dio en el curso o no, pero para crear una tengo entendido que se hace algo así:

#ifndef _LIBRERIA

#define _LIBRERIA

....definicion de funciones....

#include "libreria.c"

#endif

Se lo que significa cada instruccion por separado, pero no entiendo bien como es que funcionan en conjunto para crear la libreria (me estoy refiriendo a las primeras dos instrucciones y la ultima)

Si alguien que sepa del tema me explica eso se agradecería muchisimo

En respuesta a Ignacio Javier Gonzalez Ubiedo

Re: DUDA LIBRERIAS

de Gregory Randall -
son instrucciones para el preprocesador C
#ifndef TOTO quiere decir "si TOTO no está definido"
#define TOTO quiere decir "define TOTO "
#endif cierra la zona abierta con #ifndef

lo que está entre #ifndef y #endif aparece en el codigo c si TOTO no fue definido, y no aparece si TOTO está ya definido
En respuesta a Gregory Randall

Re: DUDA LIBRERIAS

de Ignacio Javier Gonzalez Ubiedo -

Claro si, eso es lo que ya sabia. Lo que no entiendo es como eso crea una libreria

En respuesta a Ignacio Javier Gonzalez Ubiedo

Re: DUDA LIBRERIAS

de Leopoldo Agorio -
Creo que la lectura de este resultado de una búsqueda en google puede ayudar:
https://stackoverflow.com/questions/1653958/why-are-ifndef-and-define-used-in-c-header-files

Si la barrera idiomática no molesta lo explican mejor que yo, pero la idea es que si vos pusieras #include de bib1.h dos veces (por equivocación o por algún otro motivo como incluir bib2.h y bib1.h pero que bib2.h en sí ya incluya bib1.h) aparecerían problemas de doble decaración de tipos y funciones.

La idea entonces es que la segunda vez que se trata de incluir el .h, el ifndef va a evitar que lo hagas, precisamente porque la primera vez que se realizó la inclusión, se definió la bandera _LIBRERIA en tu caso.

Esto entonces es una forma de asegurar la inclusión única del .h en cuestión en los diferentes archivos que lo usan.