我的文件夹结构是
libA
x.h
y.h
algorithm/
a.h
Now in a.h
I have #include "libA/x.h"
这是行不通的。它正在寻找algorithm/libA/x.h
。所以我应该使用#include "../x.h"
?第二种选择是不是一个糟糕的设计?目前 libA 只是标头。但后者我可能会选择将其编译为库
我正在使用 cmake 那么我可以或者应该添加libA
在我的包含路径中?
In short
我的算法目录中的某些文件需要包含其父文件夹中的定义。我无法将所有函数都模板化,因为类型很明显,而且会做得太过分。
那么我应该如何设计我的项目?
您的解决方案#include "../x.h"
将工作。关于这是否是一个糟糕的设计——可能是;如果不了解更多关于您的代码的信息,很难说清楚。
考虑这样一个事实:如果有许多包含路径,编译器/预处理器将查找../x.h
是所有这些,这可能是无意的并且太宽泛了!
假设您有以下目录结构,并且Your_Code
位于包含文件的搜索路径中。
Unrelated_Directory/
x.h - unrelated
Your_Code/
libA/
x.h - the real one
algorithm/
a.h
这很危险。如果您删除/重命名您的真实x.h
,编译器会默默地选择Your_Code/../x.h
,其中包含不相关的内容 - 这可能会导致神秘的错误消息。或者更糟糕的是,这可能是一个旧版本,充满了错误!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)