Но вообще QtQuick на самом деле такое глюкалово корявое просто пиздец, я думал сделаю пиздатый интерфейс не хуже чем на этих ваших маках и вебах с цсс и в итоге уже на какие только компромиссы не пошел, позорные косяки в фичу определил и сука все равно проблемы лезут и лезут блять.
>>1680004 Помоги, а то делаю плеер на говяжем анусе (всмысле на бакенде дедбиф) и сука один метод chfysq прокинуть не могу хоть посмотреть как работает кьюмл этот с плюсами.
А то ни одного плеера нет вменяемого-современного, на линуксах так вообще больше половины тупо на пистоне завязана на библиотеки всякие уродские из окружения. Есть на маке плеер свободный Cog с браузером как в клементине ну и развивается форматы все поддерживает, но там автор упрлся по харткору он сам библиотеки пишет с разбором структуры аудиофайлов на обжектив си (то есть не портируемые нихуя). Я тоже когда то брался чисто для интереса более менее инкапсуляцию Ogg и Flac освоил но не декодирование даже, а форматов хуева гора да еще у каждого там разные версии и методы сжатия и даже порядок байт бывает, поэтому лучше взять что то готовое. Говядина вроде неплохо развита в плане поддержки форматов и кроссплатформенности (ну и эквалайзер надо оттуда как то спиздить полюбому) плюс разработчик наш то есть обратная связь будет лучше.
Рибят, можно как-то при компилировании в wasm попросить clang++ экспортировать функции без манглинга? А то как на пике получается - функция у меня в исходниках называется testadd, а жопаскрипт видит ее как _Z7testaddii.
>>1680349 1. залить контент файла в стринг/масив байтов/... 2. сделать string.replace или заменить в масиве вручную 3. залить исправленный контент в новый файл
Ананасы, вопрос такой Есть структура, они конвертится в тюпл, а затем переводятся в массив байт (с записью опкода чтобы знать что за операцию выполнить) и передаётся по сети При получении преобразуется обратно в структуру
>>1680335 > Не разыменовывай указатель, когда передаешь в конструктор базового класса Да я чет вообще не понимаю что я делаю. Слева это как я себе представляю наследование классов, а с права я вообще нихуя не понимаю. Через двоеточие наследование - public от публичной части наследование что ли только? Через Q_UPRLS это оно типа как макрос всякую хуйню подставляет (пиздец тоже блять объектно ориентированное программирование), тоже кстати что подставляет интересно, может втарую приватную часть из за чего все и не собирается. Потом конструктор по имени класса который блять наследует конструктор родителя что ли? Плюс в аргументы у него попадают указатель на родителя который мы передаем в родительский конструктор (пиздец ебануться блять) Снизу зачем эта хуйня с тильдой? Снизу кастомные секции которые надо в хуевой кутешной документации смотреть
Вообще не к плюсам если что претензия, они (понятно дело) берегли сишную "гибкость" так что имеем что имеем.
>>1680508 > что подставляет интересно АХАХАХА сука, убрал Q_OBJECT и собралось. сейчас посмотрю работает ли вызов метода из qml... ии разумеется нихуя не работает объект есть, а метода пишет что нет
>>1680532 > Долбоёб, прогони свой файлик с макросом через moc Как бля прогнать то, я ниче не понимаю. в документации нихуя об этом qtcreator сам все прогоняет насколько понимаю
>>1680754 Сейчас бы не отделять пробелами арифметические операции и присвоение, кек. Там есть настройки автоформатирования кода, вроде раздел "текстовый редактор". Мб для таких извращенцев как ты они добавили возможность не ставить пробелы.
>>1680529 Вроде как всякие питоновские ML фреймворки типа tensorflow написаны на C++ и уже юзаются в питоне. Скорее всего такой хуйни много, когда нужно выжать максимум производительности в критических частях. Ну еще в игровых движках поверх самого двигла написанного на крестах юзают какой-нибудь скриптовый язык типа Lua.
>>1680868 Учусь то я пока без. Меня интересует пользуются ли им в реальных проектах. Читаю Макса Шлее, у него в книге только одна глава дизайнеру отведена
Щас тыкал ардуино Уно и esp32 (до этого особо не игрался) и как-то внезапно понял, что перед мной настоящий c++, под esp ещё и библиотека собрана, чтобы всякие vector использовать. И это охрененно! Я всегда считал, что чистый си не очень в 2к20 подходи для микроконтроллеров, если не считать драйверный уровень. В c++ намного безопаснее благодаря ссылкам и контейнерам. Сишное говно на мк у тебя за массив уйдет и начнет память по чуть-чуть хуячить, и будешь ты сидеть с осциллографом искать ошибку и не понимать, почему твое устройство периодически сбоит.
>>1680884 >Сишное говно на мк у тебя за массив уйдет и начнет память по чуть-чуть хуячить Пиши так, чтобы не выходило. В чем проблема обвязку для массива написать? В крестах у тебя тоже что угодно может произойти, скобочки [] в векторе без проверки работают.
>>1680876 >Представь себе Ну так gnu.org же. Что у них кроме схемы может быть? Там диды заплесневелые сидят. Столлман вон, даже не знает (и не хочет знать), что в имаксе org-mode и helm теперь есть.
>>1680889 Да долбоебизм делать самому обертки и опять велосипедить, когда уже всё 200 раз было выдумано. Есть std::array, просто прекрасно, и к нему прекрасно подходит range based цикл. Охуенно. И я уверен, что производительность будет абсолютно такая же благодаря const размеру массива, как говнокостыль на си. И таких примеров отличной применимости крестов к мк масса
>>1680914 На МК обычно все это тупо не нужно. Все переменные глобальные, массивы статические. То есть у тебя в цикле izalupa < zalupa_count; ++izalupa - и за границы ничего не выходит.
Хуяси, на винде, оказывается, можно сделать std::system_error(code, std::system_category()).what() и what вернет текстовое описание для любого кода ошибки из винапи (GetLastError, HResult, WSA*, и т.п.) -- да ещё и на русском языке. Чё только не найдёшь в стандартной библиотеке. А я раньше городил свои классы исключений для виндовых ошибок.
>>1680989 Вернет. Но только в кодировке cp1251 (ну или подобной однобайтной). Лучше взять boost::system_category, добавить дефайн BOOST_SYSTEM_USE_UTF8 и получить вывод в кошерном UTF-8
Объект исключения инстанционировать не обязательно. Можно проще сделать: std::error_code ec{code, boost::system_category}; // ну или std::system_category ec.message(); // return std::string
>>1681694 >вам реально интересно в этом говнище копаться? В этом суть крестов - есть решения на абсолютно все вопросы, при этом с хорошим качеством кода.
>>1681534 Угу, только utf-8 на винде -- он имхо ни в пизду, ни в красную армию. В смысле, ни в OutputDebugString/MessageBox (cp1251), ни в консольку (cp866).
>>1680989 >Хуяси, оказывается Ничего удивительного, наоборот, в этом вся суть пердольного говна - доков-то нет. Доки делает только майкрософт, поэтому когда программист гуглит, он получает GetLastError() и его друзей, вот всю жизнь так и пишут, ведь как ты узнаешь про другое? Никак. Только красноглазики которые свою библиотеку писали и знают, и шизоиды пердолики которые всю либу и её обновления от корки до корки зубрят.
>>1681780 А кто по докам язык изучает? Обычно просто гуглят по ходу дела "как в язык-нейм сделать хуйня-нейм", а в доки лезут уже когда знают, чего хотят.
>>1681792 Библиотека это не язык. Библиотеки не изучают, их используют, а чтобы использовать нужно знать о их существовании, а для этого нужна документация, качественная. Но красноглазие это же ШВАБОДКА, а писать доки совсем не интересное занятие, поэтому у пердоговна нет доков, в результате оно никому не нужно, потому что попросту никто не знает о существовании и возможностях кроме самих авторов.
Помогите с задачей. На вход подается строка, состоящая из цифр (0 и 1), круглых скобок и знаков и +. Грубо говоря логическое выражение. Нужно его вычислить. Вопрос как? Пока что реализую это рекурсией. Рекурсивная функция принимает в себя строку, возвращает булеан. В строке - выражении находит последнее математическое действие, которое в нем должно вычисляться. Делит входящую строку на 2 части (слева от или + и справа от них). Затем вызывает саму себя 2 раза, с левой частью, и с правой. И все это вызывается до тех пор, пока функция не получит простой пример на вход, типа "1*0", вычисляет его. Возвращает результат. Который используется для вычисления уже вызвавшей функции и так до последней, которую вызвали первой. Но все это реализовано криво, скорее всего неэффективно. Есть ли другие способы решения такой задачи или может вообще готовая мат. функция, решающая формулу в строке? За воду в тексте не бейте, я не умею объяснять.
>>1681808 > Code page conversion > As Windows operates natively in UTF-16 (WCHAR), you might need to convert UTF-8 data to UTF-16 (or vice versa) to interoperate with Windows APIs. > MultiByteToWideChar and WideCharToMultiByte let you convert between UTF-8 and UTF-16 (WCHAR) Щас бы высирать говнокод с конверсией строк на каждый вызов функции. Кампуктиры мощныи - всем хватит, да? Может тогда луччше сразу на джаваскрипте писать, там без базара всё на UTF-8.
>>1681805 Не соглашусь с тобой; я считаю, библиотеки — это тоже часть языка. Мало знать синтаксис и операторы чтобы заявить, что ты знаешь язык. Нужно ещё и писать на нём так, чтобы другие люди не плевались от велосипедов. А это уже опыт нужен, километры прочитанных чужих сорцов и ответов на стековерфлоу, чтобы знать, как вообще принято, и что "вот так вообще можно было".
>>1681810 Лабы идут нахуй. если все выражения составленны правильно, то есть все со скобками, то можешь искать последнюю открывающую и после нее первую закрывающую. Между ними вычислять выражение и подставлять результат. Выполнять пока не останется 1 или 0, либо пока не встретишь ошибку в формуле
>>1681698 >на все вопросы Правильно. Похуй, что 95% этих решений никогда в жизни не пригодятся, ведь достаточно одного факта их наличия, чтобы преисполниться священным экстазом. Ради этого можно даже разрешить себя насиловать огромным легаси дилдаком с занозами и гвоздями наружу.
>>1681928 >А вот тут я кстати не знаю может подвешенная операция n / 10 вещественное возвращать? Какое вещественное? while(n != 0) { n /= 10;} Какое тут вещественное будет, о чём вы, я ебу собак.
>>1681919 Ну и кстати ты видимо не вкурсе как железо работает, деление довольно тяжелая операция n /= 10 это сразу
idiv %n1, 0x0A, %n1 cmj %n1, 0x00, .L01
целочисленное деление и условный переход в начало цикла грубо говоря В твоем же случае изменение переменной n предполагается только после проверки условия и запуска итерации цикла, то есть два деления придется делать еще в какую то переменную записывая при том что переменная n нигде не используется дальше то есть беречь ее нахуй не надо. Наверняка конечно какой нибудь хороший компилятор сам это увидит и переделает, но тебе тоже нет смысла так уродовать свой код, ты лучше ему не делаешь.
>>1681937 К тому же любой компилятор в 2к20 всё это соптимизирует. Код пишется не для машин, а для людей. while(n /= 10) потенциальный источник ошибок, никто так не пишет.
>>1681940 Хуикосекунда, это несколько тактов во первых, во вторых устройств деления ну вот скажем в интеле любом современном всего два - один чисто целочисленное может считать (без остатков тупо) второй полноценный, в двух каналах которые еще и другое что то помимо этого могут считать, то есть операция деления обречена тупо стоять ждать свое конкретное окошко и ни в какие другие суперскаляр ее послать не может. Благо таких операций в коде как правило не много. >>1681941 Ну так вот именно что соптимизует так как ты бы мог написать сразу а не разводить какой то некрасивый мудазвонский код пряча запись в переменную куда то в тело цикла. Какого рода там ошибки могут быть непонятно
>>1681956 Да плевать, всё равно очень быстро. >писать сразу Так хуже читается, пока n не равно 0 лучше чем пока n, которое мы ща делим на 10, не станет равно 0. Затруднение чтения порождает ошибки.
>>1681956 >Ну так вот именно что соптимизует так как ты бы мог написать сразу а не разводить какой то некрасивый мудазвонский код Ты реально везде у себя в коде вместо деления на 10 пишешь (x * 3435973837) >> 35?
>>1682102 Ну нет конечно, но это ведь выглядит и не проще, и у того анона нихрена не проще выглядит
В первом примере энка самоделится на десять и проверяется на ноль, дальше проверяется меньше ли число минимума и если что записывается. Я кстати не вижу с этим проблем о которых изначали вообще спрашивали что ужас-ужас, переменная локальная локально обрабатывается никуда не сохраняется, ничего вообще ужасного.
Во втором же примере цикл начинается с проверки n на ноль сразу, потом только делится и дальше там все остальное. Потом уже то что мы получается до этого поделили и уже заюзали визде с битовыми этими операциями, на следующем витке цикла получается только проверяется а ноль там вообще был или нет.
Вот так человек борясь с какими то там гипотетическими ошибками сам запутался накосячил и сделал грубейшую ошибку.
Какого хуя error: call to 'check' is ambiguous. Ведь ссылка на массив лучше подходит, т.к. для указателя нужно лишнее преобразование ( разложение ( decay ) массива в указатель )
>>1682214 >Потому что нехуй писать как еблан со своими ссылками на массив, про decay знаешь, а про std::array не знаешь, про span видимо тоже не слышал Епта, при чем тут std::array, вопрос чисто в академических целях, а не для того, чтобы чет там пофиксить
>>1682212 > call to 'check' is ambiguous разве ссылку не check(&arr); надо передавать? А то ты ей тут просто аргумент пихаешь а там оно на что ссылку то должно дать на копию на оригинал, что ожидается то что у тебя в main массив при помощи функции обработается?
>>1682223 >разве ссылку не check(&arr); надо передавать? А то ты ей тут просто аргумент пихаешь а там оно на что ссылку то должно дать на копию на оригинал, что ожидается то что у тебя в main массив при помощи функции обработается? Не особо понял что ты вообще тут написал. Если ты про
int main() { int arr[10] = {}; int (&refarr)[10] = arr; check(refarr); return 0; }
Поясните за clang. Если это замена gcc, то почему они зависят друг от друга? Почему clang использует по умолчанию библиотеки gcc? При этом сам он их у меня не подхватывает. Окей, погуглил я, и понял, что у него есть свои исходники библиотек libc++, которые еще надо собирать. Но и тут хуй пойми что и как. Выясняется, что для сборки нужен снова gcc, чтобы потом выполнить Makefile. Окей. У меня стоит mingw-w64 (порт gcc на винду) с posix потоками (они требовались для сборки одной библиотеки). Кстати, почему вообще все так топорно сделано? Почему я должен переустанавливать целый компилятор и менять эти потоки? Так вот, теперь я хочу собрать эту libc++, у которой даже параметров, связанных c posix потоками нет в cmake и после попытки запуска make, спустя некоторое время, он начинает срать ошибками, что не может скомпилить win32 потоки из исходников библиотеки. Мне что, снова gcc переустанавливать? Пиздец. И это еще не считая того, что у меня ебучая llvm и cам clang собирались, сука, весь день. Почему это так долго? Что я мог не так сделать? Буквально по 4-5 часов у меня они собирались... Я и скомпилированные бинарники llvm ставил, но там не оказалось какого-то llvm-config для сборки libc++...
>>1682291 Ну фронтенды связаны наверно, зачем двум свободным проектам средства распылять и пилить каждый свою поддержку стандартов языка, тем более такого как плюсы.
Так ананасы Есть шаблонная структура, она инстанцируется разными типами и всё это упаковывается в картеж Как получить копию, например, Struct_t<SomeType1> в рантайме? Или может быть есть другой способ хранить такой список разных типов?
>>1682337 >>1682333 >>1682324 Алсо, я могу, конечно, передавать в конструктор Struct_t индекс по которому он будет находится в картеже, но хотелось бы этого избежать чтобы не было путаницы в будущем
>>1682382 Так и хотел делать в начале, но мне бы всё равно пришлось знать тип в который кастить Хуй с ними, короче, не буду изъёбываться. Лишний раз лучше напишу так
>>1682337 Если в рантайме есть только индекс, то типа у тебя, получается, нету? И что ты делать собрался тогда с этой хуйнёй? Вообще, можешь ёбнуть тупой свитч на каждый индекс.
>>1682324 Используй паттерн посетитель, правда его нет для кортежей в std, так что придется самому писать - он почти такой же как в variant, только с индексовм.
>>1682487 > И что ты делать собрался тогда с этой хуйнёй? idx внутри Struct_t это опкоды которые передаются по сети param это данные соответственно, точнее там не структура, а ещё они картеж (для хранения типов) Зная какой опкод мне пришёл в пакете я бы его считывал в param (мне бы не пришлось думать о порядке полей), а затем он преобразовывался бы структуру которой я его инстанцировал при упаковке в картеж.
Короче говоря чтобы чуть-чуть меньше ручной работы было.
Наверное, не самый хороший способ это сделать, но хотел попробовать вот такое
>>1682466 И что? Порт gcc на что? К тому же я планировал под разные ос потом собирать приложение, мне нужна кроссплатформенность.
>>1682496 С ним я дел не особо вообще хочу иметь. Любая unix среда - костыль, который еще и работает в разы медленней. В частности медленно собирает.
Алсо, я уже нашел способ заставить работать существующие библиотеки gcc с clangом. Надо было добавить флаг -target x86_64-pc-windows-gnu Без этого флага он вообще не мог ни одной либы найти, хоть и в PATH все было прописано. И напрямую, через -I -L я указывал заголовки и библиотеки, не работало нихуя.
>>1682559 А clang я выбрал, потому что вычитал, что его лицензия не требует выкладывать исходники приложения. Но я не проверял эту инфу да и особо пока не вникал в это. Смотрел еще сравнения clang и gcc, первый по производительности опережает немного. И да, под clang я подразумеваю clang++, а под gcc - g++.
>>1682559 >И что? Чел, ну ты реально тугой. Ты пытаешься завести POSIX софт на системе, не поддерживающей этот стандарт, и спрашиваешь почему всё настолько через жепу?
>>1682562 >И да, под clang я подразумеваю clang++, а под gcc - g++. Вот тут я орать начала, ахуеть ты реально тугой. Это линки, блядь, считай что ярлыки на рабочем столе.
>>1682583 >порт >POSIX софт Это я тугой? Винда тут даже ни при чем. На любом другом дистрибутиве linux все было бы +- тоже самое. Clang'у так же бы пришлось говорить где лежат библиотеки. И о каком, нахуй, posix речь, когда ИСХОДНИКИ, сука, той же libc++ не содержат в CMAKE параметра для управления теми самыми posix потоками, разве что на unix от них вообще пришлось бы отказываться.
>>1682608 Мне нужно чтобы (в данном случае match) возвращался копию этого значения из кортежа. При этом лямбда не должна захватывать ничего по ссылке\указателю.
Почему не компилируется? >error: invalid operands of types ‘Int’ and ‘Int’ to binary ‘operator+’ Если убрать все из main(), то нормально компилируется. Зачем тогда нужна именно такая форма operator+ с указателями?
>>1682562 >А clang я выбрал, потому что вычитал, что его лицензия не требует выкладывать исходники приложения 1) Скомпилированные программы не попадают под действие GPL 2) Благодаря GCC Runtime Linking Exception ты можешь использовать glibc, не попадая под действие GPL
>>1682639 Посмотри доклад Полухина про трюки из такси, там вроде что-то похожее в третьей части. Алсо, можно auto поставить вместо типа возвращаемого значения
>>1682651 >new еще и без delete >перегрузил + с разными типами (Int, Int*) >динамическая аллокация без очистки на каждый вызов + >складывает указатели Пизда. Ты наверно туториал по С# открыл вместо С++ да и не заметил.
>>1682660 > Алсо, можно auto поставить вместо типа возвращаемого значения Я так и сделаю, но в таком случае мне этот картеж вообще не нужен будет. А так бы я по индексу делал копию param и получал нужный тип. Ну если бы это работало, конечно.
>>1682635 Ну вдруг у тебя реально есть надобность в функции типа A★ A::operator+(B★), зачем компилятору такое запрещать. И, да, если тебе интересно, он должен скомпилироваться если ты сделаешь Int ★c = (★a) + b
>>1682698 Так ты определи Int ^ operator+(Int ^, Int ^), тогда будет можно. >>1682686 Потому что можно что угодно определить. Тебя смущает сложение разнородных объектов? Может, я хочу матрицу умножать на вектор типа b = A x, тогда сигнатура должна быть vec operator(mat, vec). Логично? Пиздец как логично.
>>1682703 >Так ты определи Int ^ operator+(Int ^, Int ^), тогда будет можно. Это через friend определять? А то если в классе пытаюсь определить, то компилер ругается. Говорит, что лишний аргумент ненужон.
>>1682735 >error: ‘friend’ used outside of class >error: member functions are implicitly friends of their class Заебали, так и скажите сразу, что перегрузка операторов это фейк. Зачем пудрите мозги нам, сишникам и скриптовикам?
Хочу сделать приложение, которое будет пользоваться интернетом. Что можно прочитать, про устройство интернета, и собственно про средства, которыми должна пользоваться такая программажелательно с примерами реализации простой программы?
>>1681810 Если нужна не рекурсия то формула перегоняется в какую-то из польских нотаций (например в обратную польскую с помощью алгоритма сортировочной станции). Ну а в польской нотации выражение элементарно вычисляется на простом стеке.
>>1683176 Оберни в IIFE. Вообще, как ты себе видишь нормальное решение своей задачи? Генерировать 2^64 версий std::get? Или может создавать для каждого tuple список из лямбд и обходить его с целью поиска лямбды, которая вызовет нужный get? И вообще, ты должен знать, какой конкретно индекс у тебя будет в конкретном месте ещё на этапе написания кода. Если ты не знаешь, то пиздуй использовать std::map
>>1682978 Чтобы фундаментально разобраться, читай про сокеты и протоколы - TCP, UDP, HTTP, TLS, и т.д. Всё остальное работает поверх этого. Потом либо ебош на сокетах по хардкору, либо бери готовые библиотеки и фреймворки. В одной только винде куча всяких апи под разные задачи https://docs.microsoft.com/en-us/windows/win32/networking
Плюсовики, а что у вас делается для облегчения изучения языка? Не боитесь ли через несколько лет повторения ситуации как с перлом и коболом, когда специалистов тупо не найти даже за нормальные деньги? Сейчас я смотрю, куча народу с С/С++ перепрыгнула в Go, и новые проекты уже только на нём начинает. Опасная ситуация, вам не кажется?
Хай гайзы. Почему дауны из комитета до сих пор не введут стандартизированный ABI, чтобы не ебаться со всеми этими совместимостями между компилерами, линкерами и их версиями. Есть ситуации, например пукалки с 1КБ памяти, для которых билдить желательно по-другому - ну и пусть делают себе какой-то кастомный тулсет, хуярящий фасткол во все дыры. Но в подавляющем большитнстве ситуаций наверняка возможен единый бинарный интерфейс, который позволит нормально сосуществовать всему зоопарку билд-инструментов Ваши мысли по этому поводу, коллеги
>>1683395 Titus Winters и пытается как-то>>1683417 >В смысле сначала должен выполнится цикл в первой функции, и только потом во второй Всё равно не понял. А что происходит, если не это? В любом случае почитай, как использовать мьютексы, потому что: 1) создаёшь уже залоченный мьютекс и пытаешься его потом захватить 2) захватываешь один и тот же мьютекс кучу раз в одном треде без соответствующего разлочивания 3) OpenMutexA емнип возвращает ошибку, если мьютекса не существует - проверяй коды ошибок функций
>>1683481 Такой сложный вопрос я задал что-ли? Подскажите. Почему вот так не работает std::vector<std::pair<uint8_t, intptr_t>> a(5, std::make_pair(0, 0));
>>1683432 При компиляции - каждый .cpp файл превращается в .o\.obj, и потом вся эта параша линкуется линкером в один .ехе файл, и линкер разрешает всякие внешние функции.
Так вот - это всё ебаная бинарная масса, которая работает четко благодаря неким соглашениям.
Например, как и кто чистит за собой стэк (либо сама вызываемая функция, либо тот, кто ее вызывает). Как вообще аргументы в функцию передаются (те самые calling conventions) Как кидаются и ловятся эксепшены. Из более забавных вещей: какой layout у каждого класса и так далее.
Здесь всё - четко на доверии. Если ты, допустим, эстет, и руками сделал бинарники разными компиляторами\версиями компиляторов - у них внезапно один и тот же std::string может быть реализован по разному (например где-то есть SSO, а где-то нет).
И когда ты этот std::string будешь передавать между разными модулями, скомпилированными разными компиляторами - другая имплементация будет видеть полную бинарную хуйню, вместо строки.
Собстно, вот это "доверие" и некий "договор", как все должно выглядеть - и есть ABI.
>>1683380 >а что у вас делается для облегчения изучения языка? Не считая того, что весь интернет забит документацией, блогами, статьями, и выступлениями, а на стековерфлоу есть ответ на любой вопрос "как сделать х в с++"? Ну даже не знаю.
>>1683697 Зашквар это делать несколько одинаковых методов/классов, которые отличаются только типом данных, вместо использования обобщений. А синглтон это оюычный паттерн, цель которого экономия ресурсов системы.
>>1682832 Короче при вызове функции Openmutex оказывается нужно было первым аргументом указать SYNCHRONISE, правда не понятно, в чем смысл не делать его по умолчанию
>>1679966 (OP) Котаны, посоветуйте учебник по C/C++, где объясняется как устроена память, вызовы и так далее по списку. Внутреннее устройство таких простых вещей как определение переменной, функции, вызов функции и др. Заранее благодарю.
>>1684249 Начни с квантмеха, полупроводниковых материалов. В конце до транзисторов дойдешь. Гугли Нейман И. "Математические основы квантовой механики".
>>1684278 Начни с эпистемологии и философии науки. Иначе как ты сможешь понять, что значит "знать"? Гугли Chalmers A. "What Is This Thing Called Science?".
Больше года не заходил сюда, а тут шапку поменяли: > Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
В самых ранних тредах, то-ли здесь, то-ли в крестотреде, анон рекомендовал как годно после С вкатиться в кресты. Если ты еще здесь, напиши еще раз пожалуйста. Спасибо.
>Uncle Bob Сука, как же он меня выбешивает. Никогда не встречал настолько долбоебов К.О., которые вещают банальщину как откровение свыше. 90% того что он напиздел, уже неактуально.
>>1684570 >This library is just a proof-of-concept of the windows kernel-mode drivers, which can be written in Rust programming language. >just a proof-of-concept >can be written Написал еллоуворлд - теперь ты программист, ведь программа написана, а остальные программы просто как много хеллоуворлдов, тривиально, можно даже время не тратить на банальщину.
>>1684387 Го не системный язык, пчел. Язык со сборщиком мусора априори не может быть системным. А раст - мертворожденная хуйня для хипстеров. Даже Мозилла обосрались с растом и до последнего не хотят этого признавать.
Мне не нравятся касты в крестах, я нормален? Всё время пишу обычные скобками. Даже когда чужой код себе пизжу, заменяю в нем static_cast на Си-каст (вот такой я злодей).
>>1684799 Проблема в том, что каст порой нужен только чтобы заткнуть варнинг. Тип в скобочках мне ещё не влом прописать, но уродовать выражение ебаниной static_cast<>-а только чтобы не было варнинга -- уже как-то возмущает.
Плюсач, выручач. Я постоянно испытываю дикую попаболь при сборке библиотек/бинариесов из исходников. Постоянные ошибки, постоянные гуглёжки, как меня уже это достало. Подскажите куда копать что бы овладеть мастерством компилирования исходников? Желательно бы ещё статейки накидать.
Играюсь с векторами, наткнулся на, казалось бы, нелогичную хуйню. Возврат ссылки на вектор из метода не работает как ожидалось, код тут -> https://pastebin.com/frmYKgFp
Укажите на ошибку плез (код компилится, остальное написал в комментах). Почему я не могу править внутриклассовый вектор таким макаром? Это же, блять, ссылка на него.
>>1684968 upd: бля, вот я обосрался. Я почему-то думал, что auto неявно должен забирать в тип ссылку (ибо я возвращаю ссылку на вектор из метода). Но нет, надо написать auto&, чтобы это заработало как надо.
А вообще, такая тема норм? То бишь, это не говнокод возвращаеть ссылку на вектор туда, где я хочу им МАНЯпулировать? Проблем вроде как быть не должно, ибо вектор неявным образом аллоцируется в куче, а не в стэке (ибо это динамический буфер). Но прикол в том, что с обычными функциями, не методами (метод - функция внутри класса) этот финт не работает, есть предупреждение возврата ссылки на оюъект на стэке (щито? Вектор разве не на куче аллоцируется?? На стэке сохраняется адрес вектора, который в куче, какая тогда проблема?). Почему это работает с методами, но не работает с обычными функциями?
>>1684982 >Раст Мертворожденный высер для мамкиных нитакихкакфсе. Его будущее - теперешнее положение D, не более. Максимум, если повезет, займет какую-то мегаузкую нишу в прикладухе, в системщине у него ноль шансов.
>>1684988 Как же ты ошибаешься. Раст уже выбирают многие крупные корпорации. И это правильно, он действительно во всем лучше крестов, тут ничего не попишешь. А ди был обречен с самого начала, не было поддержки, был gc.
>>1684986 > вектор неявным образом аллоцируется в куче, а не в стэке Нет. Он аллоцируется там где ты его аллоцировал. В твоем случае это автоматическая переменная, тоесть на стеке. Вектор может дополнительно аллоцировать необходимую память в куче - но она очистится при автоматическом удалении вектора. В твоем случае все ок, из-за того что ссылка и вектор находятся в одном скоупе, но если ты передашь ссылку за скоуп в котором создан вектор то ничего хорошего не будет.
>>1685006 а если мне по каким-либо обстоятельствам нужен доступ к переменной/структуре данных класса извне? Или в рамках ооп это недопустимо, так как ломает принцип инкапсуляции?
>>1685017 вывод: вектор при любых обстоятельствах следует передавать по значению из функции? Ну, или же изначально аллоцировать его на куче и вернуть указатель из функции?
>>1685000 Сама Мозилла, родитель этого говна, начинает потихоньку отказываться от раста, потому что они осознали его полный обосралити. Раст - никому ненужная хуйня. Мертворожденная. Кресты мощнее раста раз в 50. Полная гибкость и всемогущество крестов против ебанутого компиля раста, в котором нет кучи фич, которые есть в крестах, нахуй то говно нужно вообще?
>>1684888 vcpkg install library_name если лень пердолиться.
А вообще - то, что ты говоришь это странно. Во всех +- современных библиотеках есть cmake (ну окей, кроме буста), и там все собирается с полпинка одной командой.
>>1685049 > вывод: вектор при любых обстоятельствах следует передавать по значению из функции У тебя при этом будет создана его копия - а это не всегда то что нужно. В большинстве случаев ты можешь использовать ссылку при условии что она не будет покидать скоуп в котором получено. Возращения указателя неплохая идея, если ты подразумеваешь какой-то из умных указателей.
>>1685117 Наследование, метапрограммирование (с фичей variadic templates к тому же), гибкость в выборе полиморфизма (статический vs динамический, а в расте вообще ООП как такового нет, его можно только убого костылировать через типажи), также в расте отсутствует нечто похожее на constexpr, нет кастомных аллокаторов и т.п. Продолжать? К тому же, в крестах есть бесчисленное количество библиотек для самых разных целей, когда раст юзает и будет юзать кучу биндингов из С и никогда не будет иметь стольких фич, сколько есть у крестов, потому что всем похуй на ржавый высер. Дебичи в очередной раз пытаются высрать некоего революционера, не понимая, что чтобы свергнуть С и С++ с трона системщины, нужно либо скинуть астероид на Землю, либо произвести технологическую революцию в мире железа, которая поменяла бы в корне современную архитектуру компьютеров. И первое, и второе произойдет с вероятностью ноль целых хуй десятых.
>>1685232 Конкретно в Qt по умолчанию всё включено, нужно самому искать, какие модули не используются и отключать их. А их состав может от версии к версии изменяться. Не могу даже представить, зачем такое понадобилось.
>>1685241 Хуй знает, лично я пока отметил только одно приемущество раста перед плюсами - это возможно как C# около члена класса задать кастомные атрибуты типо #[zalupa_1] и потом можно пройтись по всем членам класса и отфильтровать по атрибутам. Статический метаданные одним словом. В плюсах единственный вариант такого это извращения с макросами.
>>1685261 > Есть широкий спектр его применения, вот и охватывают все их сразу. Анончик я тебя всё равно не понял. На разных платформах по умолчанию соберутся разные пакеты. Не понимаю, почему нельзя было добавить флаг --all для "охватывания всех сразу"? словами не передать, какая жопаболь, когда какой-то модуль не выбран для сборки, если не выбрана какая-то его зависимость. уведомлений при этом тоже никаких нет
>>1685268 Допустим надо сериализовать некую структуру в json формат. Чтобы это сделать нужно для каждого поля вручную писать код сериализации т.к. ты не можешь пройтись по полям структуры динамически. Потом вдруг понадобится добавить еще одно поле в эту структуру и придется править код в разных места. Вот пример https://ideone.com/4XOpFu
>>1685292 >Внезапно, это макрос. Ну я там понял там адекватные макросы которые можно программировать как обычный код? Без черной магии как в плюсах с абузом скобок и склеиванием теста.
>>1685331 >Зачем тебе ее получать Я же кидал уже реальный пример с сериализацией где это необходимо >>1685276 >И как получить с макросом #define STR(x) #x в коде потом STR(zalupa) превратится в "zalupa"
>>1685274 Как человек, который натрахался со сборкой этой сучары целый день, хочу сказать - не пиздите, там тебе для этого целый тул есть в виде бинарника, который, вроде, configure зовётся. Он расписывает от а до я, что нашёл на машине перед сборкой.
Подскажите хорошую иде для плюсов, чтобы все работало из коробки. Скачал затмение (каюсь), создал там хело ворлд, но сбилдить не могу, пишет что в пасе не найден какой-то мейк.
>>1685458 > там тебе для этого целый тул есть в виде бинарника, который, вроде, configure зовётся. Он расписывает от а до я, что нашёл на машине перед сборкой. Это безусловно круто, но он не пишет того, чего не нашёл. То есть я написал, что не хочу qtdeclarative, значит отвалится ещё и qtwebengine и этот configure ни слова об этом не скажет. Вот и сиди думай, какие библиотеки нужны для каких библиотек, а главное зачем.
>>1685485 >Ставь visual studio >можешь vs code попробовать с cmake >>1685496 >вижуал студия как вершина IDEстроения Толсто. Пока отобрал следующих кандидатов (на винду): кдевелоп, кодеблок, коделайт. Если кто-то пользовался этим, просьба поделится впечатлениями, особенно как у них там с тестами дела, на вики пишут что у коделайте нет ковереджа под винду.
>>1685924 >Пока отобрал следующих кандидатов (на винду): кдевелоп, кодеблок, коделайт Вот это правда охуеть как толсто. Какие-то говноподелия. Если ты идейный хейтер (что уже само по себе смешно) - то в чем проблема взять тот-же qtcreator?
>>1685931 Брал кткреатор, создал там хелло ворлд, запустил, и не вижу куда делася сам цпп файл и почему у меня только тхт. Пока экспириенсом не доволен.
Двач, есть вектор в векторе, как правильно удалить внешний вектор если какой-либо элемент внутреннего вектора не подпадают под условие? Что-то я запутался в циклах, да и гавнокод делать не хочу. Подскажите.
>>1685939 for (const auto &inner_vec : outer_vec) { for (const auto &idx : inner_vec) { if (idx is bad) { //deallocate all the inner arrays + outer array & break } } }
>>1685973 Хз, походу KDevelop криво портировали на винду. Я на Линуксе (по стечению обстоятельств, юзаю KDE в кач-ве окружения, лол) и у меня зоибис работает.
>>1685986 Определись сначала со стандартом, потому как в c++17 всё метапрограммирование сводится к variadic template, constexpr if и чуть реже std::enable_if. Если типами хочешь жонглировать, то посмотри, как разные методы и типы реализованы в Boost::mp11. Александреску читай только после всего, что я написал выше. Иначе могут произойти необратимые изменения в мозге.
>>1685992 А какое есть реальное применение у метапрограммирования, кроме компайл-тайм вычислений и статического полиморфизма (ОЧЕНЬ годная штука, чисто бесплатный по рантайму полиморфизм)?
>>1685993 у нас в проде сериализатор\десериализатор самопальный для кернел мода протобафов не завезли с одинаковым интерфейсом в KM\UM.
Чето в духе (тайпдефы как раз для одинакового интерфейса):
auto packet = serialize(L"string", 1234, std::vector<std::wstring>{L"123", L"234});
auto s1 = packet.get<wstring_t>(); auto s2 = packet.get<int>(); auto s3 = packet.get<wstrvec_t();
Плюс, еще на шаблонах + X-macro сейчас переделываю конфиги для софтины.
MACRO(key, L"default value") - автоматически выведет тип (причем для литералов - будет wstring) сгенерирует сеттер\геттер\лукап для runtime-модификации и сброса. Сейчас еще напишу автоматическое выдирание из JSON'а всяких не совсем стандартных значений.
Я бы сказал так - иногда бывают задачки, где нужен generic подход. И вот тут - если ты шаблонный маньяк - как раз есть где развернуться. Но и без них задачи решаются, просто менее элегантно.
Пикрелейтед - пример говна, которое я нашлепал пару лет, и оно сейчас в проде. Я знаю, что write_to_tuple можно бахнуть рекурсивно, а не вот так лениво - но тогда мы еще не переехали на C++17, а мне было лень делать специализации структур.
>>1679980 Пропустил, сорри. Ты не поверишь - я самоучка с купленным дипломом на дистанционном обучении. Я сидел и каждый вечер задрачивал С++ в течении года до первой работы крестовиком.
>>1686005 Касательно выпускников вузов - тут сложный вопрос. У нас смотрят на то, что ты умеешь, а не на то, где ты учился, если мы говорим про позиции разработчиков с опытом.
Если мы говорим про интернов - то тут я ничего не скажу, не знаю.
анон-анон, а вот скажи - почему часть программистов не любит PCH(precompiled header)?
хожу по гиту, смотрю крупные проекты - многие не делают такую фичу.
Но почему? ведь это нехилый буст компиляции (ради прикола пробовал включать, компиляция была быстрее на 20-40%) Да и на самом деле код становится чище без миллиона инклюдов
>>1685974 Мне нравился кодблок. Особенно прокрутка правой кнопкой и дебаг-run-to-cursor одной кнопкой.
Но он не обновлялся с 2017. С ним идет какой-то мудацкий билд mingw со странными багами в случайных местах (например отсутствие std::to_string при том что с++11 очевидно поддерживается). В дебаггер ~10 лет не могут добавить питон и как следствие нормальное отображение содержимого stl-контейнеров. При открытии проектов больше 20kloc всё ложится.
Если собираешься решать что-нибудь кроме однофайловых лаб, подумай еще раз.
анон, посоветуй годный header-only фреймворк для юниттестов
Ну то есть чтобы блядь без ебанутых систем сборки от анунаков не слышавших про мейнстримные системы сборки и живущих в какой-то альтернативной вселенной. и чтобы оно не выглядело как говно на дефайнах
>>1686242 Лол блять. Зашел сейчас на их сайт. А там после трехлетнего запора оказывается выкатили обновление в марте, где пофиксили и stl и мыло на fullhd экранах и to_string. Похоже пора перекатываться обратно.
Пора смирится, что раст оставит кресты в прошлом. И это в общем то хорошо. Язык не уступающий, а порой даже опережающий кресты, но при этом полностью безопасный. Самое главное он активно развивается и не связан обратной совместимостью с кодовой базой 30 летней давности.
Заглянул в растотред, глянув на первый же пик вспомнил, что в крестах нет нормального вывода в консоль. Либо неформатируемый по человечески cin/cout, либо небезопасный printf.
Двач, можно ли делать вот так? if (vector.size() == 2 && vector[0] && vector[1]) {} Т.е. продолжит ли он смотреть на другие условия и не вылетит ли в segfault после первого false (т.к. вектор пустой)?
>>1686898 нахуй ты обращаешься к элементам вектора через оператор [], если есть метод at, который проверяет границы и элиминирует возможность переполнения?
>>1686998 >даже ради околочеловеческого принта надо тащить сторонние либы >при том, что нет даже единого пакетного менеджера и при таком подходе для 3 либ модет понадобиться 3 манагера пакетов >ряяя маааам плюсы ни гавно!111
>>1687017 2050 @ единый пакетный менеджер так и не стандартизировали @ из-за жс-драйвен-макакенга с пакетами содержащими 1 функцию мир вошёл в сингулярность @ чтобы собрать 1 утилитку надо поставить 3 компилятора и 293 пакетных манагера @ а потом подождать пока они скачают кучу пересекающихся зависимостей на пол терабайте
Аноны, столкнулся с такой проблемой, что виджеты Qt у меня зависают. Происходит это по всей видимости в моменты, когда нужно быстро что-то делать. Например, захватываю я пакеты из сети и пытаюсь их выводить в QListWidget. Сую в хэндлер пакета что-нибудь типа listWidget.addItem("пакетнейм"). Причем хэндлер вызывается с бешеной частотой, пакетов в сети то много. Программа намертво зависает. Или другой пример. Записываю пакеты в файл. Пакетов много, поэтому процесс наблюдаю с помощью QProgressBar. Ну то есть после записи очередного пакета value прогрессбара инкрементируется. Пакеты пишутся в цикле for. И тоже зависает, QProgressBar перестает шевелиться, окно программы не отвечает. Хотя сам процесс идет, если подождать, пакеты запишутся в файлы и программа отвиснет. Тут ясно, что я что-то неправильно понимаю в построении десктопных программ. Но что именно, я не могу понять? Это как-то связано с оперативкой? Или стек вызовов забивается? Как этого избегать? Больше интересует первый пример.
>>1687055 Браток, накачивай дату в буфер, и с определенным интервалом, например 5 раз в секунду фетчи виджет с буфера. А ты я так понимаю линейно с каждым обращением за пакетом сразу его вставляешь в виджет
>>1687065 > А ты я так понимаю линейно с каждым обращением за пакетом сразу его вставляешь в виджет Да-да, именно так! > Браток, накачивай дату в буфер, и с определенным интервалом, например 5 раз в секунду фетчи виджет с буфера. То есть критична именно частота обращений к методу виджета, так? Если часто его вызывать, комп охереет?
>>1687070 Тяжело сказать не зная что там у тебя. Подозреваю что мейнлуп умирает пока ты пытаешься напихать в него дату, потому что тайм-аут у тебя вряд-ли выставлен. Поллинг или как там это называется, читани доку кьюти. И вообще старайся как можно меньше обращений делать
>>1687075 А почему умирает во втором примере? Там же тупо цикл, внутри которого происходит генерация пакета и запись в файл. Пакеты при этом ничем друг от друга особо не отличаются, структура одинаковая. Виснет, когда пакетов много, например 200к.
>>1687081 Я если честно не очень с куте знаком, и не знаю как там мейнлуп работает, представляю себе что он пытается создать в цикле представление о всех виджетах, а потом проверяет соответствует ли оно актуальному представлению в следующий момент до того как нарисовать, и т.к. пихаешь дату безостановочно, он постоянно заново рисует этот виджет. Короче не скажу тебе что там точно происходит, но опыт и интуиция подсказывают что нужно в буфер накачивать и по типам закидывать в виджет
>>1687090 А если в буфер закачивать, он в это время не будет пропускать пакеты? Или для этого надо параллелизм юзать? Ну то есть я в хэндлере буду писать пакет в буфер. И одновременно мне надо раз в 200 мс еще отправлять содержимое буфера в виджет и очищать буфер. Это же без параллелизма никак не сделаешь?
>>1687093 Глупый вопрос какой то. Для чего нужен дефайн в с? Для того же и в с++. Как уже писали выше использовать можно например для получения имени поля #define PRINTER(x) #x А так много для чего, средство очень мощное. Но вообще использовать макросы дурной тон.
>>1687097 Ну у тебя по возможности вообще не должно быть ключевой логики во фронте. Пихни ее в другой тред например. Куте точно мультитрединг поддерживает, поэтому проблем не должно быть. Но у тебя я так понимаю дата вся создана где-то заранее, а не какие-то пакеты приходящие в реальном времени, поэтому тебе не нужно все пакеты за раз тоже качать. Тяжело понять в общем не зная что тебе нужно
>>1687111 Что за имя поля? > Но вообще использовать макросы дурной тон. Я вообще если честно не понимаю, зачем нужен #define, если можно объявить функцию.
>>1687113 Пакеты в реальном времени приходят. А как пакеты захватывали и выводили в интерфейс в те времена, когда многоядерных процессоров не было? Вот Wireshark например, судя по вики, сделали в 1999 году.
>>1687116 Поток, которым ты оперируешь -- вещь логическая. Можно к одному потоку хардверному цеплять сотни вот таких. Кроме того, ввод/вывод можно совершать неблокирующими операциями, типа если данных в буфере нет, то и хуй с ним, едем дальше.
>>1687148 Сорян, с ссылкой на пост промахнулся, ее там не должно было быть.
Бтв предкомпилированные заголовки требуют единообразного начала всех исходников, вроде как, что не всегда на получается поддерживать при несогласованной разработке. Ну, во всяком случае, я так понял смысл этой штуки.
for (int i = 0; i < totalPacketsAmount; i ++) { QVector<Timestamp> timestamps; for (int i = 0; i < gsPacketSet.size(); i ++) { timestamps.append(gsPacketSet.getTimestamp()); } int index = compare(timestamps); timestamps.clear();
>>1687055 >Тут ясно, что я что-то неправильно понимаю в построении десктопных программ. Но что именно, я не могу понять? Чел, ты главный поток вешаешь намертво, ясен хуй у тебя ничего рисоваться не будет.
Давай вместе почитаем доку https://wiki.qt.io/Progress_Bar Первый же абзац: >You could use a progressBar widget on your widget and run the operation in a different thread (using moveToThread()). и в первом же сниппете > QFutureWatcher<void> FutureWatcher; > QFuture<void> future = QtConcurrent::run(&this->MyObject, &MyClass::LongFunction);
>>1687154 И сколько ты напишешь функций? Хорошо, у тебя есть шаблоны, это круто. Но там сложные правила для вывода типов и возвращаемых значений, что нужно будет учесть. template<typename T> T func(T x) { return x; } Совсем не всегда одно и то же, что и #define func(x) #x Которую написал анон в том посте
>>1687170 А что именно вешает главный поток в моем случае? progressBar->setValue(i)? Или что? Какие действия вообще могут вешать главный поток, и что делать, чтобы этого избегать?
>>1687175 У тебя есть struct A { int x; }; Имя единственного поля в структуре - это x.
Бтв с шаблонами надо магию уже подрубить в этой ситуации. В случае макроса #define func(obj, x) obj.x И со структурой выше ты кодом A a; func(a, x); получишь значение в поле a.x. Если честно, хз за решетку, почему ее тот анон использовал, я не настолько плотно шарю в макросах.
>>1687186 Шаблон - это компилирующийся код, который пытается собраться комплиятором(инстанциироваться) только когда его вызывают, причем для каждого уникального набора параметров отдельно, используя значения полей, что ты туда передаешь. А макрос - это замена текста на аргументы, согласно объявленному твоим правилом, но со своей магией. float pi{3.14}; //будет выделена память под переменную pi со своим значением. #define PI 3.14 //все встретившиеся PI в исходном коде(в области трансляции, если быть точным) будут заменены на 3.14 и забиты в исполняемый файл как литералы. И иногда это больше тебе развязывает руки, чем просто функция.
>>1687186 Решетка стрингифицирует то, что ты посылаешь в макрос. #define STR(x) #x STR(std::cout << pidor) станет строкой "std::cout << pidor", а не вызовом соответствующей функции.
>>1687114 >, зачем нужен #define, если можно объявить функцию. А дефайном ты можешь объявить части функций и создать внутренний дсл, позволяющий коротко и ясно заменить кучу бойлерплейта( и создать больше возможностей выстрелить в ногу). Шаблоны это решают, но не до конца.
>>1687184 >Какие действия вообще могут вешать главный поток Количество работы выполняемое на нём. Ты по получении каждого пакета: а) Парсишь пакет и что-то там сравниваешь, в зависимости от размера может выполняться долго. Алсо, ещё гоняешь очень дохуя аллокаций. Выдели вектор себе один раз до входа в первый цикл (и если знаешь размер приходящих — преаллоцируй память заранее, если не знаешь — аллоцируй при входе в первый цикл, иначе на каждый append под твой массив будет выделяться память по новой и копироваться содержимое, что как бы будет работать пизда как медленно); б) Если у тебя SSD — запись на диск достаточно дорогая операция, чтобы просто так делать её в главном потоке. Если у тебя HDD — то это просто пиздос смерть гроб, особенно если у тебя там не 5 байт. в) Не знаю, что именно у тебя в предпоследних 2-х строчках, но что-то похоже на копирование, если в gsPacketSet хранится не пара интов — не надо так.
>и что делать, чтобы этого избегать? Стараться вообще нихуя не делать на главном потоке, и использовать его только для отрисовки UI и как точку синхронизации. В твоём случае, единственная строчка кода, которая должна работать на главном потоке выглядит так: >progressBar->setValue(i);
>>1687232 > Не знаю, что именно у тебя в предпоследних 2-х строчках, но что-то похоже на копирование, если в gsPacketSet хранится не пара интов — не надо так. Это набор пакетов. Я должен выбирать пакет из набора и записывать его в файл. И реплейсить забранный пакет новым.
>>1687232 > Стараться вообще нихуя не делать на главном потоке, и использовать его только для отрисовки UI и как точку синхронизации. Подожди, а что вообще главный поток в коде? Я что-то вообще запутался. Вот у меня есть MainWindow, в котором все виджеты, кнопочки и прочее. При нажатии на кнопочки программа делает всякие штуки, например, генерирует и записывает пакеты в файл. Что здесь главный поток? Или что должно быть им, если делать все правильно?
>>1687239 Это никак не отвечает на мой вопрос, не копируй объекты если оне не совсем мелкие, короче.
>>1687243 Это поток, с которого начинается выполнение твоей программы (т.е. поток, в котором системным сишным рантаймом была вызвана функция main()). >Или что должно быть им, если делать все правильно? То же, что и было, лол. Твой код уже запущен в нём, тебе остальные задачи надо раскидать по другим.
По хорошему, тебе надо сделать 2 потока, в одном все вычисления в другом последовательную очередь с записью на диск, но учитывая твой уровень — просто вынеси всё, что не связано с UI в другой поток, и как я и писал не дрочи сильно память в начале цикла, а результаты лучше складывай в буффер в памяти и записывай одной транзакцией по завершению.
inb4 сразу план действий: Создай поток, крути на нём свои вычисления, и с помощью сигналов закидывай результаты обратно в главный поток где и меняй прогресс.
>>1687245 Допустим, у тебя есть массив строк, каждая из которых - имя поля конкретного класса И ты можешь в цикле по этому массиву использовать все его поля, а не перечислять их отдельно, если прикрутишь макросы.
Нет, я не говорю, что это обязательно нужно и используется на каждом шагу. Просто без макросов вроде как нет пока способа так сделать.
Анон, вчера в голову пришла идея о бесконечных целых типах. Типа числа с тыщью, миллионами разрядов и проч. Применений масса, хеши, финансы с учётом каждой копейки и проч. Также р напридумывал, что бесконечный целый тип может быть основным целым типом в языке, а компилятор (или какие-то там политики) уже решают, какое брать аппаратное ограничение, может быть 8 бит хватит на всю систему. Есть ли какие-нибудь придумки по этой теме? Не думаю, что я первый это придумал
>>1687364 Если ты про то что бы можно было для каждой системы выставлять свои размеры интов, то в си и плюсах так и есть. Размер char в битах никак не ограничен - его могут выставить любым. Есть проблема с тем что подразумевается (хотя стандарт наверное этого не требует) что размер int равен макимально "удобному" для процессора размеру (тоесть обеспечивает максимальное быстродействие), что ограничивает размеры int размерами регистров процессора. Что ограничивает размеры char, так как char может быть любым, но он не может быть больше int.
>>1687521 Наверное чтобы не ебаться с конвертированием Dummy в int. std::binary_search требует чтобы объекты по которым ведется поиск могли быть сконвертированы в типы обоих аргументов оператора(). А тут они его просто перегрузили и никакой конвертации не нужно. Незнаю наколько это правильно.
Прорамач, объясни дураку пожалуйста как создавать qm файлы и как их подрубать к проекту. Прочитал в справочнике Qt о QTranslator и ничего не понял. Вопрос именно с созданием qm файлов. Спасибо.
>>1685466 У меня хорошо заработал из коробки только xcode. Все остальные жалкие поделия либо тащат с стобой 20Гб легаси и не умеют в лигатуры (visual studio), либо не могут из коробки создавать hello world без пердолинга и кофигурирования всяких cmakeов (qtbuilder, clion, eclipse).
Текстовые редакторы для разработки я вообще не рассматриваю. Хотя всякие мастера своего пердольного дела типа Джона Блоу пердолят код в emacs и альттабаются в студию только для дебага (я так не могу)
Конечно сказывается отсутствие единого стандарта для проектов, и требование под каждую платформу пердолить свою ide
>>1688241 >У меня хорошо заработал из коробки только xcode У которого постоянно отваливается автокомплит проектах больше мелкого и такой же по стабильности дебаггер. Ну, если тебе важен внешний вид, то икскод действительно самый лучший (да и шрифты на макоси рендерятся красиво, да). >либо не могут из коробки создавать hello world без пердолинга и кофигурирования всяких cmakeов Зато вот для взрослой разработки это минус, лол. Я ебал эти проекты икскода и их ебаный XML, конфликты в котором надо мерджить при каждом слиянии веток. >Конечно сказывается отсутствие единого стандарта для проектов Тащемта, есть CMake, который поддерживают примерно все. >и требование под каждую платформу пердолить свою ide Ты сейчас ахуеешь, но вообще всю инфраструктуру для этих иде (кроме парсера) надо тоже пердолить под каждую платформу свою.
>>1681810 Писал как-то прогу по решению примеров. Понимает приоритет операций и скобки. Вводишь строку. Пример 2(3-1)^2. И она выводит результат. Может поможет.
right = STACK_NUMB[(idx--) - 1]; left = STACK_NUMB[(idx--) - 1]; oper = STACK_OPER[(idx2--) - 1];
switch(oper) { case '': result = left * right; break; case '/': result = left / right; break; case '+': result = left + right; break; case '-': result = left - right; break; case '^': result = pow(left, right); break;
>>1688241 > не умеют в лигатуры Не ври, у меня студия с шрифтом Cascadia Code всё прекрасно показывает. Только надо студию перезагрузить после смены шрифта
Аноны, не могу себя контролировать и засиживаюсь до 4 утра, кодя по 14+ часов на С++ каждый день. Каждый раз говорю себе, что пора менять режим, но напрочь забываю о течении времени и "возвращаюсь в реальность" в начало пятого утра. Потом не могу заснуть ВООБЩЕ до примерно 6 утра и просыпаюсь в 11. Чувствую, что башка чуть хуже соображает, чем неделю назад, да и давление немного начало появляться (мне 26 лет и я не жирный, камон, чтоо?!). Было у кого-то такое? Как боролись с режимом и какой режим оптимален для того, чтобы случайно не подохнуть за клавиатурой? Кто-то сталкивался с печальными долгосрочными последствиями такого ебашилова?
>>1688409 >мне 26 лет и я не жирный, камон, чтоо?! Ты рофлишь или да? 26 лет - у тебя ПОЛОВИНА жизни уже позади и ты удивляешься что у тебя давление? Лол.
Сап, недавно решил попробовать С++, до этого программировал только на C#. У меня к вам такой вопрос: почему в любом коде, который я видел, никто не использует using namespace std; и т.п., а все пишут std::? Это как-то связано с желанием иметь больше букв на квадратный пиксель монитора или как? Я реально не вкуриваю.
>>1688507 Пчел, но я живу в стране, где мужчины в среднем доживают до 81 года, к тому же у меня фул семья долгожителей, включая курящих дедов. Вроде как наследственностью не обременен, не курю, не ширяюсь, не жру все подряд(
>>1688565 От всего, что ты описал там еще выше, хорошо помогает один очень известный бензодиазепин, но вероятно в вашей стране его даже по рецепту не продают. И вопреки некоторым мнениям под ним отлично работается.
>>1679966 (OP) Аноны, шарпист в треде, помогайте. Помню тут были шутки про то как превратить кресты в жабаскрипт. Так вот, чем обмазываться, чтоб использовать кресты как C#? Любые классы обмазывать shared_pointer? Есть какие-то гайды как это правильно делать? Что ещё пердолить? На кресты вкатываюсь вынуждено, на производительность похуй пока она не ниже шарпа, главное максимально снизить сложность кодинга и подводные камни.
>>1688409 И что же именно ты так усердно кодишь? Переписываешь код ядра линукса? Очевидно, что написание кода - лишь часть процесса разработки. Кучу времени еще тратится на планирование архитектуры, выбора/осваивания предметной области и тд
PS В 26 лет проблем с биодвижком не должно быть, походу и правда что-то ты делаешь не так. Ну и если не сидишь на тяжелой наркоте, то я вообще не понимаю, что ты забыл в C++ треде
>>1688894 Пишу пет-проект, связанный с инфосеком. Долгая история. Конечно же, я не только пишу код. Планировать архитектуру куда сложнее, код только описывает ее.
backtrace под армом не хочет ничего выводить и говорит о 0 адресах и 128 фреймах без изменений. Ключики разные пробовал вставлять, но не зашло. Читал, что нужно пересобирать glibc и туллчейн вместе с ним. Вы что подскажете?
>>1689567 struct это практически тоже самое что и class, отличие только в том что в class по умолчанию все члены private, а в struct - public. Используешь что удобно.
>>1689696 Буст - просто коллекция библиотек. Нужны графы? Кури Boost.Graph. Парсеры? Boost.Qi. Метапрограммирования Boost.MPL/Hana. Нетворкинг? Boost.ASIO. И так далее. Не надо - не смотри, там ещё та помойка, чтобы на неё жизнь тратить.
>>1689782 Вот кстати да. Забывается очень быстро, если не закреплять практикой. Я бы спросил совета где бы опыта набраться? Например в ДС, для мальчика лет 30 имеет ли смысл стажировку поискать? Есть ли конторы где работают до полуночи?
>>1689813 Да что угодно, лишь бы писать. Напиши качалку файлов, напиши чат, напиши хуевую двухмерную игру, напиши архиватор, напиши хоть что-нибудь блять. Да, это в гигатонны раз сложнее, чем читать. Но сильно полезнее.
>>1689816 В процессе написания чего-то часто возникают вопросы. Когда с ними приходишь на /pr/ в профильный тред, ответом часто бывает "ебать ты кассир".
>>1689834 Потому что тут тебе никто ничего не должен. Двач это не твой репетитор. Просто фильтруй шлак. >>1689835 Да. Лично я начинал развлекаться с SDL2 (это была система видеонаблюдения, а не игра), но и проект вначале был на plain C. Если речь сразу о C++ идет, то sfml нормальный выбор.
>>1689852 Хорошо, спасибо, Анонче. А вот теперь встал вопрос по трудности использования. Она трудна в использовании, просто слышал, что её очень трудно устанавливать, один чел даже неделю думал, как установить sfml.
>>1689898 Любая программа не из стора с подписью - потенциальный вредонос, ведь может сделать что угодно, никакие официальные инстанции её не проверили и не выдали сертификат..
>>1689904 >>1689898 > Когда я запустил этот код Нет, не запустил. В си нет кода, только описательный псевдотекст, его нельзя запустить, т.к. он не является программой. Ты запустил совсем другое, сеначала программу-компилятор и прочие утилиты, а потом программу ими сгенерированную.
Если еще не понятно, приведу сравнение. Вот есть, скажем, джаваскрипт, или питон, вот это код, ты пишешь код и этот код выполняется. А в си не так, твой текстовичок не выполняется. Поэтому то что ты напечатал и показал и что проверяет антивирус это разные вещи, причем даже разные категории.
>>1689567 Когда грубо говоря тебе нужен именованный кортеж, без инвариантов, зависимостей его значений от чего-то, не паблик членов и т.п. Можно сделать и классом, но struct явно показывает твои намерения другим и тебе в будущем.
>>1690009 >блять случайно отравил. Привет парни, тут ображулил такой момент, но не могу понять такое поведение ожидаемо? или зависит от конкертного компилятора;
list<string> l = {"a", "b", "c", "d"}; auto it = find(l.begin(), l.end(), "e"); // it == l.end() ++it; cout << *it << endl; // "a"
Как сделать таблицу подобную пикрилу? Пробовал datagribview, но она какая-то пресная, а я хочу чтобы была как на пике. Скажите, пожалуйста, как такое сделать?
>>1690040 >>1690062 дак это и спрашиваю, обнаружил, что при разыменовывание end()+1 получаю итератор равный begin(). Это просто неопределенное поведение компилятора, Или может где прописано в стандарте?
Короче суть оказалась проста: qmake все вот эти макросы Q_OBJECT Q_PROPERTY обрабатывает только в заголовочных файлах, но не просто в заголовочных файлах проекта которые тупо заинклюжены, а которые еще и в rонфиге проекта добавлены как заголовочные:
>>1691603 > А как так вышло, что в про-файле не было этого? Бабушка не положила Ну наверно в шаблонах QtQuick этого нету по умолчанию.
>>1691604 Это да, но в конечном итоге все равно главное что работает. qml с кодом на плюсах взаимодействует (кстати типы вроде uint8_t не поддерживаются, круг использования такой типизации все меньше и меньше, по крайней мере в приложениях, в каких нибудь библиотеках на си всегда будет актуально для цветовых каналов, еще для чего то)
>>1691362 Палю гайд: 1. Учишь С++ 2. Учишь сети 3. Учишь нужный инструментарий для сетевой работы: API ОС/Boost/Qt Network/"github.com/Vasyan9B/SamayaAhuennayaSetevayaLiba" 4. Говнокодишь убийцу nginx с рпс не меньше тоннажа твоей мамаши И можешь считать что справился
>>1691879 Есть же Asio С++, причем отдельно от буста. Годная либа, с помозью которой можно пилить сетевые приложения, которые будут выдерживать траффик фейсбука (если сервер не на твоем тщедушном камплюхтере с вай-фай соединением офк, лол)
Ананасы, можно ли как-нибудь создать псевдоним для функции (кроме макросов, указателей на функции и обёрток своих)? А то иногда такие уебанские имена бывают, шо пиздец
>>1692310 Можешь ссылку взять >>1692348 У тебя в настройках скорее всего тип проекта Application, а по коду выглядит так, будто пытаешься написать библиотеку.
Ананасы, как лучше писать: void foo() по старинке или же auto foo() -> void ? Зачем вообще придумали второй вариант и когда/почему его надо использовать?
Помогите ньюфагу понять что не так. Хочу прицепить к проекту mpv так как там есть проработанный апи который позволяет плеером управлять там хоть с луаскриптов хоть с осцилогрофа, плюс он есть собранный на компе с шаредлибой. Но естественно я чет подзабыл а как он вообще либу то неходит? Ровно так как инклюд указывает?
>>1692725 Это, кажется, для шаблонов вообще штука, чтобы выводился правильный тип, если аргументов шаблона два и какой-то из них предпочтительнее. Где-то у Йосуттиса было в его трактате о шаблонах об этом написано.
>>1692725 Это математики опять говна залили со своими нотациями. В программировании всегда так, если видишь какое-то уебанское соглашение или название, значит это кто-то зачем-то послушал математиков.
Какая же я тупая мразь. Учу плюсы вот по этой хуйне https://ravesli.com/glava-1-itogovyj-test/ Всё читал вдумчиво, понимал, задания все делал с первого раза. А как дошло дело до итогового теста завис на первом наипростейшем задании. Просто как будто из головы вылетело всё, что до этого изучал. Пришлось подглядывать в решение. Теперь жопа горит блять.
Добрый день, мужчины, нужен хелп, томушо информатик задал написать несколько задач по С++, но нихуя не дал конспектов или каких-либо обьяснений, есть шарящие, помогите =(
1). Написать программу, которая будет выводить на экран: «Введи 2 числа», затем считывать введенные с клавиатуры целые числа и выводить на экран «a + b = !результат!», «a - b = !результат!», «a * b = !результат!», «a / b = !результат целочисленного деления!», «a % b = !результат остатка от деления!», «float (a / b) = !результат вещественного деления!»
2). С использованием оператора if () написать программу, которая будет выводить на экран: «Введи 3 числа», затем считывать введенные с клавиатуры вещественные числа и выводить на экран «Максимальное из введенных !результат!»
3). С использованием оператора switch () написать программу, которая будет выводить на экран: «Введи количество углов», затем считывать введенное с клавиатуры целое число и выводить на экран при соответствующем введенном значении одну из фраз: «Это треугольник», «Это четырехугольник», «Это пятиугольник», «Это многоугольник» или «Нет такого многоугольника»
4). Написать программу, которая будет выводить на экран: «Введи свой возраст», затем считывать введенное с клавиатуры целое число и выводить на экран правильно законченную фразу: «Вам !число! год/года/лет», если число находиться в промежутке (1-130), обработать возможные ошибки.
5). С использованием оператора while () написать программу, которая будет выводить на экран: «Введи многозначное число», затем считывать введенное с клавиатуры целое число, считать количество цифр и выводить на экран корректную фразу: «В числе !число! !результат! цифра/цифры/цифр»
6). С использованием оператора do {} while () написать программу, которая будет выводить на экран: «Введи отрицательное число», затем считывать введенное с клавиатуры вещественное число, определять является ли число отрицательным, если да, то выводить на экран «Молодец!», если нет, то снова выводить запрос до тех пор, пока не будет введено отрицательное число.
7). С использованием оператора for () написать программу, которая будет выводить на экран: «Введи размерность», затем считывать введенное с клавиатуры целое число и выводить на экран таблицу умножения вида:
(если введено 3)
1 2 3
1 1 2 3
2 2 4 6
3 3 6 9
8). Написать программу, которая будет генерировать массив из 30 случайных чисел в промежутке от -10 до 10 и выводить его на экран.
>>1692817 Чел, я уроки по c++ вчера впервые в жизни открыл и мне этого хватило чтобы знать как сделать вообще любую из этих задач. Тут знания нужны чуть более углублённые чем для написания хеллоуворлда. Именно чуть.
>>1692901 Лол но ты написал "удобно использовать". Только вот trailing type - единственный способ указать тип возвращаемого значения у лямбды . Нет никакого альтернативного способа как в случае с обычными функциями: написать int [](){} не получится
>>1692943 кайф. Каждый nullopt будешь создавать вот так вот ручками через конструктор optional, или таки воспользуешься trailing return type и будешь писать return std::nullopt ?
>>1692946 >Каждый nullopt будешь создавать вот так вот ручками через конструктор optional К чему вообще этот спор? ты мне говоришь, что так нельзя сделать, я показываю, что можно. Офк юзать можно и то и то при разных обстоятельствах.
>>1692812 Если ты после прочтения всех предыдущих глав не смог эту хуету решить с первого раза, то я хз как ты вообще комп включил и по клавишам попадаешь. Тебе не то что программистом, тебе грузчиком только и остаётся быть.
>>1692990 Выглядит сложно на первый взгляд. Если там не важен порядок того как эти скобки закрываются {(}) - считается невалидным то тогда под каждый тип скобок можно запилить вектор, при открывающей скобке пушить, при закрывающей попать, в конце правильность проверить тем, что каждый вектор должен быть пуст.
Двач, подскажите, есть ли такой контейнер что-бы можно было задать ему фиксированный размер и вставлять в него элементы с одной стороны, а с другой что-бы они смещаясь по очереди вылетали?
>>1692774 Пчел, ну разберись ты раз и навсегда. Что такое разделяемая библиотека? Это -include -lib -bin Инклюды ты уже подключил. Теперь тебе нужно указать, с чем линковать твой скомпилированный код, т.е. указать .lib файлы библиотеки (.a в линуксе). Для этого обычно указывают отдельно пути, где искать такие файлы и отдельно сами названия файлов. Финальный штрих - это скопировать нужные .dll в папку со своим исполняемым файлом или указать путь к .so в линуксе.
Как работает initializer_list ? Я имею имею ввиду принцип работы, как это реализовано. И норм использовать такую инициализацию матрицы?(двойным листом)
Суп, программисты. Помогите вот с чем: имею кучу текста формата, как на пике. Как его форматнуть так, чтобы остались только номера вида "55048912", на пример? Скажу сразу - я не погромист. Когда-то давно были потуги, но так и не осилил. Собсна, хочу попробовать написать софтину для работы.
Выводится что надо qDebug() << string; Выводится только один раз (вывожу в цикле) только часть строки std::wcout << string; Почему так? Строка является std::wstring
В целом работает мое поделие, решил проверку диапазона вводимого числа проверить и получается все сую в if. Это не слишком вульгарно, всю программу в иф?
>>1694979 Регулярные выражение можно использовать, если у тебя номер всегда длиннее веса в килограммах. Типо ищешь выражение длиной в 8 символов, состоящее только из цифр.
>>1695152 То есть будет примерно так? list = текст из файла или копипаст в листбокс; regex numb("^[0-9]{8,8}$"); if (regex_math(list, numb)) cout << numb;
Как в Visual Studio 2019 компилировать код по строкам? То есть от строки к строке проверять значение переменных, переходя к новой строке при нажатии на кнопку.
>>1695240 Если ты про режим отладки, то просто кликаешь на полосу слева от кода, появляется красный кружок. В этом месте программа остановиться и ты сможешь просмотреть значения переменных.
Сап, помогите советом , решил вкатиться в плюсы начал изучать , пока крайнее, что затронул это классы. С++ это первый язык который я изучаю, пока мне он очень нравится. Стоит ли переходить в другой язык для получения основ или уже не надо ?
>>1695363 Благодарю, и еще вопросик(мб банальный) , что в будущем смогу сделать с этим языком (какие программы написать ( только приложения под компьютер/игры/или функционал больше)?
>>1695417 Я так понимаю, что динамические массивы и regex нельзя подружить? По крайней мере, в интернетах не нашел ничего по этому поводу. С обычной строкой все работает на ура. Хуй знает зачем я вообще брал динамический массив
Алсо, в последующем хочу в массив запихнуть текст из файла. Потом циклом по каждой строке можно будет пройтись regex_math?
>>1695138 Ты дурак блять? Никто тебе не разрешит ничего, кроме вектора и листа. Все остальное ручками сам. А вообще бросай эту хуйню, олимпиадное программирование ни о чем. Эти дебилы на проде не могут быстро нагуглить нужной информации, а в яндекс за три котлеты устроится не особо и поможет. мимо другой анон
Ананасы, каким образом вы оцениваете сроки работы и часто ли угадываете? Я вот за два года работы так и не научился их внятно оценивать и постоянно срываю свои оценки. Из-за чего последнее время стал зверски стрессовать хотя всем похуй, предъяв ни разу ещё не было. А из-за постоянного стресса уже с такой ненавистью думаю о работе Короче, как вы оцениваете время, когда до конца не знаете, с чем столкнётесь?
Господа, поясните за паттерн Prototype. Почему прототип нужно копировать? Что мешает мне создать точно такой же объект с помощью new? Копирование быстрее, чем инициализация? Просто вот есть у меня куча объектов-прототипов, и у каждого по несколько полей-указателей. Я не понимаю, зачем мне заново прописывать инициализации для каждого из полей в методе Clone(), когда я могу просто создать новый объект, и все точно будет работать.
Какие есть варианты интерпретировать uint64_t как double без каста данных? (потому-что каст из числа 4.7 сделает 4, а не то, как хранится это число в памяти на самом деле)
Есть вариант с union union U { uint64_t u64; double d; } tmp; tmp.d = 2.2; tmp.u; //вернет не 2, как в случае с кастом, а 4616977747989548237
Вот именно такое мне надо.
Есть вариант с тем, чтобы брать указатель на double от uint64_t и... Нахуй его, хуже чем с union
>>1698270 std::uint64_t num = ...; double d = reinterpret_cast<double &>(num); Более человеческого, наверное, нет. Это тот же самый каст в указатель, по сути. Не знаю, чем он тебе не понравился.
Почему некоторые либы требуют установки? Например захотел воспользоваться wxwidgets, а его надо установить. Почему нельзя просто заголовочные файлы заинклюдить?
>>1694776 Я когда олимпиаду делал пару лет назад, нас не то что не проверяли на использование каких-либо стандартных библиотек, нам вообще разрешалось писать на любом (!sic) языке. В итоге получается: Маша отличница, занимавшаяся с репетитором, сосёт на своём паскале у Васи троечника, который взял питухон и решил все олимпиадные задачки за 20 минут.
Аноны, как пользоваться cmake? Есть либа - https://github.com/msteinbeck/tinyspline Без проблем собирается в CLion. Но как её в своём коде использовать? tinysplinecxx.h высерает сотню ошибок при включении в свой код, в том числе на синтаксис. В примерах там просто делают #include "tinysplinecxx.h". Но этот пример тоже не могу собрать. Что за сраная магия? Нельзя просто добавить хедер, а нужен какой-то пердолинг? Пробовал в VS и CLion, пробовал подключать собранную статическую либу, пробовал стандарт C++ менять - один хуй сыпет ошибками.
>>1699720 Собираешь библиотеку через cmake, а дальше >>1693378, либо если у тебя тоже cmake ищешь её через find_package, если либа представила файлик для поиска себя, либо вручную пути указываешь
>>1699823 В общем нашёл решение. Как в таких случаях искать где этот пидор? IDE показывает где определение этого макроса, но я не смог найти где инклюд minwindef.h. Он где-то в кишках стандартной библиотеки сидит? Пиздец какой-то.
>>1699848 Подключается неявно в одном из твоих инклюдов, скорее всего cmath поскорее бы модули блядь, чтобы это говно оставалось в своих хедерах и не пролазило во все щели
>>1699883 >https://pastebin.com/w8XjvT57 Ехал шаблон через шаблон. Видит шаблон в шаблоне шаблон. Сунул шабло шаблон в шаблон, Шаблон, шаблон, шаблон, шаблон.
>>1700756 >IDE показывает где определение этого макроса, но я не смог найти где инклюд minwindef.h >minwindef.h >win >Это же MSVS-specific Какой сюрприз!
Привет всем макакам итт. Решил вкатиться в кресты, глянул идешки всякие, приспичило установить визуал студио (уже работал в ней - хуйня неудобная, но лучше, чем ideone), хотел вскод поставить, но там иде нет. Так вот, как изменить путь установки visual studio? Кнопки такой нет, эта ебола сразу в корень диска С лезет. Не нагуглил ничего
http://www.cpp.sh/4dtdk Это "быстрая сортировка". Без рекурсии. Потестите этот код на своих примерах, если вам не сложно. Сообщите о ошибках, если таковые будут. Если захотите наехать на меня из-за кода — аргументируйте. За тестирование с меня как обычно.
блин люди. как вообще проходить собесы по С++ в серьезные компании?
Вроде пишешь себе на С++ профессионально. А на собесе задают вопрос по какому-то нюансу и сидишь и не знаешь что ответить.
слушал одно интервью где сеньор приводил пример вопроса на собесе "есть ли аллокации в std::sort"... и далее объясняет почему это важно знать конкретно у них. И все вроде правильно, но... Бля, а где я должен был узнать о таких вещах? или почему нельзя юзать memcpy...
>>1699759 >А почему я не могу просто взять h/cpp файлы? Зачем именно собирать либу? можешь. инклюдить можно даже cpp файлы (но не забыть объявить дефайны). unit cpp называется.
Делаю splash screen в приложухе для андроида в qt. Использую этот метод https://webhamster.ru/mytetrashare/index/mtb0/1534618070zxgwthqmqu И у меня такая же проблема как и у автора. Цитата из статьи: "Первая проблема в том, что во время загрузки приложения картинка сплеш скрина может "съехать" вниз на некоторое (небольшое) расстояние относительно позиции своего первого появления. Не так чтоб это была большая проблема, но неприятно, что такое примитивное действие как показ сплеш-скрина может глючить. Причем это может происходить только в определенных ориентациях экрана (у меня в портретной), а в другой ориентации этой проблемы может и не быть. Почему так происходит - пока не разобрался." Сплеш скрин немного сдвигается вверх во время загрузки, то есть в момент когда тема у которой бэкграунд задан как сплэш сменяется на сплэш из манифеста. Как фиксить?
>>1701514 То есть они пишут зп миллиард в наносекунду в вакансиях, чтобы потом спросить какую-то бесплолезную дичь, и сказать "ну мы вас готовы взять, но на зарплату меньшую чем в вакансии".
>>1701182 >нарушениями ODR у нормальных либ таких проблем нет (я уже давно юзаю эту технику). у говнокодеров не знающих про скрытие глобальных переменных (и вообще их юзающих в 2020 году) решается добавлением еще пары заголовков
>>1701182 >дрочеву с namespace и т.п. вообще нет никакой проблемы - оно же не пересекается с твоим кодом.
и я просто напомню что с библиотеками проблем не меньше - например они должны быть скомпилированы одним и тем же компилятором (что для стороних либ почти нереально). у них ебучие системы сборки которые по полчаса перекладывают файлы из папки в папку (забавно что когда берешь либу, компилируешь еще - полчаса. потом делаешь такой cpp и он компилируется за 3 минуты, а все потому что у даунов окончательная фаза терминала головного мозга поэтому там целый час всякое говно на питоне выполняется
>>1701182 >Ты только что Unity Build. на основе этой идеи да. но нет. unitycpp для ускорения компиляции. тут же сделано для того чтобы не таскать библиотеки
>>1701078 >Бля, а где я должен был узнать о таких вещах? >или почему нельзя юзать memcpy... Вопросы про sort & memcpy вполне резонные. Чуваки с опытом использовали и то и другое, смотрели на производительность, смотрели как устроено. фундаметальные же вещи.
>>1679966 (OP) Аноны, как понять когда можно идти собеседоваться? Я учу где-то полтора года плюсы, есть пару петов либа с CI тестами и прочей лабудой, и гуйное приложения для вуза, вроде-бы что-то да знаю. Вот знакомый недавно прошел в какую-то нормальную фирму, сказал там собеседующий охуел от того что он знал про сфинае и какие-то базовые вещи, я выпал прямо. Могу на собесе написать условный шаред или тредпул не на листике, распаковать туплю ну и там всякое. Время в принципе не поджимает, могу хоть года 3 еще учить, но как-то хуёво от ощущения что не самые умные одногрупники уже работают, а я нет. На каком курсе вы бы рекомендовали пойти работать, если будет возможность?
>>1703215 >>1703212 Всмысле усложнять? Это наоборот проще выглядит и читается, да и писанины меньше. Нужно оно точно так же как и обычный for, это просто разный синтаксис
>>1703807 Потому-что у range-base перегрузка только со стат. массивами, потому-что их размер можно на этапе компиляции узнать через std::size если с шаблонами знаком то можешь соурсы глянуть, там кода 5 строк, у дин. массива таких приколов нет, потому-что размер рантаймовый
>>1704024 А это и был ликбез по линковке. Кто же виноват, что ты не понял и перепутал это с ликбезом по системе Линукс? Разберись тогда уж с флагами компилятора... Надеюсь, ты не руками собираешь?
>>1679966 (OP) Сап всем, С++ это реально пиздец? Мимо выучил Python, думал в Веб-макакинг пойти, но чет душа не лежит прямо к этому, да и предложений мало с нулём опыта. Сам только Cython использовал максимум, но понял как в С компиляция работает и бутстрапинг компиляторов, виды типизации. Короче затянуло в вещи чуть поглубже if else, но вот смотрю на вот это все и как-то не верится, что ума хватит это все охватить.
>>1704226 С++ нельзя охватить умом, это бездонная параша, которую перестраивают прямо под задницей. А еще это тормознутый компилятор и гигабайты либ и заголовков. Как же я ржу со слов precompiled header.
>>1704226 > Сап всем, С++ это реально пиздец? Та же хуйня что и джаваскрипт, идут похожими дорогами - пялят поверх старой идеи новый синтаксис с сохранением совместимости, обрастают какими то фреймворками и либами. И кстати джаваскрипт в основе то имел всегда машину на плюсах и там все такие стандартные методы так или иначе в плюсах тупо реализованы в старых исходниках фаирфокса можно убедится. Так что два брата уродца - один в бакенде реализует все говно с проверками типов другой во фронтенде, хотя сейчас уже хуй пойми.
Плюсаны, как вы вкатываетесь в большие проекты? Есть какие-то подходы из личного опыта как вьехать в большую кодовую базу? Может уже придумали какой то софт для визуализации кода, чтобы его было легче воспринимать и понимать, что-то более эффективное чем прокликивание в ideшке? Давно хочу разобраться в коде openxray и openmw, но каждый раз на каком то этапе отступаю, потому что слишком много вещей нужно держать в голове и слишком сильно разветвляется код, тупо теряюсь, забываю с чего вообще сюда полез и так по новой, пока не надоест и не забъю на какое-то время, потом жопа заживает и все по новой. А ведь есть кодовые базы на порядки сложнее и больше, и как то же в них разбираются.
>>1704226 Да. Ты после питона скорее всего пойдешь по следующему пути: >скачал вижуал студио, хеллоу ворд работает >изучаешь 3-й день базу >захотел как в петоне написать тгбота по быстрому >жсон парсеров нет >инструментов для работы с сетью нет >подумаешь да и хуй с ним, сейчас либу притащишь и пойдет дело >смейк ущербен >пытаешься собрать одну из либ с жидхаба >undefined reference to ___tvoya_zalupaInternal__ >с третьей попытки нашел собирающуюся либу >через 5 часов осилил подключить бинари в смейке и инклюднуть директорию с хедерами >по быстрому написал бота по примерам из доки >решил залить свой впс >сосешь хуй без окружения И это просто базовые вещи. Стандартная либа очень маленькая, там буквально только базовые вещи, графики нет, нетворкинга нет, развитой многопоточки нет даже тредпула блять, при этом из всех билд систем самый популярный это как ни странно самый уебищный вариант. Благо сейчас конан развивают, гляди через пару лет нюфаги смогут без морок ставить либы как в петоне.
>>1704776 Потому-что плюсы более консервативны, это не раст, где разработка языка производится на гитхабе, тут собралось пару сотен серьёзных дядь, и решили что они будут принимать идеи от комьюнити, оформлять их, вырезать лишнее и добавлять потихоньку в стандарт. У этих дядь естественно есть свои принципы, которые уже больше 30 лет стараются соблюдать, та же обратная совместимость например. Ну вот так вот сложилось, плюсы это не язык для написания лайтовых программ для автоматизации, это язык для высоконагруженных приложений, где зачастую критически важна надёжность и производительность, а не то, что ты можешь за 15 минут тгбота написать. А вот почему всё так хуёво с билд системами и пакетниками я не знаю, я и сам зеленый еще
>>1705023 Один человек и не должен ничего решать. Язык служит разработчикам, а группа стандарта стандартифицирует язык так, чтобы он вписывался в общие методики и ничего не ломал. Было бы странно, если бы слово Страуструпа весило больше, чем слово какого-то сеньора с 40-летним стажем
>>1704856 Потому что это языки из разных миров, питону питоновое, плюсам плюсовое.
Вообще мир программирования сегодня выглядит так (сразу оговорюсь что выкинул языки типа форт/хаскель/фортран/лисп так как тупо не знаю куда их приткнуть):
C/C++ TIER статические языки которые сами все делают, компилируются напрямую в машкод управляют данными и выделением памяти под эти данные.
Rust/Go/Swift/D TIER по прежнему статически типизированные компилируемые языки отказавшиеся от управления памятью, за них это делает небольшой рантайм прямо во время исполнения.
java/C# TIER статически типизированные языки отказавшиеся от компиляции в машинный код и компилирующиеся в байткод некой абстрактной виртуальной машины которая может запускаться там куда ее портировали.
Python/JavaScript/PHP/lua/Ruby TIER динамические языки компилирующиеся/интерпритирующиеся в машинный код прямо во время исполнения, переложившие проверку типов и вообще всего и вся на свой пухлый рантайм зато освободившие программиста от очень многих рутинных вещей.
каждый тир охватывает какую то свою область в которой он эффективней всего, а внутритировые языки уже обрастают своей инфраструктурой которая так же так же охватывает свои ниши.
>>1705289 Воистину двач образовательный не перестает удивлять как и плюсы. Только что попробовал скомпилить клангом с этой дрисней, работает. В первый раз вижу эти альтернативные токены.
Зачем вообще это было сделано? Где-то используетя?
>>1706339 Наследие сишки, чтобы можно было писать на ней даже в самых ущербных кодировках. Сейчас везде юникод, можно хоть эмодзи в идентификаторах, так что не нужно.
>>1706395 >чтобы можно было писать на ней даже в самых ущербных кодировках Т.е. еще что-то более древнее чем ASCII? Ведь там все основные символы есть.
Ебаное RAII, у меня снова сгорело. Есть три варианта. Я очень хочу второй и не хочу дёргать указатель (и вообще писать ->) как в третьем, и я просто вертел этот синтаксис через двоеточие из первого. Что делать и зачем эта концепция нужна?
Предположим, у меня есть переменная, я хочу её инициализировать значением не сразу (и не в конструкторе), а после выполнения некоторых действий в функции. Например, мне нужно из файла считать эти 800х600. Можно обернуть считывание из файла в функцию и вызвать её после двоеточия - но это маразм же, почему я просто не могу выполнить нужный код и вызвать в конструкторе в удобном мне месте? (inb4 из-за наследования - да знаю я) Вопрос скорее в том, зачем так проектировать свои ебаные библиотеки?
Вот в стандартной библиотеки няшечки, там всё работает - почему нельзя им уподабливаться?
Есть смысл вникать в глубины плюсов на винде? Визуалстудию комп не тянет, а нормальных ide не знаю. А сидя на линуксе вечно такое ощущение что занимаюсь какой-то херней а не программированием.
>>1709127 Попробуй qtCreator - он у меня нормально работал даже на 2 гб памяти с ноутбучным i3. Он маленький и на удивление неплохо справляется с подстветкой всякого для шаблоноговна (он же для qt вроде как спроектирован).
мб тут кто ответит, сап pr, сижу сейчас над задачей создания лайтового аналога headless браузера на qt, мне нужно просто по запросу перейти в яндекс выдачу, найти там нужный сайт и именно из яндекс выдачи на него перейти, чтобы засчитался просмотр, selenium, puppeter и тд. не покатит, давно бы на них сделал, нужно именно на qt(c++), ответов в гугле особо не нашёл, из документации к QWebEngine понял что там необходимо присутствие гуи, но мне нужно эмулировать действие пользователя обычным браузером, а headless нужен потому как буду закидывать этого бота на orange pi zero, где нет выхода под монитор, и не предусмотрен gui. Если у кого то есть идеи, отпишите пожалуйста, буду очень благодарен.
>>1711370 угу, мне накидали ссылок, но там было в одной pyqt, а в другой просто расплывчатые ответы не особо относящиеся к сути, сейчас решил не засирать тредами pr и написать в готовые треды, ща в 112 напишу, мб найдётся знающий человек
Хочу вкатится в создание 3d игорь на c++. Порекомендуйте, что нибудь для изучения DirectX. Хочу в последствии перекатится на OpenGL, потому что кроссплатформа - лучше. А может сразу писать на OpenGl? В общем жду советов профессионалов.
>>1719098 Увы, нет. Вулкан, DX12, Metal - это "низкоуровневые" апи, где надо вручную рулить видеопамятью и синхронизацией цп/гп. OpenGL, DX11 - они попроще, там драйвер многое делает сам.