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

标签 c++ api header-files public directory-structure

我目前正在开发一个 API,我现在发现在我的目录树中进行显式拆分以分离公共(public)头文件和私有(private)头文件和源文件很有用。这样,为我的 SDK 构建公共(public)和开发(私有(private))包将会更加容易。我现在想到了两个不同的选择:

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

至少对于公共(public)文件来说,以“Libname/FileName”的方式组织文件会很好,因为这是我的代码中包含指令的方式:

#include "LibName/FileName.h"

您认为组织 API header 的最佳选择是什么?这两者之一还是其​​他?

谢谢

最佳答案

我最终选择了如下结构:

.../include/LibName1/Class.h
.../include/LibName2/OtherClas.h

.../src/LibName1/ClassImpl.h
.../src/LibName1/ClassImpl.cpp
.../src/LibName2/OtherClassImpl.h
.../src/LibName2/OtherClassImpl.h

这样我既可以将公共(public)头文件(include 目录)和私有(private)源文件(src 目录)分开,也可以在 include 指令中引用头文件,而无需显式写入它们是公共(public)的还是私有(private)的:

#include "LibName1/Class.h"

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

关于c++ - 如何在 C++ 中构建私有(private)和公共(public) API(头文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20747996/

相关文章:

java - 使用通用网络摄像头进行对象检测

c++ - C++ header 中的循环依赖。怎么找?

C头文件依赖

c# - GraphQL 为 .net 开发做好准备

algorithm - 分页算法实现协助

c++ - 如何编译具有 'wlanapi.h' 和 'windows.h' 依赖项的 C++ 代码

c# - 在 C# 中使用 C++ 代码

c++ - 带弧的多边形内的多边形

C++ 用 SFINAE 重载泛型函数

.net - 我将使用什么API调用来更改笔记本电脑(.NET)的亮度?