如何在 C++ 中构建私有和公共 API(头文件)
Posted
技术标签:
【中文标题】如何在 C++ 中构建私有和公共 API(头文件)【英文标题】:How to structure private and public API in C++ (header files) 【发布时间】:2014-01-11 22:26:27 【问题描述】:我目前正在开发一个 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 标头的最佳选择是什么?这两个之一或其他一些?
谢谢
【问题讨论】:
将实现放在 DLL 或库文件中,并让标头提供声明。 我明白了,您不想发送私人文件?那为什么不创建库,只将公共 api 写入一个头文件呢? 【参考方案1】:我最终选择了如下结构:
.../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 "LibName1/Class.h"
这种结构(或类似结构)也用于其他库,如 Qt 框架。
【讨论】:
以上是关于如何在 C++ 中构建私有和公共 API(头文件)的主要内容,如果未能解决你的问题,请参考以下文章
如何在不涉及 Android 客户端应用程序的开发人员的情况下为某些网站构建公共/私有 API [关闭]