一、相关概念

1、声明与定义

(1)声明是不产⽣生代码的东⻄

  • 函数原型
  • 变量声明
  • 结构声明
  • 宏声明
  • 枚举声明
  • 类型声明
  • inline函数

    (2)定义是产⽣生代码的东西

    二、头文件的作用

三、头文件的内容:(只能放声明)

  • 明示常量(宏定义):#defiene NUM 5
  • 宏函数 :
  • 函数声明(原型):
  • 结构声明:
  • 类型声明:
  • 枚举声明:

    四、注意事项

  • 在头文件里不要引用头文件,可能会出现循环引用的情况,编译器进入死循环。

  • 尽量先引用其他源文件的头文件,最后再引用自身源文件的头文件,防止出现未引用(定义、声明)先使用的情况。
  • 如果在头文件中定义了一些新数据类型(常见的结构体),需要依赖其他头文件,尽量引用放在头文件中,防止其他项目引用时缺少头文件,出现expected specifier-qualifier-list before sth之类的错误.

    在使用GCC时经常会遇到expected specifier-qualifier-list before sth之类的错误。specifiers是指void、char、struct Foo等词汇;qualifiers是指像const和volatile一类的关键字。一个词汇再未定义之前就使用就会出项这种错误,可以通过typedef进行定义以后再使用。

错误示例

示例一、下面是一个例子和可选的解决办法

C语言头文件的作用与使用 - 图1
解决办法1:
C语言头文件的作用与使用 - 图2
解决办法2:
C语言头文件的作用与使用 - 图3

示例二