Size: a a a

2020 August 18

AK

Andrei K in pro.cxx
И только той корутине выдать много памяти.
источник

d

d7d1cd in pro.cxx
Привет. Скажите, как делаются one-header библиотеки? Содержимое отдельных h-файлов добавляется в один, например, hpp-файл, а ниже этого вставляется реализация из cpp-файлов?
источник

AK

Andrei K in pro.cxx
Отвечу не на тот вопрос, но просто скажу, что редко видел нормальные header-only либы. Так что единственный их плюс по сравнению с обычными либами в том, что их чуть легче взять и пострипать.
источник

d

d7d1cd in pro.cxx
А в чем их ненормальность проявляется?
источник

AK

Andrei K in pro.cxx
Зачастую у меня проблема такого характера, мне надо притащить в проект какой-то криптопримитив. Например взятие SHA и чуть-чуть подпилить под семантику объектов в проекте. Проблема с либами как правило в том, что ты в нагрузку еще получишь тонны левого кода, сложные конфигураторы, которые не работают еще и на винде, а по сути тебе надо 100 строчек кода оттуда. Соответственно я как правило просто беру код либ и выкидываю оттуда вообще всё, и потихоньку обратно добавляю, пока оно не начнёт собираться.  С хидер-онли либами проблема притаскивания лишних вещей только обостряется.
источник

AK

Andrei K in pro.cxx
Зачастую объявление и определение там объединены и приходится очень много работы с текстом производить. Вместо того чтобы добавить голый хедер, и смотреть только на ошибки линкера.
источник

NP

Nikita Provotorov in pro.cxx
d7d1cd
Привет. Скажите, как делаются one-header библиотеки? Содержимое отдельных h-файлов добавляется в один, например, hpp-файл, а ниже этого вставляется реализация из cpp-файлов?
интересный подход используется вот здесь: https://github.com/nothings/stb. Если кратко: вся реализация вынесена в #ifdef ветку, при использовании легко сваять из этого статическую либу
источник

d

d7d1cd in pro.cxx
Nikita Provotorov
интересный подход используется вот здесь: https://github.com/nothings/stb. Если кратко: вся реализация вынесена в #ifdef ветку, при использовании легко сваять из этого статическую либу
Спасибо. Посмотрю.
источник

NP

Nikita Provotorov in pro.cxx
d7d1cd
Спасибо. Посмотрю.
Там документация внутри самих хедеров
источник

D

Dmitriy in pro.cxx
Andrei K
Блин, подстава. А кто знает как в плюсах стандартными методами сконвертировать стрингвью/буффер в дабл? sscanf, atof, strtof  все принципиально не подходят, в них предполагается нуль-терминированная строка на входе.
string_view ~> const char*
источник

D

Dmitriy in pro.cxx
Можно написать простую обёртку для strtod
источник

D

Dmitriy in pro.cxx
Если строка не null-terminated - проблема...
stod и прочие функции для string под капотом зовут функции, работающие с const char*
источник

AT

Anatoly Tomilov in pro.cxx
libc++/libstdc++ sizeof(std::mutex) == 40 — на что там может столько уходить?
источник

AK

Andrei K in pro.cxx
Anatoly Tomilov
libc++/libstdc++ sizeof(std::mutex) == 40 — на что там может столько уходить?
Режим чекни что релизный.
источник

AT

Anatoly Tomilov in pro.cxx
Andrei K
Режим чекни что релизный.
источник

AT

Anatoly Tomilov in pro.cxx
я наивно надеялся, что там 1)
источник

AK

Andrei K in pro.cxx
Там явно 1 не может. Как минимум 8
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
я наивно надеялся, что там 1)
там под капотом может быть pthread_mutex_t, например
источник

AT

Anatoly Tomilov in pro.cxx
Andrei K
Там явно 1 не может. Как минимум 8
Для спинлока 1 хватит ведь? Ясно, что там не спинлок
источник

АК

Александр Караев... in pro.cxx
Александр Караев
там под капотом может быть pthread_mutex_t, например
а он универсальный для рекурсивных мьютексов, timed и прочих, поэтому даже в простейшем случае идёт оверхед
источник