Skip to content

什么是头文件

我们一直在用, 只是我们不知道那是头文件

c
#include <stdio.h>

int main() {
  // 是否好奇, 为什么直接能够使用这个函数
  // 那是因为引入了 stdio 这个头文件
  // 在这个头文件中, 定义了这个函数
  printf("hello world \n");
}

头文件有什么用

头文件分为标准库(安装好编译器自带的)头文件和自定义头文件

  1. 标准库头文件提供了很多有用的功能函数, 比如 string.h 中有一个 strlen 函数
  2. 自定义头文件, 可以让 C 和其他编程语言一样, 导入其他文件中代码的功能

自定义头文件

头文件是以 .h 结尾的文件

  1. 创建 tools.htools.c 两个文件
  2. main.c 中导入 tools.h
  3. 编译运行, 注意编译时不需要包含头文件, 但需要包含.c的实现文件
sh
gcc ./main.c ./tools.c -o ./main
c
#include "tools.h" // 导入自定义头文件用 "xxx.h"
#include <stdio.h> // 导入标准库头文件用 <xxx.h>

int main() {
  print_newlins(3);

  int nums[] = {1, 3, 5, 7, 9};
  int avg = meanof(nums, 5);
  printf("mean of nums: %d\n", avg);

  print_newlins(3);
}
c
// 头文件只是定义有哪些东西, 但并不实现(类似于接口的功能)

// 输出换行
void print_newlins(unsigned int lines);

// 计算数组平均值
// nums: 数组指针
// count: 数字个数
int meanof(int nums[], unsigned int count);
c
// 真正的实现还是在c文件中实现的(类似于实现接口 implements)
// 注意在这个实现文件中需要 #include 头文件
#include "tools.h"

void print_newlins(unsigned int lines) {
  for (unsigned int i = 0; i < lines; i++) {
    printf("\n");
  }
}

int meanof(int nums[], unsigned int count) {
  int sum = 0;
  for (int i = 0; i < count; i++) {
    sum += nums[i];
  }
  return sum / count;
}

Released under the MIT License.