El lenguaje C tiene numerosas bibliotecas que incluyen funciones predefinidas para facilitar la programación. En lenguaje C, los archivos de encabezado contienen el conjunto de funciones de biblioteca estándar predefinidas. Solicita usar un archivo de encabezado en su programa incluyéndolo con la directiva de preprocesamiento de C «#include» . Todos los archivos de encabezado tienenuna extensión ‘.h’ . Al incluir un archivo de encabezado, podemos usar su contenido en nuestro programa.
C++ también ofrece a sus usuarios una variedad de funciones, una de las cuales se incluye en los archivos de encabezado. En C++, todos los archivos de encabezado pueden o no terminar con la extensión “.h” , pero en C, todos los archivos de encabezado necesariamente deben terminar con laextensión “.h” .
Un archivo de encabezado contiene:
- Definiciones de funciones
- Definiciones de tipos de datos
- macros
Ofrece las funciones anteriores al importarlas al programa con la ayuda de una directiva de preprocesador «#include» . Estas directivas de preprocesador se utilizan para indicar al compilador que estos archivos deben procesarse antes de la compilación.
En el programa C , necesariamente debe contener el archivo de encabezado que representa la entrada y salida estándar que se usa para tomar la entrada con la ayuda de la función scanf() y printf() respectivamente.
En C++ , el programa tiene el archivo de encabezado que representa el flujo de entrada y salida que se usa para tomar la entrada con la ayuda de «cin» y «cout» , respectivamente.
Hay 2 tipos de archivos de cabecera:
- Archivos de encabezado preexistentes: archivos que ya están disponibles en el compilador C/C++, solo necesitamos importarlos.
- Archivos de encabezado definidos por el usuario: estos archivos los define el usuario y se pueden importar usando «#include» .
Sintaxis:
#include <filename.h> or #include "filename.h"
Podemos incluir archivos de encabezado en nuestro programa usando una de las dos sintaxis anteriores, ya sea un archivo de encabezado predefinido o definido por el usuario. El preprocesador “#include” es responsable de indicarle al compilador que el archivo de encabezado debe procesarse antes de la compilación e incluye todas las definiciones de funciones y tipos de datos necesarios.
Nota: No podemos incluir el mismo archivo de encabezado dos veces en ningún programa.
Crea tu propio Archivo de Cabecera:
En lugar de escribir un código grande y complejo, podemos crear tus propios archivos de cabecera e incluirlos en nuestro programa para usarlos cuando queramos. Mejora la funcionalidad y la legibilidad del código. A continuación se muestran los pasos para crear nuestro propio archivo de encabezado:
- Escriba su propio código C/C++ y guarde ese archivo con la extensión “.h” . A continuación se muestra la ilustración del archivo de encabezado:
CPP
// Function to find the sum of two // numbers passed int sumOfTwoNumbers(int a, int b) { return (a + b); }
- Incluya su archivo de encabezado con «#include» en su programa C/C++ como se muestra a continuación:
CPP
// C++ program to find the sum of two // numbers using function declared in // header file #include "iostream" // Including header file #include "sum.h" using namespace std; // Driver Code int main() { // Given two numbers int a = 13, b = 22; // Function declared in header // file to find the sum cout << "Sum is: " << sumOfTwoNumbers(a, b) << endl; }
A continuación se muestra la salida del programa anterior:
Incluir varios archivos de encabezado:
puede usar varios archivos de encabezado en un programa. Cuando un archivo de encabezado se incluye dos veces dentro de un programa, el compilador procesa el contenido de ese archivo de encabezado dos veces. Esto conduce a un error en el programa. Para eliminar este error, se utilizan directivas de preprocesador condicionales.
Sintaxis:
#ifndef HEADER_FILE_NAME #define HEADER_FILE_NAME the entire header file #endif
Esta construcción se llama envoltura “#ifndef” . Cuando el encabezado se incluya nuevamente, el condicional se volverá falso, porque HEADER_FILE_NAME está definido. El preprocesador omitirá todo el contenido del archivo y el compilador no lo verá dos veces.
A veces es esencial incluir varios archivos de encabezado diversos según los requisitos del programa. Para esto, se utilizan múltiples condicionales.
Sintaxis:
#if SYSTEM_ONE #include "system1.h" #elif SYSTEM_TWO #include "system2.h" #elif SYSTEM_THREE .... #endif
Archivos de encabezado estándar y sus usos:
- #include<stdio.h>: Se usa para realizar operaciones de entrada y salida usando las funciones scanf() y printf() .
- #include<iostream>: Se utiliza como flujo de Entrada y Salida usando cin y cout.
- #include<string.h>: se utiliza para realizar varias funcionalidades relacionadas con la manipulación de strings como strlen() , strcmp() , strcpy() , size(), etc.
- #include<math.h>: se usa para realizar operaciones matemáticas como sqrt() , log2() , pow() , etc.
- #include<iomanip.h>: Se utiliza para acceder a las funciones set() y setprecision() para limitar los lugares decimales en las variables.
- #include<signal.h>: se usa para realizar funciones de manejo de señales como signal() y raise() .
- #include<stdarg.h>: se usa para realizar funciones de argumento estándar como va_start() y va_arg() . También se utiliza para indicar el inicio de la lista de argumentos de longitud variable y para obtener los argumentos de la lista de argumentos de longitud variable en el programa, respectivamente.
- #include<errno.h>: se utiliza para realizar operaciones de manejo de errores como errno() , strerror() , perror() , etc.
- #include<fstream.h>: se utiliza para controlar los datos que se leerán de un archivo como entrada y los datos que se escribirán en el archivo como salida.
- #include<time.h>: se usa para realizar funciones relacionadas con date() y time() como setdate() y getdate() . También se utiliza para modificar la fecha del sistema y obtener la hora de la CPU respectivamente.
- #include<float.h>: contiene un conjunto de varias constantes dependientes de la plataforma relacionadas con valores de punto flotante. Estas constantes son propuestas por ANSI C. Permiten hacer que los programas sean más portátiles. Algunos ejemplos de constantes incluidas en este archivo de encabezado son: e (exponente), b (base/base), etc.
- #include<limits.h>: Determina varias propiedades de los distintos tipos de variables. Las macros definidas en este encabezado limitan los valores de varios tipos de variables como char , int y long . Estos límites especifican que una variable no puede almacenar ningún valor más allá de estos límites, por ejemplo, un carácter sin signo puede almacenar hasta un valor máximo de 255 .
- #include<assert.h>: contiene información para agregar diagnósticos que ayudan a la depuración del programa.
- #include<ctype.h>: contiene prototipos de funciones para funciones que prueban caracteres para ciertas propiedades, y también prototipos de funciones para funciones que se pueden usar para convertir letras mayúsculas en letras minúsculas y viceversa.
- #include<locale.h>: contiene prototipos de funciones y otra información que permite modificar un programa para la configuración regional actual en la que se ejecuta. Permite que el sistema informático maneje diferentes convenciones para expresar datos como horas, fechas o grandes números en todo el mundo.
- #include<setjmp.h>: contiene prototipos de funciones para funciones que permiten pasar por alto la llamada de función habitual y la secuencia de retorno.
- #include<stddef.h>: contiene definiciones de tipos comunes utilizadas por C para realizar cálculos.
Archivo de encabezado no estándar y sus usos:
- #include<bits/stdc++.h>: contiene toda la biblioteca estándar de los archivos de encabezado mencionados anteriormente. Entonces, si lo incluye en su código, entonces no necesita incluir ningún otro archivo de encabezado estándar. Pero como es un archivo de encabezado no estándar de la biblioteca GNU C++, si intenta compilar su código con algún compilador que no sea GCC, podría fallar; por ejemplo, MSVC no tiene este encabezado. (Ver este artículo para más referencia)
Ejemplo de archivos de encabezado estándar:
a continuación se muestra el programa para ilustrar el uso del archivo de encabezado en C y C++:
C
// C program to illustrate the use of // header file in C #include <math.h> #include <stdio.h> #include <stdlib.h> #include <string.h> // Driver Code int main() { char s1[20] = "12345"; char s2[10] = "Geeks"; char s3[10] = "ForGeeks"; long int res; // Find the value of 9^3 using a // function in math.h library res = pow(9, 3); printf("Using math.h, " "The value is: %ld\n", res); // Convert a string to long long int // using a function in stdlib.h library long int a = atol(s1); printf("Using stdlib.h, the string"); printf(" to long int: %ld\n", a); // Copy the string s3 into s2 using // using a function in string.h library strcpy(s2, s3); printf("Using string.h, the strings" " s2 and s3: %s %s\n", s2, s3); return 0; }
C++
// C++ program to illustrate the use of // header file in C++ #include <iostream> using namespace std; #include <math.h> #include <stdlib.h> #include<string.h> // Driver Code int main() { char s1[20] = "12345"; char s2[10] = "Geeks"; char s3[10] = "ForGeeks"; long int res; // Find the value of 9^3 using a // function in math.h library res = pow(9, 3); cout<<"Using math.h, " "The value is: "<<res<<"\n"; // In C++, we need not have to include stdlib.h library // to convert a string to long long int // But for the same output as C, I add stdlib.h header file // In C++, iostream library do that thing long int a = atol(s1); cout<<"Using stdlib.h, the string"; cout<<" to long int: "<<a<<"\n"; // Copy the string s3 into s2 using // using a function in string.h library strcpy(s2, s3); cout<<"Using string.h, the strings" " s2 and s3: "<<s2<<s3<<"\n"; return 0; } //Code submitted by Susobhan Akhuli
Usando math.h, el valor es: 729
Usando stdlib.h, la string a long int: 12345
Usando string.h, las strings s2 y s3: ForGeeks ForGeeks
Ejemplo de archivo de encabezado no estándar <bits/stdc++.h>:
C++
// C++ program to illustrate the use of // non-standard bits/stdc++.h header file in C++ #include <bits/stdc++.h> using namespace std; // Driver Code int main() { char s1[20] = "12345"; char s2[10] = "Geeks"; char s3[10] = "ForGeeks"; long int res; // All the below function are mentioned in bits/stdc++.h // library Find the value of 9^3 res = pow(9, 3); cout << "Using bits/stdc++.h, " "The value is: " << res << "\n"; // Convert a string to long long int long int a = atol(s1); cout << "Using bits/stdc++.h, the string"; cout << " to long int: " << a << "\n"; // Copy the string s3 into s2 using strcpy(s2, s3); cout << "Using bits/stdc++.h, the strings" " s2 and s3: " << s2 << s3 << "\n"; return 0; } // Code submitted by Susobhan Akhuli
Producción:
Using bits/stdc++.h, The value is: 729 Using bits/stdc++.h, the string to long int: 12345 Using bits/stdc++.h, the strings s2 and s3: ForGeeksForGeeks