LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Я говорю про выжирание памяти линтером. Простота подключения библиотеки это очень так себе аргумент: это нужно делать один раз. А компилять каждый раз, когда что-то поменял.

и какая разница, что компелять каждый раз?

Header-only вообще не отличается от обычной библиотеки, в этом плане.

Нормальная header-only библиотека выглядит как-то так

#pragma once;

void test();

#ifdef NEED_IMPLEMENTAION_MY_SUPER_LIB
#include <stdio.h>

void test()
{
    puts("Hello");
}
#endif

Линтер видит ровно тоже что он видел бы и для обычной либы(лишь declaration функций/классов)

А ты просто добавляешь к своему проекту, один cpp файл, и в нём.

#define NEED_IMPLEMENTAION_MY_SUPER_LIB
#include "my_super_lib.hpp"

во всех остальных cpp файлах, просто делаешь include, без define.

Подключение такой библиотеки проще, для линтеров/анализаторов/времени компиляции компилятором разницы никакой, по сравнению с не header-only библиотекой.

Исходная версия fsb4000, :

Я говорю про выжирание памяти линтером. Простота подключения библиотеки это очень так себе аргумент: это нужно делать один раз. А компилять каждый раз, когда что-то поменял.

и какая разница, что компелять каждый раз?

Header-only вообще не отличается от обычной библиотеки, в этом плане.

Нормальная header-only библиотека выглядит как-то так

#pragma once;

void test();

#ifdef NEED_IMPLEMENTAION_MY_SUPER_LIB
#include <stdio.h>

void test()
{
    puts("Hello");
}
#endif

Линтер видит ровно тоже что он видел бы и для обычной либы(лишь declaration функций/классов)

А ты просто добавляешь к своему проекту, один cpp файл, и в нём.

#define NEED_IMPLEMENTAION_MY_SUPER_LIB
#include "my_super_lib.hpp"

Подключение такой библиотеки проще, для линтеров/анализаторов/времени компиляции компилятором разницы никакой, по сравнению с не header-only библиотекой.