文章目录

  • 先看一个需求
  • 头文件基本概念
  • 工作原理图
  • 头文件快速入门
  • 头文件的注意事项和细节说明


先看一个需求

在实际的开发中,我们往往需要在不同的文件中,去调用其它文件的定义的函数,比如 hello.c 中,去使用 myfuns.c 文件中的函数,如何实现? -> 头文件

头文件基本概念

1)头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件: 程序员编写的头文件和 C 标准库自带的头文件
2)在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。前面我们已经看过 stdio.h 头文件,它是 C 标准库自带的头文件
3)#include 叫做文件包含命令,用来引入对应的头文件(.h 文件)。#include 也是 C 语言预处理命令的一种。#include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源 文件,这与复制粘贴的效果相同。但是我们不会直接在源文件中复制头文件的内容,因为这么做很容易出错, 特别在程序是由多个源文件组成的时候。
4)建议把所有的常量、宏、系统全局变量和函数原型写在头文件中,在需要的时候随时引用这些头文件

工作原理图

使用头文件的示意图

程序所需头文件及结构体的定义Java 编程中的头文件是什么_c语言

头文件快速入门

说明:头文件快速入门-C 程序相互调用函数,我们将 cal 声明到文件 myFun.h , 在 myFun.c 中定义 cal 函数, 当其它文件需要使用到 myFun.h 声明 的函数时,可以#include 该头文件,就可以使用了.

1)定义myFun.h 在里面声明函数

//声明函数 

int myCal(int n1, int n2, char oper);

void salHello();

2)myFun.c

#include<stdio.h>

int myCal(int n1, int n2, char oper) { 
	//定义一个变量 res ,保存运算的结果 
	double res = 0.0; 
	switch(oper) { 
		case '+' : 
			res = n1 + n2; 
			break; 
		
		case '-': 
			res = n1 - n2; 
			break; 
		
		case '*': 
			res = n1 * n2; 
			break; 
		
		case '/': 
			res = n1 / n2; 
			break; 
		
		default : 
			printf("你的运算符有误~"); 
		}
		
	printf("\n%d %c %d = %.2f\n", n1, oper, n2, res); 
	return res;	
}


void sayHello() { 
	//定义函数 
	printf("say Hello"); 
}

3)hello.c

#include <stdio.h>
#include <stdlib.h>
#include "myfun.h" 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void main() {
	//使用 myCal 完成计算任务 
	int n1 = 10; 
	int n2 = 50; 
	char oper = '-'; 
	double res = 0.0; 
	//调用 myfun.c 中定义的函数 myCal 
	
	res = myCal(n1, n2, oper); 
	printf("\nres=%.2f", res);
		
	sayHello();
}

程序所需头文件及结构体的定义Java 编程中的头文件是什么_c++_02


注意,如果要是做这个类型的练习,要在dev C++ 新建项目的模式,否则会出现 undefined reference to WinMain'的问题

程序所需头文件及结构体的定义Java 编程中的头文件是什么_visual studio_03

头文件的注意事项和细节说明

1) 引用头文件相当于复制头文件的内容
2)源文件的名字 可以不和头文件一样,但是为了好管理,一般头文件名和源文件名一样.
3)C 语言中 include <> 与 include “” 的区别 include <>:引用的是编译器的类库路径里面的头文件,用于引用系统头文件。 include “”:引用的是你程序目录的相对路径中的头文件,如果在程序目录没有找到引用的头文件则到编译器的 类库路径的目录下找该头文件,用于引用用户头文件。 所以:* 引用 系统头文件,两种形式都会可以,include <> 效率高 * 引用 用户头文件,只能使用 include “”
4)一个 #include 命令只能包含一个头文件,多个头文件需要多个 #include 命令 5)同一个头文件如果被多次引入,多次引入的效果和一次引入的效果相同,因为头文件在代码层面有防止重复引 入的机制 [举例]
6)在一个被包含的文件(.c)中又可以包含另一个文件头文件(.h)
7)不管是标准头文件,还是自定义头文件,都只能包含变量和函数的声明,不能包含定义,否则在多次引入时会 引起重复定义错误(!!!)