用C ++构建单文件/头文件库

时间:2017-01-04 02:55:28

标签: c++ c++11 header-only

在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 ++中是否会被认为是惯用的(或者是否有更好的策略来创建单文件/标题库。)

0 个答案:

没有答案