c++ - que - incluir un archivo c en otro
¿Por qué se utilizan#ifndef y#define en los archivos de encabezado de C++? (3)
He estado viendo un código como este por lo general en el inicio de los archivos de encabezado:
#ifndef HEADERFILE_H
#define HEADERFILE_H
Y al final del archivo está
#endif
¿Cuál es el propósito de esto?
Esos se llaman guardias #include .
Una vez que se incluye el encabezado, comprueba si se define un valor único (en este caso, HEADERFILE_H
). Luego, si no está definido, lo define y continúa al resto de la página.
Cuando el código se incluye de nuevo, el primer ifndef
falla, lo que resulta en un archivo en blanco.
Eso evita la doble declaración de cualquier identificador, como tipos, enumeraciones y variables estáticas.
Esto evita la inclusión múltiple del mismo archivo de encabezado varias veces.
#ifndef __COMMON_H__
#define __COMMON_H__
//header file content
#endif
Supongamos que ha incluido este archivo de encabezado en varios archivos. Así que la primera vez que __COMMON_H__ no se define, se definirá y se incluirá el archivo de encabezado.
La próxima vez que se defina __COMMON_H__, no se incluirá de nuevo.
#ifndef <token>
/* code */
#else
/* code to include if the token is defined */
#endif
#ifndef
comprueba si el token dado ha sido #defined
antes en el archivo o en un archivo incluido; si no, incluye el código entre él y el #else
cierre o, si no hay #else
está presente, la instrucción #endif
. #ifndef
se usa a menudo para hacer que los archivos de encabezado sean idempotentes definiendo un token una vez que se haya incluido el archivo y verificando que el token no se haya establecido al principio de ese archivo.
#ifndef _INCL_GUARD
#define _INCL_GUARD
#endif