找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2595|回复: 12

C语言之#include用法详解

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:28
  • 打卡月天数:7
  • 打卡总奖励:7961
  • 最近打卡:2025-12-22 17:16:30

3317

主题

285

回帖

2万

积分

管理员

积分
24106
发表于 2021-2-23 21:18:06 | 显示全部楼层 |阅读模式
学习Linux C,必须要理解include,只要弄清以下几个问题,就能完全理解include了!

1.#include 实质是什么?
预编译的时候copy include头文件的内容到当前行
(疑问:预编译命令 $gcc -E test.c -o test.i)
2.#include “” 与<> 有何区别?如何验证你的结论?
“”先在当前目录查找有无该头文件,有则包含该目录下的头文件,没有则到系统指定的目录下找该头文件
<>直接到系统指定的目录下查找该文件
(疑问:系统制定的默认目录为/user/include/,我们常使用的printf函数是在/user/include/stdio.h的文件中声明的)
验证结论:分别在当前目录和系统指定的目录下定义同名的头文件,但内容不一致,预编译后,看包含了哪个目录下的头文件

在gcc编译的时候,也可以通过-I 指定头文件所在的目录,若在指定的目录找不到,则回到默认的目录下查找

3.被#include的header file中最常见的内容分为哪几类?
宏定义
typedef
包含别的头文件
inline函数定义
函数声明
struct,union,enum类型定义
(其实可以打开一个.h文件来看看,如 /user/include/stdio.h)
4.如何防止重复#include?(更确切的表述为“重复#include时如何防止重复定义/声明?”)需要说出2种方案,并说明各自的优缺点?
方案一:#pragma once 优点:不会出现宏名重复 缺点:某些老的编译器不支持
方案二:#ifndef XXX
#define XXX
#endif 优点:所以的编译器都支持 缺点:出现宏名重复

一般我们看到大多都是选择方案二,我们只要避免宏名重复就行了
宏名规则(大写,文件名作为宏名主体,以两个下划线开头以下划线结束),例如ov8830.h,宏名为__OV8830_H__,这样的宏名
出现的重复的几率就很低了!









工控课堂 www.gkket.com

0

主题

121

回帖

419

积分

注册会员

积分
419
发表于 2021-2-23 22:04:07 | 显示全部楼层
看了楼主的帖子,不由得精神一振,豁然开朗,牛掰
工控课堂 www.gkket.com

0

主题

139

回帖

315

积分

注册会员

积分
315
发表于 2025-11-16 20:07:56 | 显示全部楼层
楼主辛苦啦,期待下一篇分享!
工控课堂 www.gkket.com

0

主题

78

回帖

117

积分

新手上路

积分
117
发表于 2025-11-16 20:37:16 | 显示全部楼层
这逻辑绝了,分析得太到位了吧
工控课堂 www.gkket.com

0

主题

76

回帖

112

积分

新手上路

积分
112
发表于 2025-11-17 02:55:56 | 显示全部楼层
这波分析到位,逻辑满分!
工控课堂 www.gkket.com

0

主题

194

回帖

603

积分

中级会员

积分
603
发表于 2025-11-17 22:13:58 | 显示全部楼层
蹲一波同款,有没有姐妹 / 兄弟推荐?
工控课堂 www.gkket.com

0

主题

90

回帖

138

积分

新手上路

积分
138
发表于 2025-11-19 17:47:50 | 显示全部楼层
楼主太会说了,字字句句都在理
工控课堂 www.gkket.com

0

主题

197

回帖

406

积分

注册会员

积分
406
发表于 2025-11-19 17:54:22 | 显示全部楼层
这波反向操作,我属实没想到!
工控课堂 www.gkket.com

0

主题

76

回帖

117

积分

新手上路

积分
117
发表于 2025-11-19 17:59:52 | 显示全部楼层
浅评一下:内容优质,值得推荐~
工控课堂 www.gkket.com

0

主题

115

回帖

463

积分

注册会员

积分
463
发表于 2025-11-19 18:01:47 | 显示全部楼层
评论区人才辈出,笑到停不下来😂
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 06:11 , Processed in 0.206514 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表