前言
C++代码中在实际编程中大家最经常遇到的错误,一般都是因为头文件的包含顺序以及引用未定义的符号而引起的。在《Google C++ Style Guide》和《C++编程思想》分别推荐了两种不同的头文件包含顺序。
推荐顺序一
-
本文件对应头文件.h
-
C 系统文件
-
C++ 系统文件
-
其他库的 .h 文件
-
本项目内 .h 文件
推荐顺序二
-
本文件对应头文件.h
-
本项目内 .h 文件
-
其他库的 .h 文件
-
C++ 系统文件
-
C 系统文件
两者之间的异同
相同点
都是将本文件对应头文件.h放在最开始,原因在于这样可以避免《隐藏依赖》。
不同点
推荐顺序一是从比较可靠的类的头文件优先包含,目的在于符合了从一般到特殊的顺序,先打地基再盖房子的思路比较容易理解。
推荐顺序二是从比较容易出错的文件优先包含,目的在于尽快暴露出来代码的编译出错无需花费过多时间在无效的编译过程中。
个人建议
我个人认为还是推荐顺序二更加好些,,毕竟省点时间是最实在的。代码熟练的情况下一般而言看下就知道是系统头文件还是自定义头文件了,问题不大。然后对于一些经常在不同文件包含的头文件数量较多也可以进行文件的封装。毕竟我们的核心目的是能够每个文件独立编译。
Tip:#pragma once放在文件最上方避免被同一个文件多次Include