Структурирование однофайловых / только заголовочных библиотек в 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_

Пользователь библиотеки будет поэтому #define LIBRARY_IMPLEMENTATION до одного #include "Library.hpp" в одном файле реализации, чтобы избежать нескольких определений.

Я видел эту стратегию, используемую в библиотеках C ( STB приходит на ум), но мне было интересно, будет ли это считаться идиоматическим в современном C++ (или есть ли лучшие стратегии для создания библиотек с одним файлом / только заголовками).

0 ответов

Другие вопросы по тегам