Consulta sobre C*: #define, #ifndef, #include

Consulta sobre C*: #define, #ifndef, #include

de Daniel Agustin Freire Caporale -
Número de respuestas: 2

Hola,

Consulto por acá un par de dudas generales, sobre el funcionamiento de C*:

1) Entiendo que #include heap.h, por ejemplo, copia todo lo que está dentro de heap.h en el .h desde el que hago el #include. La pregunta es: ¿por qué no se hace #include heap.cpp desde el .cpp donde se hizo el include? ¿Es un tema que se resuelve en tiempo de compilación? (es decir, al compilar, las funciones del cpp van a buscar a heap.cpp las funciones que necesite?)

2) El switch _HEAP_H para #ifndef, ¿dónde se define? ¿Queda implícito dado que el .h se llama heap.h? O sea, si se llamara nombre.h, ¿debería hacer #ifndef _NOMBRE_H? ¿o dónde se define esa "bandera"?

Tengo algunas consultas más, pero arranco por acá, porque capaz con esto se aclaran las demás. He googleado al respecto, pero no me termina de quedar claro el tema. Capaz es muy básico.

Disculpas por la molestia y, desde ya, muchas gracias!



En respuesta a Daniel Agustin Freire Caporale

Re: Consulta sobre C*: #define, #ifndef, #include

de Agustin Lemes De Los Santos -

Hola! Te respondere lo que se. Y si no lo se, aclaro que supongo que funciona asi.

https://es.wikipedia.org/wiki/Preprocesador_de_C

Ese link esta muy claro sobre el tema. si no funciona busca: "Preprocesador de C"

1- Supongo: Pq incluir el .h? supongo q pq C se hizo de esa manera para mantener un mejor orden y/o a lo mejor por algun depurador q al funcionar solo le alcanza que este definida la cabezera osea el .h, y no necesite el .cpp para funcionar. Pero que de error cuando uses alguna funcion del .h y no este definida en el .cpp.

Pascal, de prog1, tambien tenia #include, pero era asi: 

$INCLUDE tarea.pas 

incluia directamente el archivo .pas con el cual trabajamos.

el pq no lo se :C.

2- Lo podes definir con #define naranja_h, ahora donde queda el naranja_h? y supongo q en una lista, donde le preguntas a esa lista si ya esta definido el naranja_h con el #ifndef naranja_h, y el nombre es por conveniencia, creas un archivo que se llame manzana.h, y lo mas logico seria definir como manzana_h o MANZANA_H o _MANZAMA_H, si ves se usa la mayuscula, y no perdes tiempo con el nombre, y sabes q es el unico archivo definido con ese nombre, pq si hay otro archivo con la misma definicion ya incluido, a este no lo incluira.

En respuesta a Agustin Lemes De Los Santos

Re: Consulta sobre C*: #define, #ifndef, #include

de Daniel Agustin Freire Caporale -

Hola, Agustín, 


Muchísimas gracias por tu ayuda. Excelente el link que me pasaste!

Creo que entendí el punto 2, que era el que tenía más dudas. ¡Te pasaste!

Igualmente, seguiré leyendo sobre el tema!


Saludos!