返回介绍

2. 头文件

发布于 2024-10-12 21:58:10 字数 1195 浏览 0 评论 0 收藏 0

头文件用于保存共用信息,可被其他源文件导入。比如常量定义,类型和函数声明。源文件和所引入的所有头文件构成一个完整翻译单元,编译器以此为单位进行分析。

用头文件替代前置声明(forward declaration)。自包含(#include)它所需的其他头文件,可作为第一个头文件被引入。

非头文件的前置声明隐藏了依赖关系。如头文件变动,会无法提示。前置声明还可多次声明,后续对声明的更改可能导致错误。

  • #include <system.h> : 包含标准库和系统库头文件。
  • #include "project.h" : 包含项目头文件。

引入

可使用 -I 编译参数向路径列表添加头文件搜索路径,新增路径会优先搜索。如果是系统路径,或不存在路径,会被忽略。

使用 -iquote 添加专用于 #include "..." 搜索列表。

$ echo | gcc -E -Wp,-v -I./inc -I./sub -         # 查看路径列表。
$ echo | gcc -E -Wp,-v -iquote./inc -I./sub -

查找顺序:

  • #include <...> : 从系统目录开始找。
  • #include "..." : 从当前目录开始找。

包含顺序:

  • 需要优先的头文件。
  • 标准库。
  • 扩展库。
  • 当前项目。

保护

保护头文件,避免多次包含后重复展开。

使用路径名称( __<PROJECT>_<PATH>_<FILE>_H__ )可避免重名,确保唯一性。

#ifndef __PROJECT_PATH_FILE_H__
#define __PROJECT_PATH_FILE_H__

#endif // __PROJECT_PATH_FILE_H__

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文