c ++ 11 — структурирование библиотек с одним файлом / только заголовком в переполнении стека

Считается ли хорошей практикой структурировать библиотеки с одним файлом / только заголовки в 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 ++ (или есть ли лучшие стратегии для создания библиотек с одним файлом / только заголовками).

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]