【知识点1】#include“.h”与#include <.h>的区别
- 使用”.h”
使用“.h”意味编译器首先查找当前的工作目录或源代码目录(或其他目录,这取决于编译器)。如果没有在那里找到头文件,则将在标准位置查找。 - 使用<.h>
表明编译器将在存储标准头文件的主机系统的文件系统中查找。 - 结论
在包含自己的头文件时,应使用引号而不是尖括号
【知识点2】头文件管理
背景
在同一个文件中只能将同一个头文件包含一次。关键是:在不知情的情况下,很可能将头文件包含多次。如使用包含了另外一个头文件的头文件。解决办法
【请使用】预处理编译器指令#ifndef和#endif
【代码示例】#ifndef COORDIN_H_ #define COORDIN_H_ //place include file contents here #endif
编译流程
编译器首次遇到该文件时,名称COORDIN_H__(命名以下划线命名不容易重名)没有定义,在这种情况下,编译器将查看#ifndef
和#endif
之间的内容,并读取COORDIN_H_
的一行。如果在同一个文件中遇到其他包含coordin.h
的代码,编译器将知道COORDIN_H_
已经被定义了,从而跳到#endif
后面的一行上。- 注意点
这种方法并不能防止编译器将文件包含两次,而只是让它忽略除第一次包含之外的所有内容。大多数情况下都是使用这种防护方案,否则可能在一个文件中定哟同一个文件结构2次,这将导致编译错误❌。