避免遗漏包含相同文件的最佳方法是什么?
What is the best way to avoid missincluding same files?
给定文件树:
DLL1
└───source
├───File1.h
└───SameHeader.h
DLL2
└───source
├───File2.h
└───SameHeader.h
File1 包含 SameHeader.h,这很好。 File2 包含无法编译的 File1,因为 "SameHeader.h" #include 现在指向 DLL2/source/SameHeader.h。有没有办法确保File1使用同一个dll中的文件?
当然 - 您可以将文件SameHeader.h
放在单独的文件夹中(与源文件不同(,然后在要搜索的包含路径列表中指定该文件夹(在项目选项或编译器命令开关中(。
当然,您需要从每个源项目目录中删除文件SameHeader.h
,或者优先使用单独文件夹中的文件目录。
因此,使用您的"文件树"图,我建议这样做:
DLL1
└───source
├───File1.h
DLL2
└───source
├───File2.h
Include
└───SameHeader.h
然后,可以将../Include
添加到编译器的包含文件搜索路径中。如何做到这一点取决于您的编译器和/或环境,但它将类似于 MSVC 中的/I".._Include"
开关或(可能(与 clang-I"../_Include"
。这就是我在多项目解决方案中所做的,用于将由多个项目使用的所有头文件。
但是,如果您确实需要两个(不同的(SameHeader.h
文件,那么也许应该在 File1 的#include "SameHeader.h"
行中指定完整的路径名(或者至少是一个限定路径( - 类似于:#include "../../DLL1/source/SameHeader.h"
(取决于文件和文件夹的确切布局(。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?