c 头文件有哪些,C 语言头文件本质是声明文件,里面存放函数声明宏定义类型定义,源文件通过 include 引入头文件,就可以调用对应的标准库功能,标准 C 也就是 C89 C99 C11 都规定了一批标准头文件,写代码不需要自己重复声明库函数,只需要引入对应头文件,编译器才能识别函数原型,避免隐式声明报错,除了标准头文件,项目还可以自定义头文件,用来存放自己写的函数声明结构体宏,下面主要介绍考试和开发最常用的标准库头文件。

常用标准头文件对照表

头文件名主要功能常用函数宏
stdio.h标准输入输出printf scanf getchar putchar fopen fclose
stdlib.h通用工具库malloc free atoi rand srand exit system
string.h字符串处理strcpy strcat strlen strcmp memset
math.h数学运算sqrt pow sin cos fabs floor ceil
ctype.h字符判断转换isalpha isdigit toupper tolower
time.h时间日期time localtime clock difftime
assert.h断言调试assert 宏
limits.h基础类型极限值INT_MAX CHAR_MAX 等宏
float.h浮点数精度极限FLT_MAX DBL_EPSILON
stddef.h通用类型定义size_t NULL ptrdiff_t
stdarg.h可变参数va_list va_start va_arg va_end
errno.h错误码errno 变量 EINVAL 等错误宏

C99 新增常用头文件

头文件名主要功能
stdbool.h布尔类型 bool true false
stdint.h定长整数类型 int32_t uint64_t
complex.h复数运算支持
tgmath.h泛型数学宏

C11 新增头文件

头文件名主要功能
threads.h多线程支持
stdatomic.h原子操作

头文件使用基础写法

引入标准头文件使用尖括号,示例

include

include

自定义项目头文件使用双引号,示例

include "myhead.h"

使用要点

1 调用 math.h 里面数学函数,部分编译器编译的时候需要链接数学库,gcc 编译命令需要加 lm 参数

2 头文件只做声明,函数实现在 libc 库里面,include 不会自动复制函数代码,只是告诉编译器函数原型

3 同一个头文件重复引入会造成重复声明,所以头文件一般会加上头文件保护宏,也就是 ifndef define endif

4 不要随意引入不需要的头文件,会增加编译体积,也可能出现宏命名冲突

自定义头文件简单说明

自定义头文件一般存放结构体 typedef 宏函数声明,配套同名 c 源文件写函数实现,适合多文件工程,比如 student.h 里面声明结构体和打印函数,student.c 写函数实现,main.c 引入 student.h 就可以调用。

掌握这些标准头文件,写基础 C 语言作业和小程序基本够用,做项目再按需引入新增头文件。

【常见问题】

问题 1 c 头文件有哪些,stdio.h 和 stdlib.h 能不能搞混

回答 1 c 头文件有哪些,stdio.h 负责输入输出,stdlib.h 负责内存分配随机数类型转换,两个功能完全不同,调用 malloc 必须引入 stdlib.h,调用 printf 必须引入 stdio.h。

问题 2 c 头文件有哪些,为什么调用 sqrt 报错

回答 2 c 头文件有哪些,调用 sqrt 属于 math.h,首先要确认已经 include math.h,gcc 编译还需要链接数学库,添加 lm 链接参数,否则会出现 undefined reference 报错。

问题 3 c 头文件有哪些,头文件里面可以写函数实现吗

回答 3 c 头文件有哪些,标准做法头文件只写声明,函数实现放在 c 源文件,如果在头文件写普通函数实现,多文件编译的时候会出现重复定义链接错误,只有 inline 函数可以写在头文件。

【免责申明】

本文属于编程技术科普内容,不同编译器扩展头文件存在差异,代码编译请以所用编译器标准为准,本文不承担代码编译异常相关责任。