C 语言中的头文件

C 语言中的头文件

❮ 上一节

下一节 ❯

C 语言中的头文件

#include 预处理器指令用于将一个文件(通常称为头文件)中函数、常量和宏等的定义引入另一个 C 代码中。头文件的扩展名为".h",您可以从中引入一个或多个预定义函数、常量、宏等的前向声明。C 语言提供头文件有助于程序的模块化设计。

系统头文件

C 编译器软件捆绑了许多预编译的头文件。这些文件称为系统头文件。一个著名的例子是"stdio.h",几乎每个 C 程序都包含这个头文件。

每个系统头文件都包含许多实用函数。这些函数通常被称为库函数。例如,执行 IO 操作所需的 printf() 和 scanf() 函数就是"stdio.h"头文件中提供的库函数。

加载一个或多个头文件的预处理语句始终位于 C 代码的开头。我们从一个基本的"Hello World"程序开始学习 C 语言编程,首先要包含"stdio.h"文件。-

#include

int main() {

/* 我的第一个 C 语言程序 */

printf("Hello, World!

");

return 0;

}

C 预处理指令 #include 本质上是请求编译器加载特定头文件的内容,以便程序可以使用它们。

C 或 C++ 程序中的常见做法是将所有常量、宏、系统全局变量和函数原型保存在头文件中,并在需要时包含该头文件。

C 语言中包含头文件的语法

使用 #include 指令 加载头文件。其使用方法如下:

#include

如果头文件位于 system/default 目录中,则将其名称放在尖括号内。

#include "filename.h"

如果头文件位于与源文件相同的目录中,则将用户定义或非标准头文件的名称放在双引号内。

#include 指令的工作原理是指示 C 预处理器 在继续处理当前源文件的其余部分之前,先扫描指定的文件作为输入。预处理器的输出包含已生成的输出、包含文件的输出以及 #include 指令后文本的输出。

C 语言中的标准头文件

典型的 C 编译器捆绑了许多预编译的头文件。每个头文件都包含一组预定义的标准库函数。"#include"预处理指令用于在程序中包含扩展名为".h"的头文件。

下表列出了 C 语言中的一些头文件 -

头文件

描述

函数/宏/变量

stdio.h

输入/输出函数

scanf()、printf()、fopen()、FILE

stdlib.h

通用函数

atoi()、atof()、malloc()

math.h

数学函数

sin()、cos()、pow()、sqrt()

string.h

字符串函数

strcpy()、strlen()、strcat()

ctype.h

字符处理函数

isalpha()、isupper()、 ispunct()

time.h

日期和时间函数

asctime()、gmtime()、mktime()

float.h

浮点类型的限制

FLT_ROUNDS、FLT_RADIX

limits.h

基本类型的大小

CHAR_BIT、CHAR_MIN、CHAR_MAX

wctype.h

用于确定宽字符数据中包含的类型的函数。

iswalpha()、iswctype()、iswupper()

示例

以下代码使用了一些头文件中的库函数 -

#include

#include

#include

#include

int main() {

char s1[20] = "53875";

char s2[10] = "Hello";

char s3[10] = "World";

int res;

res = pow(8, 4);

printf("Using math.h, The value is : %d

", res);

long int a = atol(s1);

printf("Using stdlib.h, the string to long int: %d

", a);

strcpy(s2, s3);

printf("Using string.h, the strings s2 and s3: %s %s

", s2, s3);

return 0;

}

输出

运行此代码时,将产生以下输出 -

Using math.h, The value is: 4096

Using stdlib.h, the string to long int: 53875

Using string.h, the strings s2 and s3: World World

用户定义的头文件

我们可以在 C 程序中添加一个或多个用户定义的函数(除了 main() 函数)。但是,如果代码包含大量函数定义,将它们放在一个以".c"为扩展名的源代码文件中会变得难以处理和维护。因此,类似性质的函数/宏/变量会被集中到头文件中,像包含标准头文件一样包含它们,并调用其中定义的函数。

用户定义的头文件通常与 C 源代码位于同一目录中。

使用 CodeBlocks IDE 创建和使用头文件的步骤如下所述。启动 CodeBlocks IDE 并创建一个新的控制台应用程序 -

为项目选择一个合适的名称。在文件夹中添加一个新的空文件,并将以下代码保存为 "myheader.h" -

#ifndef MYHEADER_H

#define MYHEADER_H

void sayHello();

int add(int a, int b);

double area(double radius);

int length(char *x);

#endif

如果一个头文件被包含两次,编译器将对其内容进行两次处理,从而导致错误。防止这种情况的标准方法是将文件的全部实际内容用 #ifndef 指令 的条件定义括起来,这被称为 头文件保护。

头文件保护会检查头文件是否已定义。如果未定义,则表示该文件是首次被包含,并且会执行保护内的代码。

头文件包含要包含的函数的前向声明或原型。这些函数的实际定义位于与头文件同名的".c"文件中。

创建头文件

将以下代码保存在"myheader.c"文件中 -

#include

#include

#include

#define PI 3.142

void sayHello(){

printf("Hello World

");

}

int add(int a, int b){

int result;

result = a+b;

return result;

}

double area(double radius){

double areaofcircle = PI*pow(radius, 2);

return areaofcircle;

}

int length(char *x){

return strlen(x);

}

使用头文件

现在我们可以在程序中包含"myheader.h"文件并调用上述任何函数。将以下代码保存为项目文件夹中的"main.c"。

#include

#include "myheader.h"

int main() {

int p = 10, q = 20;

double x = 5.25;

sayHello();

printf("sum of %d and %d is %d

", p, q, add(p,q));

printf("Radius: %lf Area: %lf", x, area(x));

return 0;

}

构建项目并运行"main.c",可以从 CodeBlocks IDE 的运行菜单或命令行运行,以获得以下结果 -

Hello World

sum of 10 and 20 is 30

Radius: 5.250000 Area: 86.601375

计算包含

有时需要从多个不同的头文件中选择一个包含到程序中。例如,它们可能指定在不同类型的操作系统上使用的配置参数。您可以使用一系列条件语句来实现这一点,如下所示 -

#if SYSTEM_1

# include "system_1.h"

#elif SYSTEM_2

# include "system_2.h"

#elif SYSTEM_3

...

#endif

但随着文件规模的扩大,它变得繁琐乏味。为此,预处理器提供了使用宏来指定头文件名称的功能。这被称为计算包含。您无需将头文件名称作为 #include 的直接参数,只需在其中输入一个宏名称即可。-

#define SYSTEM_H "system_1.h"

...

#include SYSTEM_H

SYSTEM_H 将被扩展,预处理器将查找 system_1.h,就像 #include 最初就是这样编写的一样。SYSTEM_H 可以在 Makefile 中使用 -D 选项来定义。

❮ 上一节

下一节 ❯

相关推荐

原神雷用什么克制 雷元素在游戏中克制哪些元素
王者荣耀小乔全皮肤多少钱
百特365平台可靠吗

王者荣耀小乔全皮肤多少钱

📅 07-24 👀 1069
亚索腥红之月皮肤价格走势(2025年手感体验评价)
beat365中国在线体育

亚索腥红之月皮肤价格走势(2025年手感体验评价)

📅 06-28 👀 5529
貂蝉活了多少岁?
百特365平台可靠吗

貂蝉活了多少岁?

📅 07-21 👀 727