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_hEn 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_hEl archivo de encabezado Y.H se da a continuación:
#ifndef y_hAquí, 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.