C语言:头文件
这是很基础的教程,我只是写给自己看,作为一个学习笔记记录一下,如果正在阅读的你觉得简单,请不要批评,可以关掉选择离开
如何学好一门编程语言
- 掌握基础知识,为将来进一步学习打下良好的基础。
- 上机实践,通过大量的例题学习怎么设计算法,培养解题思路。
- 养成良好的编码习惯,注释一定要写,要不然保你一周后自己写的代码都不认识了
头文件
头文件是扩展名为 .h 的文件,包含了函数声明和宏定义,能够被其他源文件(***.c)引用,一般使用 #include ***.h 来引用头文件。
引用头文件相当于复制头文件的内容,但是我们不会直接在源文件中复制头文件的内容,因为这么做很容易出错,特别在程序是由多个源文件组成的时候。
优秀程序员的习惯:
将 全局变量、宏定义、函数声明 放在.h文件中
将 函数定义 和 算法逻辑 放在.c文件中
头文件有两种类型:
- 用户的头文件: #include "file" // 导入用户头文件
- 编译器头文件: #include <file> // 导入系统头文件
引用头文件的操作
如果您有一个头文件 header.h 和程序 program.c,如下:

char *test (void);

int x; #include "header.h" int main (void) { puts (test ()); }
编译器会看到如下代码信息:
int x; char *test (void); int main (void){ puts (test ()); }
如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中,如下:
#ifndef HEADER_FILE // 如果没有初始化 HEADER_FILE #define HEADER_FILE #endif
配合#if预处理指令来导入头文件
#if SYSTEM_1 # include "system_1.h" #elif SYSTEM_2 # include "system_2.h" #elif SYSTEM_3 ... #endif
但是如果头文件比较多的时候,这么做是很不妥当的,预处理器使用宏来定义头文件的名称,我们可以导入宏名称 来代替:
#define SYSTEM_H "system_1.h" ... #include SYSTEM_H
SYSTEM_H 会扩展,预处理器会查找 system_1.h,就像 #include 最初编写的那样。SYSTEM_H 可通过 -D 选项被您的 Makefile 定义。
在有多个 .h 文件和多个 .c 文件的时候,往往我们会用一个 global.h 的头文件来包括所有的 .h 文件,然后在除 global.h 文件外的头文件中 包含 global.h 就可以实现所有头文件的包含,同时不会乱。方便在各个文件里面调用其他文件的函数或者变量。
#ifndef _GLOBAL_H #define _GLOBAL_H #include <fstream> #include <iostream> #include <math.h> #include <Config.h>
参考