在 C++ 中构造单文件/仅标头库是否被认为是一种好的做法,以便它们有条件地成为标头或实现?例如,
#ifndef LIBRARY_HEADER_HPP_
#define LIBRARY_HEADER_HPP_
// Header
struct Test {
void test();
};
#endif // LIBRARY_HEADER_HPP_
#ifdef LIBRARY_IMPLEMENTATION_
#undef LIBRARY_IMPLEMENTATION_
// Implementation
void Test::test() {
}
#endif // LIBRARY_IMPLEMENTATION_
因此,该库的用户将#define LIBRARY_IMPLEMENTATION
在单个实现文件中使用一个,以避免多个定义。 #include "Library.hpp"
我已经看到 C 库中使用了这种策略(想到了STB ),但我想知道这是否会被认为在现代 C++ 中是惯用的(或者是否有更好的策略来创建单文件/仅标题库)。