在平时工作中看到前人写的一些C头文件,很有感触。自己在写的时候也遇到了很多问题,比如重复引用导致宏或者常量重复定义,不知道该使用双引号还是使用尖括号引用等问题,决定先总结一下。做个笔记,随时复习。o( ̄▽ ̄)ブ
C语言头文件
C语言头文件一般包含了函数声明,宏定义,常量等代码。我们在使用#include引用头文件。可以被多个c文件引用,避免了重复代码,减少了错误。让代码更加规范。
A simple practice in C 或 C++ 程序中,建议把所有的常量、宏、系统全局变量和函数原型写在头文件中,在需要的时候随时引用这些头文件。
头文件引用
系统已经存在了很多头文件,当然,我们也可以自己编写。c文件引用头文件相当于直接复制到文件中,但是这样多个文件要使用这段代码的时候,就产生了很多重复代码,也不方便管理。引用存在两种引用形式。一种#include "cylong.h"
,一种是 #include <cylong.h>
。那这两种方式有什么区别呢?我们平时使用的时候又怎么用呢?
1 |
这种形式是引用系统文件,在系统目录下搜索此头文件。比如#include <stdio.h>
等
1 |
这种形式是引用用户文件,优先在当前目录下搜索此头文件,然后再去系统目录下搜索此头文件。
所以无论是我们自己写的头文件还是引用系统头文件,使用#include "cylong.h"
都不会出错。但是这样并不标准,标准规定,包含标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。
避免重复引用
经常在写代码的时候,不经意间,我们会引用同一个头文件两次,那么我们会遇到很多重复定义的错误,为了避免这样的事情发生,我们需要将头文件里的内容放到编译宏中
1 |
|
当我们第一次引用的时候,未定义CYLONG_H
宏,所以会继续编译下面的代码,当第二次引用的时候,#ifndef CYLONG_H
为假,就不会编译下面的代码了,自然不会存在重复定义等问题。
公共头文件
在程序代码中,经常很多c文件会引用一些相同的头文件,这个时候,我们就可以定义一个包含这些相同头文件的头文件common.h
。例如:
1 |
然后我们就可以在每个需要的c文件中引用这个common.h
头文件。但是需要注意的是,这个文件里除了头文件引用以外,建议不要再写其他的代码。