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