在C+中构造仅包含单个文件/头的库+; 在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_

在C+中构造仅包含单个文件/头的库+; 在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_,c++,c++11,header-only,C++,C++11,Header Only,因此,库的用户将在一个实现文件中包含“library.hpp”之前定义库的实现,以避免多个定义 我在C库中看到了这种策略(想到了),但我想知道这是否会被认为是现代C++中的惯用方法(或者如果有更好的策略来创建单个文件/头库),那么,什么问题需要解决?谁在现代C++中使用单头库?@ PeteBecker,我认为使用起来很容易。(拖放,而不是将源集成到生成系统中)。@ddriver每当使用模板时(必须放入标题中)@AUD_FOR_IUV:将源代码集成到构建系统中?它是一个.cpp文件。它甚至不必是一

因此,库的用户将在一个实现文件中包含“library.hpp”之前定义库的实现,以避免多个定义


我在C库中看到了这种策略(想到了),但我想知道这是否会被认为是现代C++中的惯用方法(或者如果有更好的策略来创建单个文件/头库),那么,什么问题需要解决?谁在现代C++中使用单头库?@ PeteBecker,我认为使用起来很容易。(拖放,而不是将源集成到生成系统中)。@ddriver每当使用模板时(必须放入标题中)@AUD_FOR_IUV:将源代码集成到构建系统中?它是一个

.cpp
文件。它甚至不必是一个静态库。如果用户无法将源文件添加到构建系统中,他们会遇到比使用您的库更大的问题。