Daniil
в первом случаи не пришлось бы скорее всего лезть в доки или тереть глаза?
Vladislav
аргументы приложения это.
Daniil
да да там коммент есть // Declare a group of options that will be // allowed only on command line
Daniil
а еще есть // Declare a group of options that will be // allowed both on command line and in // config file что как бы намекает
Nikita
я тоже не против буста и сам активно использую, просто считаю, что если можно сделать без буста стандартными средствами, то лучше без буста
Dr. Friedrich
Ну, в настоящем-то коде никто не станет расставлять комментарии от тьюториала.
Nikita
может это просто травма психологическая
Dr. Friedrich
И там тебе придётся приседать ради кроссплатформенности.
Artem
или args << "version,v" << "print" << ...
А какая разница? Везде есть структура, она сразу понятна из примера
Nikita
после того, как я пытался понять и починить код, который парсит метаданные mjpeg с помощью boost::spirit'a
Dr. Friedrich
я тоже не против буста и сам активно использую, просто считаю, что если можно сделать без буста стандартными средствами, то лучше без буста
А вообще, всё надо инженерным методом оценивать. Есть задача и есть способы решения: использовать библиотеку (+N чч на поддержку системы сборки) или написать своё (+M чч на написание и отладку). Ну а дальше решай.
Daniil
А какая разница? Везде есть структура, она сразу понятна из примера
Да. но секунд 10-60 надо потратить чтобы потупить
Daniil
это как эти вот извороты с --((i++)++) понятно же
Dr. Friedrich
Я согласен, это еще ок. А вот boost::spirit например читать бесполезно. Это write-only бибилиотека. Хотя тут не понятно, где проблема, в бусте или в C++
Все проблемы шпирита в первую очередь от phoenix, который с ним мешают обычно. И я согласен, что код у этой парочки выходит write-only :(
Daniil
раз есть нечитабельная фича в языке давайте ее заюзаем, ведь мы профи, а те кто непонимает с первого раза лошки)
Dr. Friedrich
А вы какой стандарт исповедуете?
Dr. Friedrich
Не подскажем. 😁
Nikita
LoadLibrary(-Ex) для WinApi, в божественном линуксе не знаю как это делается
Andrei
dlopen поди
Nikita
Аминь.
Крылатый
Очень жаль, что в плюсах сложно красиво реализовать парсер а ля парсек хаскелевский.
Andrei
А зачем?
Andrei
Очень жаль, что в плюсах сложно красиво реализовать парсер а ля парсек хаскелевский.
Можно, я делал, но он всё равно не нстолько хорош, из-за того, что плюсы не ленивые.
Dr. Friedrich
Очень жаль, что в плюсах сложно красиво реализовать парсер а ля парсек хаскелевский.
Я за хаскелевский парсек не скажу, но имел дело с FParsec на F#. И вот что: с ним примерно на 50% легче, чем с boost::spirit, но поддержка полноценного парсера языка программирования всё равно требует нечеловеческих усилий.
Nikita
т.е. конструкция вида if WIN32 LoadLibrary else dlopen - это ниибаца платформ индепендент?
Dr. Friedrich
т.е. конструкция вида if WIN32 LoadLibrary else dlopen - это ниибаца платформ индепендент?
Да, это platform-dependent по определению. Вот ты сейчас две платформы покрыл, а если ещё появятся?
Andrei
Я за хаскелевский парсек не скажу, но имел дело с FParsec на F#. И вот что: с ним примерно на 50% легче, чем с boost::spirit, но поддержка полноценного парсера языка программирования всё равно требует нечеловеческих усилий.
На хаскеле действительно парсер пишется играючи. Я ради удовольствия с нуля парсек переписывал. В конечном итоге всё доводится до состояния когда ты прямо на языке граматику описываешь тупо в BNF
Григорий
у меня есть буст, скомпиленный в длл, в принципе его можно подключать)))
Dr. Friedrich
Ну, я думаю, всем понятно, что в стандарте C++ такого нету и в ближайшее время не предвидится. Вот и обсуждают околостандартные решения :)
Nikita
Да, это platform-dependent по определению. Вот ты сейчас две платформы покрыл, а если ещё появятся?
потому что нет ничего платформо-независимого, как нет платформо-независимого компилятора
Григорий
LPCSTR funcName = static_cast<LPCSTR>("?add@MyDLL@MyDLLNamespace@@SANNN@Z"); вот такое имя внутри нэймспейса и класса для статического метода
Крылатый
А в чём проблема взять буст?
Крылатый
Религия?
Dr. Friedrich
На хаскеле действительно парсер пишется играючи. Я ради удовольствия с нуля парсек переписывал. В конечном итоге всё доводится до состояния когда ты прямо на языке граматику описываешь тупо в BNF
Вот ты так говоришь, как будто до этого состояния добрался — и всё, выиграл. А это на самом деле только начало работы! Дальше ты этот парсер переписываешь, уточняешь грамматику, отлаживаешь. И это как раз и есть самый ад.
Крылатый
Выцепи только его.
Крылатый
Верней, только конкретный модуль.
Григорий
вопрос про буст мне адресован или кому?
Крылатый
Блин, ведь его даже весь компилять нет нужды.
Григорий
мне не нужен буст, ибо я просто смотрю, как собирать приложения с длл и ковыряю с++
Григорий
начинающий так скажем
Григорий
надеюсь, вопрос снят
Крылатый
омг
Крылатый
А уж развели...
Григорий
dumpbin /EXPORTS помог я так понимаю, это некий аналог objdump в gcc
Dr. Friedrich
Ничего не разводили. Обсудили вопрос и всё.
Square
dumpbin /EXPORTS помог я так понимаю, это некий аналог objdump в gcc
Во всяких тоталкоммандерах стандартный просмотрщик удобен для анализа экспорта либ и вообще исполняемых файлов. Платформа там, и прочее
Square
Рекомендую, если на винде сидишь
🐙 Antony
Все проблемы шпирита в первую очередь от phoenix, который с ним мешают обычно. И я согласен, что код у этой парочки выходит write-only :(
Согласен, но отчасти. Можете сравнить простенький парсер без phoenix на c++11 https://github.com/apolukhin/Boost-Cookbook-4880OS/blob/second_edition/Chapter03/07_spirit/main.cpp#L80-L88 и с ним: https://github.com/apolukhin/Boost-Cookbook-4880OS/blob/second_edition/Chapter03/07_spirit/main.cpp#L54-L62 Строчек столько же, без феникса меньше магии, но всё ещё сложно читать
Andrei
Это реалтайм OS
Григорий
Григорий
кстати, по поводу буста
Григорий
кто запускал boost::unit_test
Григорий
в VS
Крылатый
Я.
Крылатый
Хотя быстро ушёл на MinGW.
Григорий
как этим вообще пользоваться?))
Григорий
я открыл щас солюшн, в котором есть проект с тестами
Григорий
как запустить их, просто запустить этот проект?
Григорий
атлищьна
Григорий
конечно не так удобно, как в шарпе( а есть какие-то расширения для студии, чтобы юнит тесты для плюсового кода интерактивно запускать?
Григорий
например, курсор на имени теста, из контекстного меню выбрал пункт "Run test" в окне вывода появилась инфа
Григорий
прошёл не прошёл
Григорий
нет, не автогенерация
Григорий
сейчас тут нужно собирать проект с тестами и запускать их, потом смотреть отчёт в htm
Крылатый
Берёшь, пишешь интеграцию с IDE.
Крылатый
Возможно, в CLion такое запилят. Пиши им ишуй, попробуем проголосовать.
Григорий
Берёшь, пишешь интеграцию с IDE.
я не настолько продвинутый)) насчёт писать в джетбрейнз идея мне нравится
Крылатый
Catch годная штука, да.
Григорий
да мне своей работы пока выше крыши хватает, хотя в ближайшем будущем я бы с удовольствием принял участие в каких-то таких проектах
Григорий
я просто недавно сменил профессию, устроился программистом, поэтому у меня практически круглые сутки — это работа + гугление и чтение книг по нужным темам
Григорий
испытательный срок через 2 мес. закончится, по результатам и буду уже время распределять
Крылатый
Не могу сказать на 100%, посколько не юзал gTest.
Крылатый
Но Catch оч лёгкий и простой. Достаточно функциональный. BDD, вот это всё.
Григорий
я слышал, что gTest очень хвалят
Крылатый
Бубс тест и кэтч, да.
Крылатый
Catch полущ)
Крылатый
BDD же ещё!