¿Por qué se usan #ifndef y #define en archivos de encabezado C ++

¿Por qué se usan #ifndef y #define en archivos de encabezado C ++
Los códigos C ++ pueden llegar a veces a veces y la repetición de ciertas declaraciones o funciones puede ocurrir. Tener múltiples funciones con nombres similares genera un error durante la ejecución del código y no proporciona a los usuarios la salida deseada. Para evitar que este tipo de errores tengan identificadores repetidos, como funciones, clase o variables, el Protector de cabeza se usan, que son #ifndef y #definir. Estos son derivados de C ++ que evitan que el contenido de un archivo de encabezado se use varias veces. Estos guardias se aseguran de que el contenido de un archivo de encabezado se use una vez en un archivo.

En este artículo, la razón para usar #ifndef y #definir Se discute los protectores de encabezado en su código.

¿Por qué se usan #ifndef y #define en archivos de encabezado C ++

En c ++, el #ifdef y #definir se utilizan como una instrucción para el compilador para proteger/proteger el uso múltiple de los archivos de encabezado. Por esa razón, también se les llama protector de cabeza. Hay una sintaxis específica que debe seguirse para usar #ifndef y #definir. Entonces, la sintaxis es que siempre #ifndef se usa, el usuario también debe finalizarlo utilizando #terminara si y entre estas declaraciones o archivos de encabezado se puede agregar:

Sintaxis

#ifndef file_h
#define file_h
// Código de declaración
#terminara si

En código C ++, #ifndef y #definir Identificar y prevenir la redeclaración de clases, enumeraciones, variables estáticas o cualquier otro identificador. Esto es útil en escenarios donde se crean múltiples clases/funciones y se llaman en programas. Porque muchas veces sucede cuando se diseña un código complejo con múltiples clases y objetos y los desarrolladores tienden a repetir ciertos identificadores en diferentes archivos. Por ejemplo, supongamos que un usuario ha creado dos archivos correlacionados i.mi archivo1.H y un archivo2.H y ha incluido el archivo1.h en el archivo2.H y viceversa.

Al hacer esto, se produce una repetición que causa recursividad. Para evitar esta recursividad si el usuario agrega #ifndef y #definir Archivos de encabezado, entonces estos encabezados instruirán al compilador que evite esta recursividad.

¿Qué es la recursividad en un código y cómo "#ifndef" y "#definir" Ayuda con la recursividad

La recursividad se refiere a la capacidad de una función que se incluirá varias veces en un código fuente. Tener recursividad en un código generará diferentes tipos de errores de compilación, como definiciones múltiples, redefinición de símbolos y más. Para evitar esta recursividad, usamos "#Ifndef" y "#definir" protector de cabeza.

Hagamos un seguimiento con un ejemplo sobre cómo "#Ifndef" y "#definir" previene la recursividad en un código. Supongamos que hay un archivo de encabezado "X.H " que incluye el archivo de encabezado "Y.H ", y el otro archivo principal "Y.H " incluye "X.H ". Esto se llama inclusión recursiva, y creará errores cuando compile el código. Para evitar esto, podemos usar #ifndef y #definir en X.H y Y.H como sigue:

El archivo de encabezado X.H se da a continuación:

#ifndef x_h
#Define X_H
#include "y.H "
// Contenido de archivo de encabezado restante
#terminara si

El archivo de encabezado Y.H se da a continuación:

#ifndef y_h
#Define Y_H
#Include "x.H "
// Contenido de archivo de encabezado restante
#terminara si

Aquí, X_H y Y_h son símbolos únicos definidos por #definir. La primera vez X.H está incluido, X_H no se definirá, por lo que el preprocesador lo definirá e incluirá Y.H. Cuando Y.H está incluido, Y_h no se definirá, por lo que el preprocesador lo definirá e incluirá X.H de nuevo. Sin embargo, esta vez, A_h se definirá, por lo que el preprocesador se saltará la inclusión de X.H.

De esta manera se evita la inclusión recursiva y el programa se puede compilar sin errores.

Conclusión

El #ifndef y #definir son conocidos como protector de cabeza para C ++ que se utilizan para prevenir/proteger la recursividad o la repetición de los identificadores. Los protectores de encabezado se utilizan para el preprocesamiento y es por eso que se usan dentro del .archivos h archivos (encabezado) y no en el principal .CPP Archivo (compilar). La sintaxis y el uso del protector del encabezado se discuten en las pautas mencionadas anteriormente.