例如:
工程/工具/ a.cpp
和
工程/工具/啊
是在此项目中随处使用的一批函数的实现文件和头文件.
现在,想象一下
项目/组件/ BH
想包括a.h.一个常见的解决方案是使用:
#include "../utility/a.h"
在b.h.
但谷歌C++风格不允许这样做:
所有项目的头文件都应该作为项目源目录的后代列出,而不使用UNIX目录快捷方式
.(当前目录)或..(父目录).
我尝试将其包含在上面的文档中,但它不起作用.
那么我应该怎么做才能包含它而不使用'.' 要么 '..' ?
另请参阅标题的相对路径有什么好处,例如"../include/header.h"?和我应该用#include在头?
您需要决定是否仅使用头文件的基本名称(a.h在您的问题的缩写示例中),或者是否使用子目录和标题名称project/a.h).只要标题名称是唯一的,它们都是可行的; 通常,子目录版本通常更好,并且需要更少的命令行选项.
你可以写:
#ifndef B_H_INCLUDED
#define B_H_INCLUDED
#include "utility/a.h"
…other material required…
#endif /* B_H_INCLUDED */
Run Code Online (Sandbox Code Playgroud)
然后,在编译器命令行中,包含一个选项:
-I ..
Run Code Online (Sandbox Code Playgroud)
这确保了编译器会发现utility/a.h如../utility/a.h(除非有一个名称冲突的地方).或者您可以指定项目的绝对路径:
-I /path/to/project
Run Code Online (Sandbox Code Playgroud)
会读/path/to/project/utility/a.h.