C语言具有许多库,这些库包括预定义的函数以使编程更容易。在C语言中,头文件包含一组预定义的标准库函数。通过在C预处理指令“ #include”中包含头文件,从而在程序中使用头文件的请求。所有的头文件都有一个扩展名“ .h” 。通过包含头文件,我们可以在程序中使用其内容。
C++还为用户提供了多种功能,其中的一项功能包含在头文件中。在C++中,所有头文件都可以以“ .h”扩展名结尾,也可以不以结尾,但在C语言中,所有头文件必须以“ .h”扩展名结尾。
头文件包含:
- 函数定义
- 数据类型定义
- 巨集
它通过在预处理程序指令“ #include”的帮助下将它们导入程序中来提供上述功能。这些预处理器指令用于指示编译器在编译之前需要处理这些文件。
在C程序中,必须包含头文件,该头文件分别代表标准输入和用于分别借助scanf()和printf()函数进行输入的输出。
在C++程序中具有头文件它代表分别用于借助“ cin”和“ cout”进行输入的输入和输出流。
头文件有2种类型:
- 预先存在的头文件:在C / C++编译器中已经可用的文件,我们只需要导入它们即可。
- 用户定义的头文件:这些文件由用户定义,可以使用“ #include”导入。
句法:
#include
or
#include "filename.h"
无论是预定义的头文件还是用户定义的头文件,我们都可以使用上述两种语法之一在程序中包含头文件。 “ #include”预处理器负责指示编译器在编译之前需要处理头文件,并且包括所有必需的数据类型和函数定义。
注意:我们不能在任何程序中两次包含相同的头文件。
创建自己的头文件:
无需编写大型复杂的代码,我们可以创建自己的头文件并将其包含在程序中以在需要时使用它。它增强了代码功能和可读性。以下是创建我们自己的头文件的步骤:
- 编写您自己的C / C++代码,并使用“ .h”扩展名保存该文件。下面是头文件的图示:
// Function to find the sum of two // numbers passed int sumOfTwoNumbers(int a, int b) { return (a + b); }
- 如下所示,在C / C++程序中将头文件包含“ #include” :
// 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; }
- 以下是上述程序的输出:
包括多个头文件:
您可以在程序中使用各种头文件。当头文件在程序中包含两次时,编译器将对该头文件的内容进行两次处理。这会导致程序中的错误。为消除此错误,使用了条件预处理器指令。
句法:
#ifndef HEADER_FILE_NAME
#define HEADER_FILE_NAME
the entire header file
#endif
该构造称为包装器“ #ifndef” 。当再次包含标头时,条件将变为false,因为已定义HEADER_FILE_NAME 。预处理器将跳过文件的全部内容,而编译器将不会两次看到它。
有时,根据程序的要求包括几个不同的头文件是必不可少的。为此,使用了多个条件。
句法:
#if SYSTEM_ONE
#include "system1.h"
#elif SYSTEM_TWO
#include "system2.h"
#elif SYSTEM_THREE
....
#endif
标准头文件及其用途:
- #include
: 用于使用函数scanf()和printf()进行输入和输出操作。 - #include
: 使用cin和cout用作输入和输出流。 - #include < 字符串.h>:用于执行与字符串相关的各种功能,例如strlen(),strcmp(),strcpy(),size()等。
- #include
: 用于执行数学运算,例如sqrt(),log2(),pow()等。 - #include
: 用于访问set()和setprecision()函数以限制变量中的小数位。 - #include
: 用于执行信号处理功能,例如signal()和raise() 。 - #include
: 用于执行标准参数函数,例如va_start()和va_arg() 。它也用于指示可变长度参数列表的开始,并分别从程序中的可变长度参数列表中获取参数。 - #include
: 用于执行错误处理操作,如errno() , strerror() , perror()等。 - #include
: 用于控制数据从文件中读取作为输入,并控制数据写入文件中作为输出。 - #include
: 用于执行与date()和time()相关的功能,例如setdate()和getdate()。它还用于修改系统日期并分别获取CPU时间。 - #include
: 它包含一组与浮点值相关的各种依赖于平台的常量。这些常量由ANSI C提出。它们使程序更具可移植性。此头文件中包含的常量的一些示例包括-e(指数),b(基数/基数)等。 - #include
: 它确定各种变量类型的各种属性。此标头中定义的宏限制了各种变量类型(例如char , int和long)的值。这些限制指定变量不能存储超出这些限制的任何值,例如,无符号字符最多可以存储255 。
下面是说明头文件用法的程序:
// C program to illustrate the use of
// header file in C
#include
#include
#include
#include
// 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;
}
Using math.h, The value is: 729
Using stdlib.h, the string to long int: 12345
Using string.h, the strings s2 and s3: ForGeeks ForGeeks