#包含父目录的文件

2024-01-06

我的文件夹结构是

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(使用前将#替换为@)

#包含父目录的文件 的相关文章

随机推荐