如何在C++(头文件)中构建私有和公共 API

How to structure private and public API in C++ (header files)

本文关键字:构建 API C++ 文件      更新时间:2023-10-16

我目前正在开发一个API,现在我发现在我的目录树中进行显式拆分很有用,以便将公共头文件与私有头文件和源文件分开。这样,就可以更轻松地为我的 SDK 构建公共和开发(私有)包。我现在想到了两种不同的选择:

1)
.../LibName/Class.h
.../LibName/private/ClassImpl.h
.../LibName/private/LibName/ClassImpl.cpp
2)
.../public/LibName/Class.h
.../private/LibName/ClassImpl.h
.../private/LibName/ClassImpl.cpp

至少对于公共文件,最好以"Libname/FileName"的方式组织文件,因为这是我的代码中包含指令的方式:

#include "LibName/FileName.h"

您认为组织 API 标头的最佳选择是什么?这两个中的一个,或者另一个?

谢谢

我最终选择了以下结构:

.../include/LibName1/Class.h
.../include/LibName2/OtherClas.h
.../src/LibName1/ClassImpl.h
.../src/LibName1/ClassImpl.cpp
.../src/LibName2/OtherClassImpl.h
.../src/LibName2/OtherClassImpl.h

这样,我既可以分离公共头(包含目录)和私有源代码(src 目录),也可以在 include 指令中引用头文件,而无需明确编写它们是公共的还是私有的:

#include "LibName1/Class.h"

这种结构(或类似的结构)也用于其他库,如Qt框架。