我目前正在开发一个 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/