4

条件付きでヘッダーまたは実装のいずれかになるように、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_

したがって、ライブラリのユーザーは、複数の定義を避けるために、単一の実装ファイル内の1 つ#define LIBRARY_IMPLEMENTATIONの前にします。 #include "Library.hpp"

C ライブラリで使用されているこの戦略を見たことがあります ( STBが思い浮かびます) が、これが現代の C++ で慣用的と見なされるかどうか (または、単一ファイル/ヘッダーのみのライブラリを作成するためのより良い戦略があるかどうか) を考えていました。

4

0 に答える 0