gpt4 book ai didi

c - 如何在库中组织头文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:09 25 4
gpt4 key购买 nike

假设我正在用 C 编写一个小库,大部分源代码在两个文件夹 src/Asrc/B 中,并且头文件src/A/a.h需要包含src/B/b.h。在为非库项目编写代码时,我通常会这样写

#include "B/b.h"

a.h 中并使用 -Isrc 标志告诉编译器在哪里寻找头文件。

现在假设我的库本地安装在 ~/mylib 并且我想使用来自不同项目的 a.h 中的函数。简单地包含该文件使用

#include "~/mylib/src/A/a.h"

不会工作,因为 ~/mylib/src/B/b.h 可能不在搜索路径中。我的问题是关于解决这个问题的规范方法。这可能是非常基础的,但我没有用 C 进行过任何高级编程,并且我尝试在线查找解决方案的尝试均未成功。

我想到的可能的解决方案如下:

  • ~/mylib 添加到搜索路径,但如果库和客户端项目具有同名的头文件(比如 src/helpers.h),这可能会导致问题。 h).是否可以包含一个头文件而不用我不需要的文件使搜索空间困惑?

  • 在库头文件中使用相对路径,但感觉不是很稳健。

谢谢。

最佳答案

通常的方法是为构成库公共(public)接口(interface)的头文件专门设置一个单独的目录。通常此目录将称为“include”。

然后,您可以将您的库的公共(public) header 放在特定于库的目录下,即“mylib/include/mylib/b.h”。如果您正在使用其他一些也有“b.h”的库,这个额外的“mylib”目录可以防止冲突。如果您愿意,您也可以将不构成库的公共(public)接口(interface)的其他私有(private) header 保留在“src”目录下,以防止它们暴露给库的用户。

这意味着库的用户然后可以使用“-I mylib/include”来包含这个目录,并包含单个文件,例如“#include “mylib/b.h”。

关于c - 如何在库中组织头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48626177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com