#include与#include””的区别
一种是在包含指令#include前面””将头文件名括上去。这些方法用于标准或系统提供的头文件,到保存系统标准头文件的位置查找头文件。
另一种是在包含指令#include后用双冒号””将头文件包括上去。这些方法常用与程序员自己的头文件。用这些格式时deepin linux,C编译器先查找当前目录是否有指定名称的头文件,之后在从标准头文件目录中查找。
在使用标准的头文件包含次序可提高可读性,防止隐藏依赖。
#include的路径
项目内头文件应根据项目源代码目录树结构排列,防止使用UNIX特殊的快捷目录.(当前目录)或…(上级目录)。
比如linux include 头文件 路径,project/src/base/logging.h应当根据如下形式包含:
#include "base/logging.h"
#include的头文件包含次序
假如dir/foo.c的主要作用是实现或则测试dir2/foo2.h的功能,foo.c中包含头文件的顺序如下:
这些优先的次序排序保证当dir2/foo2.h遗漏个别必要的库时,dir/foo.c的预制构件会立即终止。因而这一条规则保证维护这种文件的人们首先见到建立终止的消息而不是维护其他包的人们。
假如依赖的符号被什么头文件所定义,就应当包含什么头文件linux include 头文件 路径,后置申明除外。例如要用到bar.h中的某个符号,哪怕包含的foo.h文件中早已包含了bar.h,也照样包含bar.h,除非foo.h有明晰说明它会手动提供bar.h中的符号。
举例
progect/foo/internal/fooserver.c的包含顺序如下:
#include "foo/public/fooserver.h" //优先位置
#include
#include
#include
#include
#include "base/basictypes.h"
#icnlude "base/commandlineflags"
#include "foo/public/bar.h"
以上是《GoogleC++编程风格手册》的观点,在《C++编程思想》则包含另一种观点。
《C++编程思想》认为头文件的包含次序是从“最特殊到最通常”。
这是为了保证.h文件的组成部份不被它自身解析。由于被自身解析缺少明晰提供的申明或则定义。
总结
《GoogleC++编程风格手册》和《C++编程思想》倡导的包含头文件的次序各有优点linux shell,《GoogleC++编程风格手册》应该能大量降低隐藏的头文件依赖,而《C++编程思想》则很容易让你清楚晓得你所定义的插口是否和系统库及第三方库发生冲突。
隐藏依赖:即一个头文件依赖其他文件。所以无论是《GoogleC++编程风格手册》还是《C++编程思想》都是将自身的头文件置于第一位,由于这样可以易于发觉隐藏依赖。