C语言头文件使用总结


在平时工作中看到前人写的一些C头文件,很有感触。自己在写的时候也遇到了很多问题,比如重复引用导致宏或者常量重复定义,不知道该使用双引号还是使用尖括号引用等问题,决定先总结一下。做个笔记,随时复习。o( ̄▽ ̄)ブ

C语言头文件

C语言头文件一般包含了函数声明,宏定义,常量等代码。我们在使用#include引用头文件。可以被多个c文件引用,避免了重复代码,减少了错误。让代码更加规范。
A simple practice in C 或 C++ 程序中,建议把所有的常量、宏、系统全局变量和函数原型写在头文件中,在需要的时候随时引用这些头文件。

头文件引用

系统已经存在了很多头文件,当然,我们也可以自己编写。c文件引用头文件相当于直接复制到文件中,但是这样多个文件要使用这段代码的时候,就产生了很多重复代码,也不方便管理。引用存在两种引用形式。一种#include "cylong.h",一种是 #include <cylong.h>。那这两种方式有什么区别呢?我们平时使用的时候又怎么用呢?

1
#include <cylong.h>

这种形式是引用系统文件,在系统目录下搜索此头文件。比如#include <stdio.h>

1
#include "cylong.h"

这种形式是引用用户文件,优先在当前目录下搜索此头文件,然后再去系统目录下搜索此头文件。

所以无论是我们自己写的头文件还是引用系统头文件,使用#include "cylong.h"都不会出错。但是这样并不标准,标准规定,包含标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。

避免重复引用

经常在写代码的时候,不经意间,我们会引用同一个头文件两次,那么我们会遇到很多重复定义的错误,为了避免这样的事情发生,我们需要将头文件里的内容放到编译宏中

1
2
3
4
5
6
7
#ifndef CYONG_H
#define CYLONG_H

void fun ();
// some codes

#endif CYLONG_H

当我们第一次引用的时候,未定义CYLONG_H宏,所以会继续编译下面的代码,当第二次引用的时候,#ifndef CYLONG_H为假,就不会编译下面的代码了,自然不会存在重复定义等问题。

公共头文件

在程序代码中,经常很多c文件会引用一些相同的头文件,这个时候,我们就可以定义一个包含这些相同头文件的头文件common.h。例如:

1
2
3
4
5
6
7
8
#ifndef COMMON_H
#define COMMON_H

#include <stdio.h>
#include "cylong.h"
#include "lsyu.h"

#endif COMMON_H

然后我们就可以在每个需要的c文件中引用这个common.h头文件。但是需要注意的是,这个文件里除了头文件引用以外,建议不要再写其他的代码。

参考资料

C 头文件 | 菜鸟教程
C++ #include—尖括号和双引号的区别 | C语言中文网


文章标题:C语言头文件使用总结
文章作者:cylong
文章链接:http://www.cylong.com/blog/2018/06/25/c-header/
有问题或者建议欢迎在下方评论。欢迎转载、引用,但希望标明出处,感激不尽(●’◡’●)