-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
1 | |
Пишу свою библиотеку C++04.04.2023, 20:22. Показов 7292. Ответов 122
Метки нет (Все метки)
Приветствую!
Кто хочет поучится программированию на C++ за одно написать нужные классы и функции для будущих своих разработок, предлагаю присоединиться к разработке своей библиотеки C++. Зачем я это делаю? Кто-то скажет есть же уже готовые библиотеки, зачем изобретать велосипед и тд. Во-первых в существующих много лишнего чем вы никогда не воспользуетесь и нужно их изучать подстраиваться под их синтаксисы и тд. проблемы при отладке т.к. не знаете как что работает и тп. Во-вторых в своих знаешь, что и как работает, при необходимости можно доработать, написаны только самые основные нужные функции и классы с удобным для себя синтаксисом. В-третьих при создании своей библиотеки вы изучаете нативные функции и возможности самого языка программирования и на примерах пишите по своему, тестируете и оттачиваете свои мастерство и знания, которые в последствии вам помогут при создании своих будущих проектов. В перспективе я планирую написать с помощью своей библиотеки базу данных, язык программирования, веб-сервер. Ещё есть мысль с применением графической библиотеки wxWidgets(возможно другой) написать заголовочный файл для быстрого создания окон, элементов окна и др. https://github.com/arbnet/CppLibrary
1
|
04.04.2023, 20:22 | |
Ответы с готовыми решениями:
122
Создать свою библиотеку в С++ Создать свою библиотеку Разработать свою библиотеку Как создать свою библиотеку? |
59 / 35 / 8
Регистрация: 06.06.2013
Сообщений: 145
|
|
12.05.2023, 22:48 | 81 |
Какие преимущества имеет Array, например, перед std::vector? На самом деле подобного рода задачи - классный способ автору въехать в язык программирования, но судя по содержанию темы, работать с ней мне сейчас будет очень страшно. Тем более "в удобном синтаксисе" функции и методы названы с большой буквы, что вообще, никак, ни разу не удобно.
Не могу сказать, что мои знания в языках программирования глубже, чем у ТС (по крайней мере, своего фреймворка у меня нет), но и на работе меня держат не в качестве программиста - занимаюсь С++ скорее в качестве бонуса к основной профессии. Но когда-то тоже страдал такой фигней - что-то не устроило в <complex>, и я написал свой класс комплексных чисел - кривой, косой, но зато родной, со своим Удобным Синтаксисом. И даже обернул его в dll, шоб пользоваться, не задумываясь. Но задумываться приходилось снова и снова. Недавно откопал его и ужаснулся. И так как жизнь меня ничему не учит, переписал... Ну вот сейчас-то он стопудова лучше, чем стандартный complex! Хотя смотрю реализацию стандартного - а там какие-то хитрые конструкции, макросы, __builtin-функции... нет, мой класс все равно лучший, но рекламировать его всему миру я, пожалуй, пока не буду
0
|
фрилансер
5841 / 5368 / 1102
Регистрация: 11.10.2019
Сообщений: 14,336
|
|
13.05.2023, 07:34 | 82 |
это чисто субъективное. Я, например, тоже с большой буквы обычно их называю. Но, в целом, мне без разницы, как они названы, лишь бы имя отражало суть. В Qt, например, всё с мелкой буквы, а часто пропущен префикс "get" Ну, слегка непривычно было, но сейчас пофиг
ТС хочет написать свой велосипед, и напишет, наверное. Только поймёт, что тот же std::vector написан и протестирован намного круче. И рано или поздно всё равно перейдёт на всё стандартное. В частности, ТС не использует перемещение, placement new, забил на правило пяти. Это из сразу очевидных ошибок. Возможно, ещё куча граблей
0
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
13.05.2023, 08:23 [ТС] | 83 |
Спасибо, но нет по мне голимая реализация. Поймите я не утверждаю, что это полный отстой, многие же пользуются и тд. просто я уже глядел реализацию как там что сделано и по мне это лучше не использовать в своих разработках, вот и всё, если вас это устраивает я не против, пользуйтесь.
Мне нужны не готовые решения, а некоторый удобный функционал работы с дисковой системой, вот как работа с файлами https://en.cppreference.com/w/cpp/filesystem На основе чего я уже смогу сделать то как мне надо. Для меня преимущества очевидны, это простая реализация, в случае чего можно подправить, удобство работы, отладки, на основе чего можно создавать новые классы которые наследуют удобный функционал и тд. Проблема большинства в том что они хотят чтобы им всё выложили на блюдечке, чтобы всё как им хочется, но это их проблема, окружающим наплевать на то что кто чего хочет, у них свои хотелки и каждый старается перетаскивать одеяло в свою сторону. Например некоторые постоянно стараются меня заставить делать так как им было бы удобно и тд. вот только это напрасно я делаю и буду делать только так как мне удобно. У меня с годами выработались привычки, хорошие ли плохие, но я так привык. Например почему я сделал типизацию заглавными буквами, методы с большой буквы, везде у меня одни и те же имена переменных или отличающиеся одной буквой и тд. Это выработанные годами привычки. Когда то я писал базу данных на Pascal и определил типизацию таким образом, затем применил это в PHP классе работы с базой данных, ещё где-то и тд. теперь вот и в C++ сделал так же. Мне это удобно на любом языке у меня один свой стиль программирования не надо перестраиваться, вспоминать что и как надо делать в том или ином языке. Свой удобный синтаксис выработался, я быстро разбираюсь в своём коде нахожу недочёты и дорабатываю если перехожу с одного языка на другой и тд. И не надо меня заставлять делать как вам удобно. Ещё в детстве я уяснил одну простую истину, если чего-то хочешь, то сделай то что позволит тебе это получить. Я жил без отца да и мама со мной ничем не занималась, ничему не учила, кроме как на огородах, усадах пахать, дома убираться. До всего остального приходилось доходить своим умом... Я ещё в детстве сам мог починить газовую колонку, телевизор (ламповый, там просто было сразу видно где что сгорело, в современных я уже не разбираюсь, специального образования нет), замки в двери вставлял, мопед перебирал, потом и машины тоже(после армии сразу купил первую машину) и тд. Хотите чтобы типизация была так как вам удобно, методы были с маленькой буквы и тд. делайте форк или пишите свою библиотеку и тд. Делайте так как вам нужно, никто кроме вас этого делать не будет. Не хотите делать, тогда подстраивайтесь под то что есть и смиритесь с тем что не получите то как хотите. Вот и всё. ЗЫ. Я свою библиотеку пишу исключительно для своих целей, которые не раз озвучивал.
0
|
13.05.2023, 08:48 | 84 |
И после таких заявлений (особенно если учесть, что вы сами говорите, что в плюсах вы новичок) вы спрашиваетесь почему я до вас докапываюсь.
Вы в курсе, что авторы библиотеки имеют прямое отношение к развитию языка С++? Если вам не нравится как там все сделано, то вам стоит задуматься нужно ли брать на вооружение с++. Но это так к слову - хотите делать свое пилите. Я это не для спора, а для того, чтоб проинформировать вас о том, что уровень разработчиков там высокий и опыта у них навалом
0
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
13.05.2023, 12:57 [ТС] | 85 |
Я же сказал, не имею ничего против, если вас устраивает эта библиотека пользуйтесь.
Насчёт опыта. Одну и туже функцию можно реализовать тысячами способами и все будут работать и выдавать нужный результат. Вот только одна функция может быть написана чисто без использования других, другая с использованием, третья и так и так, четвёртая с вставкой ассемблера, и тд. Я хоть и чайник в C++ но у меня достаточно компетенции чтобы понять, что та или иная функция будет быстрой, легко используемой, не потянет ничего лишнего и тд. Глядя на то как там реализовано это трешь, не смотря на опытность тех кто это писал.. Вот поэтому современные компы нет, нет да подвисают несмотря на гигабайты оперативной памяти, кучи ядер процессора и тд. Добавлено через 3 часа 44 минуты Кстати вот тут на форуме видел тему насчёт кодировки. Перерыл можно сказать весь инет когда-то, но так и не нашёл рабочего примера конвертации кодировки, с iconv не компилируются примеры, куча ошибок, даже разбираться в этом шлаке, в чём дело нет желания. Может кто дать пример конвертации кодировки из UTF-8 в ANSI 1251? А в идеале бы универсальную из разных кодировок с нужную.
0
|
13.05.2023, 13:23 | 86 |
Есть iconv_open . а если хотите результата то показывайте минимально необходимый для воспроизведения код и ошибки которые получаете. Какой смысл подсказывать вам решение, все равно же вы будете вы его в свой код вставлять. Будут ошибки - будете следующий пример искать?
0
|
59 / 35 / 8
Регистрация: 06.06.2013
Сообщений: 145
|
|
13.05.2023, 19:04 | 87 |
Так я потому и спрашиваю, что для меня, как для потенциального пользователя или соавтора вашей библиотеки, они пока не очевидны.
В чем заключается простота? В интуитивно понятном синтаксисе? Простота с точки зрения обработки процессором? Быть может, это просто меньше кода в заголовочнике? В каком случае? В случае, если Array окажется более медленным, чем std::vector? В чем конкретно заключается удобство? Только лишь в синтаксисе? Какая-то неведомая сила запрещает наследоваться от std::vector? В таком случае, язык C++ тоже выложен на блюдечке. Всем ли он вас устраивает? В японских аниме после этого обычно на голову падает огромный боевой человекообразный робот, ты садишься в него и идешь спасать Планету в окружении пары десятков школьниц. Боюсь также представить, кого не было из родни и какие горячие точки довелось пройти Бьярне Страуструпам, Джеймсам Гослингам и Гвидо ван Россумам, раз они сумели провернуть такие могучие инструменты разработки...
0
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
||||||
18.05.2023, 21:23 [ТС] | 88 | |||||
Обновил гит. Непонятные ошибки..
Код
expected ')' before '&' token член "POINTER<CHAR>::sz" (объявлено в строке 195 из "D:\Cpp\Library\_types.hpp") недоступно член "POINTER<CHAR>::pnt" (объявлено в строке 194 из "D:\Cpp\Library\_types.hpp") недоступно член "POINTER<WCHAR>::sz" (объявлено в строке 275 из "D:\Cpp\Library\_types.hpp") недоступно член "POINTER<WCHAR>::pnt" (объявлено в строке 274 из "D:\Cpp\Library\_types.hpp") недоступно необходимо включить ключевое слово <typeinfo> перед использованием typeid необходимо включить ключевое слово <typeinfo> перед использованием typeid
0
|
фрилансер
5841 / 5368 / 1102
Регистрация: 11.10.2019
Сообщений: 14,336
|
|
18.05.2023, 21:50 | 89 |
начал я их подключать. Потребовалось ещё пару файлов.
первые же строки: далее using namespace std; правильно так catch(const std::exception &exc){Error::exce(typeid(exc).name(),exc.what());} Добавлено через 1 минуту https://onlinegdb.com/ZrhRllarOc Добавлено через 1 минуту и, поскольку везде, где этот макрос будет, также всё равно потребуется и заголовок, то раскомментируй в начале файла
1
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
18.05.2023, 21:54 [ТС] | 90 |
Это так макрос работает, обязательно должен быть перенос строки на новую, гит просто обрезает последнюю пустую строку.
ясно, спасибо
остались эти Код
член "POINTER<CHAR>::sz" (объявлено в строке 195 из "D:\Cpp\Library\_types.hpp") недоступно член "POINTER<CHAR>::pnt" (объявлено в строке 194 из "D:\Cpp\Library\_types.hpp") недоступно член "POINTER<WCHAR>::sz" (объявлено в строке 275 из "D:\Cpp\Library\_types.hpp") недоступно член "POINTER<WCHAR>::pnt" (объявлено в строке 274 из "D:\Cpp\Library\_types.hpp") недоступно необходимо включить ключевое слово <typeinfo> перед использованием typeid необходимо включить ключевое слово <typeinfo> перед использованием typeid Добавлено через 1 минуту забыл раскомменторовать, когда тестил, по разному проверял просто
0
|
фрилансер
5841 / 5368 / 1102
Регистрация: 11.10.2019
Сообщений: 14,336
|
|||||||||||
18.05.2023, 22:07 | 91 | ||||||||||
pgb, вообще, от макросов желательно избавляться, поэтому я бы сделал хотя бы так
_error.hpp
а их как повторить ? Добавлено через 5 минут ещё noexcept дописал )
0
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
18.05.2023, 22:07 [ТС] | 92 |
У меня они сами появляются, то пропадают, вообще мистика какая то..
Хорошо. Протестирую ваш вариант.
0
|
фрилансер
5841 / 5368 / 1102
Регистрация: 11.10.2019
Сообщений: 14,336
|
|
18.05.2023, 22:10 | 93 |
pgb, а если те поля сделать public, такие ошибки всё равно появляются ?
0
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
18.05.2023, 22:32 [ТС] | 94 |
Раньше пробовал, нормально было, без предупреждений. Потом и в perotected тоже нормально было.
Сейчас переместил в public, теперь куча мала стало Код
идентификатор "pnt" не определен идентификатор "sz" не определен идентификатор "tl" не определен ...
0
|
Модератор
|
|
18.05.2023, 23:21 | 95 |
А если собрать с
-Werror -Wall -Wextra -Wpedantic или /W4 /WX ?Хотя судя по теме мне даже страшно представить что будет)) Добавлено через 37 секунд Библиотеки надо писать чтобы собиралось с этими флагами
0
|
34 / 23 / 11
Регистрация: 18.02.2021
Сообщений: 87
|
|
18.05.2023, 23:55 | 96 |
Зачем этим заниматься? Если есть готовые решения и библиотеки, которые достигли достаточной известности чтобы называться стандартными. А стандарт вы сами понимаете он и в африке стандарт - это портируемость кода, документация к нему, унифицируемость, возможность кроссплатформенных решений и т.д. и т.п.
Добавлено через 3 минуты Ну то есть например вот работа с БД. Можно например отказаться от SQL и придумывать свой язык для обращения с БД, но где это будет применимо вне рамок разработок. Веб-сервер, уже есть curl для C/C++ много всякого позволяющего работать по сети. Графические примочки, это у каждой ОС своя, или можно брать кроссплатформенные решения типа Qt. Есть например OpenGL и прочие библиотеки, графические движки даже есть в них надо только въехать и можно делать на всем готовом.
0
|
фрилансер
5841 / 5368 / 1102
Регистрация: 11.10.2019
Сообщений: 14,336
|
|
19.05.2023, 07:29 | 97 |
Pro100Slavik, есть у человека свободное время и желание понаступать на грабли. Его право
0
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
19.05.2023, 11:11 [ТС] | 98 |
А вы попробуйте на этих готовых стандартных решениях сделать что-то большое, не в main несколько функций поиспользовать, а разработать полноценный проект. Вот тогда такие глупые вопросы отпадут само собой, и вам самим захочется сделать эти так называемые стандартные функции по своему. А рассуждать как прекрасны уже готовые решения может только тот кто на них толком ничего и не делал..
Вот честно, я бы с радостью использовал готовое, если бы оно не было таким шлаком.. Если даже на уровне написания чего-то с нуля возникают масса проблем даже на нативном языке, то что будет если использовать так называемые готовые стандартные и др. решения вы даже представить не можете, так как не разрабатывали на этом что-то большое. Над обычными приложениями зачастую работают целыми компаниями десятки, сотни, а то и тысячи человек, там да пень через колоду решают кое-как проблемы и собирают что-то. Но если вы один начнёте делать, то ни в жизнь никогда вам на этих готовых инструментах не довести до релиза свой продукт, 100% возникнет потребность некоторых доработок или некоторые баги в этих готовых решениях и вы уже не сдвинитесь с места.. Вот к примеру сейчас у меня возникли проблемы с предупреждениями, но это решаемо, на нативном языке ещё можно найти причину и устранить. А если это будет из-за сторонней библиотеки, то решение сводится к 50% а то и меньше. Короче если нечего ответить по теме, помочь мне с решением, то лучше не писать тут подобных мнений, грабли есть везде, но там где начинаешь с нуля, в чистом поле, там один раз наступишь, а другой раз обойдёшь, а если используешь что-то стороннее, то это считай, что идёшь по заминированному полю, и не факт, что сможешь это поле пройти..
0
|
19.05.2023, 11:19 | 99 |
Легко и не раз. И на MSных либах писал, и на Qt-шных. Все упирается в умение читать и понимать документацию. При чем реально те же Qt шные проекты написанные для ПК собирал (и они работали) даже на symbian (только потом, надо было внести правки учитывающие разность геометрии монитора и экрана телефона, но это спокойно решается условной компиляцией).
Интересно почему только у вас возникают страшные проблемы с готовыми, хорошо протестированными решениями.? При этом вы даже не успеваете попробовать на них сделать что то более менее серьезное. А в оправдание только сказки про "я посмотрел и сразу понял" да еще и с учетом уровня вопросов в этой теме.
0
|
-286 / 21 / 0
Регистрация: 22.09.2015
Сообщений: 1,067
|
|
19.05.2023, 11:51 [ТС] | 100 |
А тебе я уже тысячу раз говорил, если тебя устраивает хорошо, но не надо меня агитировать постоянно, я своё мнение по этому поводу уже высказал.
0
|
19.05.2023, 11:51 | |
19.05.2023, 11:51 | |
Помогаю со студенческими работами здесь
100
Как создать свою библиотеку Как правильно подключить свою библиотеку? Как написать свою библиотеку функций? Как добавить свою библиотеку в стандартные С++ Как создать свою библиотеку функций? Как подключить свою библиотеку, написанную на ассемблере? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |