在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
之前 one ,以避免多个定义 .
我已经看到了C库中使用的这种策略(STB浮现在脑海中),但我想知道这在现代C中是否会被认为是惯用的(或者如果有更好的策略来创建单文件/仅头文件库) .