Программирование

Ответить в тред Ответить в тред
C++ тред #110 /cpp/ Аноним 07/05/20 Чтв 18:20:06 16799661
1549286607132.png 1Кб, 250x250
250x250
Аноним 07/05/20 Чтв 18:24:13 16799702
5462523.png 249Кб, 969x1038
969x1038
>>1679942 →
Таааак уже интересней (или нет, хз).
Я уже такое получал с другой правда хуйней, на стаке пишут копию нельзя чего то блять там
https://stackoverflow.com/questions/1779438/error-with-qobject-subclass-and-copy-constructor-qobjectqobjectconst-qobj
Какую копию, чево блять, у нас же скелет класса в заголовочном файле типа и мы ему просто методы определяем уже в программе не?

Нихуя сука вообще не понимаю чего делаю.
Аноним 07/05/20 Чтв 18:25:39 16799723
Но вообще QtQuick на самом деле такое глюкалово корявое просто пиздец, я думал сделаю пиздатый интерфейс не хуже чем на этих ваших маках и вебах с цсс и в итоге уже на какие только компромиссы не пошел, позорные косяки в фичу определил и сука все равно проблемы лезут и лезут блять.
Аноним 07/05/20 Чтв 18:33:47 16799804
Тут есть так называемый нвидия кун. Можешь ли ты сказать о том, где сам учился? Выпускники каких универов там преобладают?
Аноним 07/05/20 Чтв 18:43:57 16799985
Кто нибудь игры делает на unreal engine 4? Объясните мне, язык полностью учить для этого?
Аноним 07/05/20 Чтв 18:45:51 16800016
>>1679998
>полностью
Лол, нет. Походу выучишь, главное начни что-нибудь делать
Аноним 07/05/20 Чтв 18:47:32 16800047
>>1679972
кьют квик кайф темка, завтра за компутером буду - посмотрю, как сам делал, и помогу
Аноним 07/05/20 Чтв 19:04:43 16800318
А в целом, что вы тут делаете? Программы создаёте или сайты?
мимо с компьютером на вы
Аноним 07/05/20 Чтв 19:18:41 16800489
>>1679998
Полностью его никто и не знает.
Аноним 07/05/20 Чтв 19:19:41 168005010
634652454.png 161Кб, 1434x830
1434x830
>>1680004
Помоги, а то делаю плеер на говяжем анусе (всмысле на бакенде дедбиф) и сука один метод chfysq прокинуть не могу хоть посмотреть как работает кьюмл этот с плюсами.

А то ни одного плеера нет вменяемого-современного, на линуксах так вообще больше половины тупо на пистоне завязана на библиотеки всякие уродские из окружения. Есть на маке плеер свободный Cog с браузером как в клементине ну и развивается форматы все поддерживает, но там автор упрлся по харткору он сам библиотеки пишет с разбором структуры аудиофайлов на обжектив си (то есть не портируемые нихуя). Я тоже когда то брался чисто для интереса более менее инкапсуляцию Ogg и Flac освоил но не декодирование даже, а форматов хуева гора да еще у каждого там разные версии и методы сжатия и даже порядок байт бывает, поэтому лучше взять что то готовое. Говядина вроде неплохо развита в плане поддержки форматов и кроссплатформенности (ну и эквалайзер надо оттуда как то спиздить полюбому) плюс разработчик наш то есть обратная связь будет лучше.
Аноним 07/05/20 Чтв 21:43:07 168023511
1.png 3Кб, 266x219
266x219
2.png 9Кб, 209x154
209x154
Рибят, можно как-то при компилировании в wasm попросить clang++ экспортировать функции без манглинга? А то как на пике получается - функция у меня в исходниках называется testadd, а жопаскрипт видит ее как _Z7testaddii.
Аноним 07/05/20 Чтв 21:56:10 168024912
Аноним 07/05/20 Чтв 22:00:31 168025313
>>1680249
Добра! Как я забыл про это, делал же так, только в очень сильно другом контексте.
Аноним 07/05/20 Чтв 23:15:15 168033514
>>1679970
> скелет класса в заголовочном файле типа и мы ему просто методы определяем уже в программе не?

Не разыменовывай указатель, когда передаешь в конструктор базового класса
Аноним 07/05/20 Чтв 23:17:02 168033615
>>1679998
Да. Сначала желательно вьехать в плюсы и в ООП.
Но ничего не мешает тебе начать с ковыряния блюпринтов.
Аноним 07/05/20 Чтв 23:30:27 168034916
изображение.png 9Кб, 654x257
654x257
изображение.png 6Кб, 496x238
496x238
Программач, я совсем зелёный. Как мне удалить строку из файла через <fstream> и стандартной библиотеки?

То есть, есть файл пикрил1, и нужно, чтобы программа делала пикрил2. Как такое можно сделать?
Аноним 07/05/20 Чтв 23:47:13 168036217
>>1680349
1. залить контент файла в стринг/масив байтов/...
2. сделать string.replace или заменить в масиве вручную
3. залить исправленный контент в новый файл
Аноним 08/05/20 Птн 00:38:31 168041518
>>1680349
Хранишь обе картинки как символы в своей либе. Если на вход поступает первая - выдаешь вторую.
Аноним 08/05/20 Птн 01:57:10 168045319
Ананасы, вопрос такой
Есть структура, они конвертится в тюпл, а затем переводятся в массив байт (с записью опкода чтобы знать что за операцию выполнить) и передаётся по сети
При получении преобразуется обратно в структуру

https://wandbox.org/permlink/pfQIL5eYzh3AvhpP

Я где-то в реализации обосрался?
Аноним 08/05/20 Птн 07:18:53 168050820
23451.png 72Кб, 905x713
905x713
5864784.png 149Кб, 794x830
794x830
>>1680335
> Не разыменовывай указатель, когда передаешь в конструктор базового класса
Да я чет вообще не понимаю что я делаю.
Слева это как я себе представляю наследование классов, а с права я вообще нихуя не понимаю.
Через двоеточие наследование - public от публичной части наследование что ли только?
Через Q_UPRLS это оно типа как макрос всякую хуйню подставляет (пиздец тоже блять объектно ориентированное программирование), тоже кстати что подставляет интересно, может втарую приватную часть из за чего все и не собирается.
Потом конструктор по имени класса который блять наследует конструктор родителя что ли? Плюс в аргументы у него попадают указатель на родителя который мы передаем в родительский конструктор (пиздец ебануться блять)
Снизу зачем эта хуйня с тильдой? Снизу кастомные секции которые надо в хуевой кутешной документации смотреть

Вообще не к плюсам если что претензия, они (понятно дело) берегли сишную "гибкость" так что имеем что имеем.
Аноним 08/05/20 Птн 07:46:20 168052121
>>1680508
> что подставляет интересно
АХАХАХА сука, убрал Q_OBJECT и собралось. сейчас посмотрю работает ли вызов метода из qml... ии разумеется нихуя не работает объект есть, а метода пишет что нет
Аноним 08/05/20 Птн 08:39:23 168052922
ку крестач. юзается ли c++ в связке с другими языками для разработки. если да, то может кто привести примеры.
Аноним 08/05/20 Птн 08:54:15 168053223
>>1680521
Долбоёб, прогони свой файлик с макросом через moc
Аноним 08/05/20 Птн 09:12:37 168054024
>>1680532
> Долбоёб, прогони свой файлик с макросом через moc
Как бля прогнать то, я ниче не понимаю. в документации нихуя об этом qtcreator сам все прогоняет насколько понимаю
Аноним 08/05/20 Птн 10:40:41 168057225
>>1680540
> я ниче не понимаю
Ну так и съебись отсюда и не возвращайся, пока не разберёшься, как работает система сборки твоей хуйни.
Аноним 08/05/20 Птн 13:28:04 168071326
Как запретить Visual Studio делать пробелы по краям знаков вроде + - =? Заебался вручную их убирать.
Аноним 08/05/20 Птн 13:48:38 168074527
>>1680713
Разреверсь студию и запатчи в нужном месте
Аноним 08/05/20 Птн 13:55:08 168075428
>>1680745
Это они нам так свой жыдомасонский кодстайл пытаются навязать?
Аноним 08/05/20 Птн 13:59:24 168076629
>>1680754
Сейчас бы не отделять пробелами арифметические операции и присвоение, кек.
Там есть настройки автоформатирования кода, вроде раздел "текстовый редактор". Мб для таких извращенцев как ты они добавили возможность не ставить пробелы.
Аноним 08/05/20 Птн 14:45:59 168082230
15867888343590.png 234Кб, 603x324
603x324
Сейчас изучаю Qt. Пользоваться дизайнером форм это труЪ или лучше все делать руками?
Аноним 08/05/20 Птн 15:31:46 168086831
>>1680822
Если учишься, то имеет смысл попробовать сделать без
Аноним 08/05/20 Птн 15:31:55 168086932
>>1680529
Вроде как всякие питоновские ML фреймворки типа tensorflow написаны на C++ и уже юзаются в питоне. Скорее всего такой хуйни много, когда нужно выжать максимум производительности в критических частях. Ну еще в игровых движках поверх самого двигла написанного на крестах юзают какой-нибудь скриптовый язык типа Lua.
Аноним 08/05/20 Птн 15:39:45 168087433
>>1680868
Учусь то я пока без. Меня интересует пользуются ли им в реальных проектах. Читаю Макса Шлее, у него в книге только одна глава дизайнеру отведена
Аноним 08/05/20 Птн 15:42:42 168087634
1498044640295.png 119Кб, 1083x491
1083x491
Аноним 08/05/20 Птн 15:54:45 168088435
Щас тыкал ардуино Уно и esp32 (до этого особо не игрался) и как-то внезапно понял, что перед мной настоящий c++, под esp ещё и библиотека собрана, чтобы всякие vector использовать.
И это охрененно! Я всегда считал, что чистый си не очень в 2к20 подходи для микроконтроллеров, если не считать драйверный уровень. В c++ намного безопаснее благодаря ссылкам и контейнерам. Сишное говно на мк у тебя за массив уйдет и начнет память по чуть-чуть хуячить, и будешь ты сидеть с осциллографом искать ошибку и не понимать, почему твое устройство периодически сбоит.
Аноним 08/05/20 Птн 16:05:06 168088936
>>1680884
>Сишное говно на мк у тебя за массив уйдет и начнет память по чуть-чуть хуячить
Пиши так, чтобы не выходило. В чем проблема обвязку для массива написать? В крестах у тебя тоже что угодно может произойти, скобочки [] в векторе без проверки работают.
Аноним 08/05/20 Птн 16:07:00 168089137
>>1680876
>Представь себе
Ну так gnu.org же. Что у них кроме схемы может быть? Там диды заплесневелые сидят. Столлман вон, даже не знает (и не хочет знать), что в имаксе org-mode и helm теперь есть.
Аноним 08/05/20 Птн 16:34:48 168091438
>>1680889
Да долбоебизм делать самому обертки и опять велосипедить, когда уже всё 200 раз было выдумано. Есть std::array, просто прекрасно, и к нему прекрасно подходит range based цикл. Охуенно. И я уверен, что производительность будет абсолютно такая же благодаря const размеру массива, как говнокостыль на си. И таких примеров отличной применимости крестов к мк масса
Аноним 08/05/20 Птн 16:48:50 168093539
изображение.png 29Кб, 786x351
786x351
Что здесь означают ? "" : в cout?
Аноним 08/05/20 Птн 16:56:04 168094740
>>1680935
Гугли тернарный оператор
Аноним 08/05/20 Птн 17:00:19 168095841
>>1680914
На МК обычно все это тупо не нужно. Все переменные глобальные, массивы статические. То есть у тебя в цикле izalupa < zalupa_count; ++izalupa - и за границы ничего не выходит.
Аноним 08/05/20 Птн 17:11:23 168098942
Хуяси, на винде, оказывается, можно сделать
std::system_error(code, std::system_category()).what()
и what вернет текстовое описание для любого кода ошибки из винапи (GetLastError, HResult, WSA*, и т.п.) -- да ещё и на русском языке.
Чё только не найдёшь в стандартной библиотеке. А я раньше городил свои классы исключений для виндовых ошибок.
Аноним 08/05/20 Птн 21:32:37 168153443
>>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
Аноним 08/05/20 Птн 21:43:43 168154844
>>1681534
>Но только в кодировке cp1251
Ну и хорошо, все равно в виндовую недоконсольку выводить.
Аноним 09/05/20 Суб 00:10:35 168169445
вам реально интересно в этом говнище копаться? std::system_huistem::<lambda(x)>::supet_boost_library<Interger_Extented_Debugging>?
Аноним 09/05/20 Суб 00:13:37 168169846
>>1681694
>вам реально интересно в этом говнище копаться?
В этом суть крестов - есть решения на абсолютно все вопросы, при этом с хорошим качеством кода.
Аноним 09/05/20 Суб 01:17:27 168173847
>>1681694

самый интерес это читать ошибки рантайма
Аноним 09/05/20 Суб 01:38:00 168174048
>>1681694
Ну мы же программисты, а не тупые обезьяны
Аноним 09/05/20 Суб 03:05:20 168177549
>>1681534
Угу, только utf-8 на винде -- он имхо ни в пизду, ни в красную армию. В смысле, ни в OutputDebugString/MessageBox (cp1251), ни в консольку (cp866).
Аноним 09/05/20 Суб 03:59:52 168178050
>>1680989
>Хуяси, оказывается
Ничего удивительного, наоборот, в этом вся суть пердольного говна - доков-то нет. Доки делает только майкрософт, поэтому когда программист гуглит, он получает GetLastError() и его друзей, вот всю жизнь так и пишут, ведь как ты узнаешь про другое? Никак. Только красноглазики которые свою библиотеку писали и знают, и шизоиды пердолики которые всю либу и её обновления от корки до корки зубрят.
Аноним 09/05/20 Суб 04:04:02 168178151
>>1681780
Шизик из ситреда в крестотред протек
Аноним 09/05/20 Суб 05:00:21 168179252
>>1681780
А кто по докам язык изучает? Обычно просто гуглят по ходу дела "как в язык-нейм сделать хуйня-нейм", а в доки лезут уже когда знают, чего хотят.
Аноним 09/05/20 Суб 06:24:21 168180053
Аноним 09/05/20 Суб 06:43:07 168180554
>>1681792
Библиотека это не язык. Библиотеки не изучают, их используют, а чтобы использовать нужно знать о их существовании, а для этого нужна документация, качественная. Но красноглазие это же ШВАБОДКА, а писать доки совсем не интересное занятие, поэтому у пердоговна нет доков, в результате оно никому не нужно, потому что попросту никто не знает о существовании и возможностях кроме самих авторов.
Аноним 09/05/20 Суб 06:46:03 168180655
>>1681800
>As of Windows Version 1903 (May 2019 Update)
Микросос 15-рублевый закукарекал за свою дриснятку.
Аноним 09/05/20 Суб 07:32:34 168180856
>>1681800
Сложна. Какие-то версии с манифестами, я ебал.
Аноним 09/05/20 Суб 08:13:04 168181057
Помогите с задачей. На вход подается строка, состоящая из цифр (0 и 1), круглых скобок и знаков и +. Грубо говоря логическое выражение. Нужно его вычислить. Вопрос как? Пока что реализую это рекурсией. Рекурсивная функция принимает в себя строку, возвращает булеан. В строке - выражении находит последнее математическое действие, которое в нем должно вычисляться. Делит входящую строку на 2 части (слева от или + и справа от них). Затем вызывает саму себя 2 раза, с левой частью, и с правой. И все это вызывается до тех пор, пока функция не получит простой пример на вход, типа "1*0", вычисляет его. Возвращает результат. Который используется для вычисления уже вызвавшей функции и так до последней, которую вызвали первой. Но все это реализовано криво, скорее всего неэффективно. Есть ли другие способы решения такой задачи или может вообще готовая мат. функция, решающая формулу в строке?
За воду в тексте не бейте, я не умею объяснять.
Аноним 09/05/20 Суб 08:13:48 168181258
>>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.
Аноним 09/05/20 Суб 08:14:32 168181359
>>1681810
Например на ввод:
(11)(1+0)
должно вывести:
1
Аноним 09/05/20 Суб 08:15:02 168181460
>>1681813
звездочку доска сожрала
Аноним 09/05/20 Суб 08:18:49 168181561
>>1681805
Не соглашусь с тобой; я считаю, библиотеки — это тоже часть языка. Мало знать синтаксис и операторы чтобы заявить, что ты знаешь язык. Нужно ещё и писать на нём так, чтобы другие люди не плевались от велосипедов. А это уже опыт нужен, километры прочитанных чужих сорцов и ответов на стековерфлоу, чтобы знать, как вообще принято, и что "вот так вообще можно было".
Аноним 09/05/20 Суб 10:03:03 168184462
>>1681810
Лабы идут нахуй.
если все выражения составленны правильно, то есть все со скобками, то можешь искать последнюю открывающую и после нее первую закрывающую. Между ними вычислять выражение и подставлять результат. Выполнять пока не останется 1 или 0, либо пока не встретишь ошибку в формуле
Аноним 09/05/20 Суб 11:58:21 168188463
ww1.png 11Кб, 431x453
431x453
Показал я одному человеку код.
Ответ убил, так сказать.

"Не надо делать присваивание внутри проверки условия. Это путь к ошибкам, плохая практика"

А что, всм, что поменять, чтобы было хорошо?
пейст - https://pastebin.com/ePK1bzqU
Аноним 09/05/20 Суб 12:08:02 168189164
>>1681884
>while(n /= 10)
Ты совсем в глаза ебёшься?
Аноним 09/05/20 Суб 12:09:11 168189265
>>1681805
О чём ты вообще? цппреф на что тебе?
>>1681792
Хз, первым делом на цппреф лезу, только потом уже в остальные места.
Аноним 09/05/20 Суб 12:12:19 168189766
>>1681884
>>1681891
Та я понимаю.
Цикл работает пока истина, но как переписать это условие.
Аноним 09/05/20 Суб 12:13:10 168190067
>>1681897
Ну отдельно сделай while и отдельно n /= 10.
Аноним 09/05/20 Суб 12:13:52 168190268
>>1681897
>Цикл работает пока истина
Что значит пока истина? При каком значении n цикл прекращает работать?
Аноним 09/05/20 Суб 12:25:56 168191369
Аноним 09/05/20 Суб 12:26:51 168191470
>>1681913
Не понял. При каком n из цикла выходим?
Аноним 09/05/20 Суб 12:27:24 168191571
Аноним 09/05/20 Суб 12:27:48 168191772
while(n/10!=0) {
n /= 10;
if(n % 10 < min)
min = n % 10;
}
переписал вот так.
Аноним 09/05/20 Суб 12:28:24 168191973
>>1681915
Ну вот и поставь туда while не равно 0, а внутрь цикла засунь n /= 10.
Аноним 09/05/20 Суб 12:28:40 168192074
Аноним 09/05/20 Суб 12:37:57 168192475
>>1681698
>на все вопросы
Правильно. Похуй, что 95% этих решений никогда в жизни не пригодятся, ведь достаточно одного факта их наличия, чтобы преисполниться священным экстазом. Ради этого можно даже разрешить себя насиловать огромным легаси дилдаком с занозами и гвоздями наружу.

>>1681738
Двачую

>>1681740
Если тебя манит в С++ желание несоответсовать стереотипам о макаках, то у меня для тебя плохие новости

мимо 4 года на плюсах
Аноним 09/05/20 Суб 12:44:47 168192876
>>1681919
Так в сях ничего кроме ноля и нет по сути.

>>1681917
А вот тут я кстати не знаю может подвешенная операция n / 10 вещественное возвращать?

В твоем случае наверно приведение типов еще ставить придется

while ((int)(n / 10) != 0)
Аноним 09/05/20 Суб 12:47:32 168192977
>>1681928
>А вот тут я кстати не знаю может подвешенная операция n / 10 вещественное возвращать?
Какое вещественное?
while(n != 0)
{ n /= 10;}
Какое тут вещественное будет, о чём вы, я ебу собак.
Аноним 09/05/20 Суб 12:59:13 168193778
>>1681919
Ну и кстати ты видимо не вкурсе как железо работает, деление довольно тяжелая операция n /= 10 это сразу

idiv %n1, 0x0A, %n1
cmj %n1, 0x00, .L01

целочисленное деление и условный переход в начало цикла грубо говоря
В твоем же случае изменение переменной n предполагается только после проверки условия и запуска итерации цикла, то есть два деления придется делать еще в какую то переменную записывая при том что переменная n нигде не используется дальше то есть беречь ее нахуй не надо. Наверняка конечно какой нибудь хороший компилятор сам это увидит и переделает, но тебе тоже нет смысла так уродовать свой код, ты лучше ему не делаешь.
Аноним 09/05/20 Суб 13:01:30 168194079
>>1681937
Чел, это пикосекунда разницы, что такое пикосекунда перед читаемостью?
Аноним 09/05/20 Суб 13:02:23 168194180
>>1681937
К тому же любой компилятор в 2к20 всё это соптимизирует. Код пишется не для машин, а для людей. while(n /= 10) потенциальный источник ошибок, никто так не пишет.
Аноним 09/05/20 Суб 13:05:04 168194381
>>1681929
А ну ты вначале то не так же написал >>1681920

Ну и вообще там собственно n то нигде ничего не присваивается (вообще в оригинальном коде), то есть цикл никогда не запустится походу.
Аноним 09/05/20 Суб 13:06:47 168194582
>>1681943
>А ну ты вначале то не так же написал
Это лишнее, зачем в вайле n\10 и потом внутри n /= 10?
Аноним 09/05/20 Суб 13:07:40 168194683
>>1681943
> n то нигде ничего не присваивается
n /= 10 присваивается
Аноним 09/05/20 Суб 13:08:22 168194784
>>1681943
n /= 10 это то же самое, что n = n/10
Аноним 09/05/20 Суб 13:17:02 168195685
>>1681940
Хуикосекунда, это несколько тактов во первых, во вторых устройств деления ну вот скажем в интеле любом современном всего два - один чисто целочисленное может считать (без остатков тупо) второй полноценный, в двух каналах которые еще и другое что то помимо этого могут считать, то есть операция деления обречена тупо стоять ждать свое конкретное окошко и ни в какие другие суперскаляр ее послать не может. Благо таких операций в коде как правило не много.
>>1681941
Ну так вот именно что соптимизует так как ты бы мог написать сразу а не разводить какой то некрасивый мудазвонский код пряча запись в переменную куда то в тело цикла. Какого рода там ошибки могут быть непонятно
Аноним 09/05/20 Суб 13:27:05 168196586
>>1681956
Да плевать, всё равно очень быстро.
>писать сразу
Так хуже читается, пока n не равно 0 лучше чем пока n, которое мы ща делим на 10, не станет равно 0. Затруднение чтения порождает ошибки.
Аноним 09/05/20 Суб 14:46:23 168210287
>>1681956
>Ну так вот именно что соптимизует так как ты бы мог написать сразу а не разводить какой то некрасивый мудазвонский код
Ты реально везде у себя в коде вместо деления на 10 пишешь (x * 3435973837) >> 35?
Аноним 09/05/20 Суб 15:05:02 168211488
>>1682102
Ну нет конечно, но это ведь выглядит и не проще, и у того анона нихрена не проще выглядит

В первом примере энка самоделится на десять и проверяется на ноль, дальше проверяется меньше ли число минимума и если что записывается. Я кстати не вижу с этим проблем о которых изначали вообще спрашивали что ужас-ужас, переменная локальная локально обрабатывается никуда не сохраняется, ничего вообще ужасного.

Во втором же примере цикл начинается с проверки n на ноль сразу, потом только делится и дальше там все остальное. Потом уже то что мы получается до этого поделили и уже заюзали визде с битовыми этими операциями, на следующем витке цикла получается только проверяется а ноль там вообще был или нет.

Вот так человек борясь с какими то там гипотетическими ошибками сам запутался накосячил и сделал грубейшую ошибку.
Аноним 09/05/20 Суб 16:53:58 168221289
Разрешение перегрузки за 500. Внимание на код:

void check(int*) {}
void check(int (&)[10]) {}

int main() {
int arr[10] = {};
check(arr);
}

Какого хуя error: call to 'check' is ambiguous. Ведь ссылка на массив лучше подходит, т.к. для указателя нужно лишнее преобразование ( разложение ( decay ) массива в указатель )
Аноним 09/05/20 Суб 16:58:44 168221490
>>1682212
Потому что нехуй писать как еблан со своими ссылками на массив, про decay знаешь, а про std::array не знаешь, про span видимо тоже не слышал
Аноним 09/05/20 Суб 17:10:47 168222291
>>1682214
>Потому что нехуй писать как еблан со своими ссылками на массив, про decay знаешь, а про std::array не знаешь, про span видимо тоже не слышал
Епта, при чем тут std::array, вопрос чисто в академических целях, а не для того, чтобы чет там пофиксить
Аноним 09/05/20 Суб 17:11:16 168222392
>>1682212
> call to 'check' is ambiguous
разве ссылку не check(&arr); надо передавать? А то ты ей тут просто аргумент пихаешь а там оно на что ссылку то должно дать на копию на оригинал, что ожидается то что у тебя в main массив при помощи функции обработается?
Аноним 09/05/20 Суб 17:19:19 168222993
>>1682223
>разве ссылку не check(&arr); надо передавать? А то ты ей тут просто аргумент пихаешь а там оно на что ссылку то должно дать на копию на оригинал, что ожидается то что у тебя в main массив при помощи функции обработается?
Не особо понял что ты вообще тут написал. Если ты про

int main() {
int arr[10] = {};
int (&refarr)[10] = arr;
check(refarr);
return 0;
}

то это тоже не работает.
Аноним 09/05/20 Суб 17:21:29 168223194
>>1682222
Ну раз в академических целях, то пиздуй читать стандарт, раздел с выбором перегрузок
Аноним 09/05/20 Суб 18:44:37 168229195
15866704657030.jpg 13Кб, 351x351
351x351
Поясните за 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++...
Аноним 09/05/20 Суб 18:47:42 168229596
>>1682212
Так исторически сложилось.
Аноним 09/05/20 Суб 18:53:07 168229797
>>1682291
Ну фронтенды связаны наверно, зачем двум свободным проектам средства распылять и пилить каждый свою поддержку стандартов языка, тем более такого как плюсы.
Аноним 09/05/20 Суб 19:32:45 168232498
.png 15Кб, 923x584
923x584
Так ананасы
Есть шаблонная структура, она инстанцируется разными типами и всё это упаковывается в картеж
Как получить копию, например, Struct_t<SomeType1> в рантайме?
Или может быть есть другой способ хранить такой список разных типов?
Аноним 09/05/20 Суб 19:38:36 168233399
>>1682324
это очень странный вопрос. auto hueta = get<0>(tpl); ?
Явно не это же ты имеешь ввиду
Аноним 09/05/20 Суб 19:43:54 1682337100
>>1682333
Да, так
Только индекс мне известен в рантайме
Аноним 09/05/20 Суб 19:45:30 1682340101
используются ли операторы типа | и & в настоящих программах? Где о них можно почитать?
Аноним 09/05/20 Суб 19:47:21 1682342102
>>1682340
Используются для битовых масок
Аноним 09/05/20 Суб 19:58:01 1682375103
>>1682337
>>1682333
>>1682324
Алсо, я могу, конечно, передавать в конструктор Struct_t индекс по которому он будет находится в картеже, но хотелось бы этого избежать чтобы не было путаницы в будущем
Аноним 09/05/20 Суб 20:01:19 1682382104
>>1682337
Это сильно сложнее. В таком случае тебе проще сделать полиморфный класс, хранить все это говно в векторе там
Аноним 09/05/20 Суб 20:04:15 1682388105
Аноны, как вкатываться в WinAPI? До этого работал только с QT и немного OpenGL.
Аноним 09/05/20 Суб 20:09:31 1682395106
>>1682388
в пиздёнке своей мамаши поищи
Аноним 09/05/20 Суб 20:42:41 1682428107
>>1682382
Так и хотел делать в начале, но мне бы всё равно пришлось знать тип в который кастить
Хуй с ними, короче, не буду изъёбываться. Лишний раз лучше напишу так
Аноним 09/05/20 Суб 20:54:54 1682443108
Аноним 09/05/20 Суб 20:59:43 1682449109
>>1682388
Ну, читаешь МСДН. В чем вопрос то?
Аноним 09/05/20 Суб 21:08:50 1682466110
>>1682291
>шинда
>гцц
>цланг
Ты серьёзно не видишь, в каком пункте проблема?
Аноним 09/05/20 Суб 21:09:26 1682469111
Аноним 09/05/20 Суб 21:17:51 1682487112
>>1682337
Если в рантайме есть только индекс, то типа у тебя, получается, нету? И что ты делать собрался тогда с этой хуйнёй? Вообще, можешь ёбнуть тупой свитч на каждый индекс.
Аноним 09/05/20 Суб 21:18:11 1682488113
>>1682469
Кажется в твоей нашлось. Рядом с трупом бомжа лежало.
Аноним 09/05/20 Суб 21:25:43 1682496114
>>1682291
Поставь MSYS2 и не еби мозг. Там для всех популярных пакетов бинарные сборки, ничего компилировать не надо.
https://www.msys2.org/
Аноним 09/05/20 Суб 21:27:06 1682499115
>>1682324
Используй паттерн посетитель, правда его нет для кортежей в std, так что придется самому писать - он почти такой же как в variant, только с индексовм.
Аноним 09/05/20 Суб 21:27:09 1682500116
>>1682487
> И что ты делать собрался тогда с этой хуйнёй?
idx внутри Struct_t это опкоды которые передаются по сети
param это данные соответственно, точнее там не структура, а ещё они картеж (для хранения типов)
Зная какой опкод мне пришёл в пакете я бы его считывал в param (мне бы не пришлось думать о порядке полей), а затем он преобразовывался бы структуру которой я его инстанцировал при упаковке в картеж.

Короче говоря чтобы чуть-чуть меньше ручной работы было.

Наверное, не самый хороший способ это сделать, но хотел попробовать вот такое

Аноним 09/05/20 Суб 21:31:52 1682510117
>>1682212
Проверяй список боянов прежде чем писать
wg21.link/cwg1789
Аноним 09/05/20 Суб 22:05:56 1682548118
>>1681928
>>1681929
Вот. Может кого волнует.
Переписал вот ТАК:

min = n;
while (n) {
check = n % 10;
n /= 10;
if (check < min)
min = check;
}
Аноним 09/05/20 Суб 22:16:34 1682559119
>>1682466
И что? Порт gcc на что? К тому же я планировал под разные ос потом собирать приложение, мне нужна кроссплатформенность.

>>1682496
С ним я дел не особо вообще хочу иметь. Любая unix среда - костыль, который еще и работает в разы медленней. В частности медленно собирает.

Алсо, я уже нашел способ заставить работать существующие библиотеки gcc с clangом. Надо было добавить флаг -target x86_64-pc-windows-gnu Без этого флага он вообще не мог ни одной либы найти, хоть и в PATH все было прописано. И напрямую, через -I -L я указывал заголовки и библиотеки, не работало нихуя.
Аноним 09/05/20 Суб 22:20:43 1682562120
>>1682559
А clang я выбрал, потому что вычитал, что его лицензия не требует выкладывать исходники приложения. Но я не проверял эту инфу да и особо пока не вникал в это. Смотрел еще сравнения clang и gcc, первый по производительности опережает немного. И да, под clang я подразумеваю clang++, а под gcc - g++.
Аноним 09/05/20 Суб 22:21:46 1682564121
>>1682337
Ну так в чем проблема?
if (myIdx == 0)
....auto hueta = std::get<0>(...);
Аноним 09/05/20 Суб 22:26:24 1682568122
>>1682562
> лицензия не требует выкладывать исходники приложения
Тащемта никакая не требует. А вот если ты у них код начнёшь пиздить...
Аноним 09/05/20 Суб 22:40:54 1682578123
>>1682564
Мне без этой портянки надо.
Аноним 09/05/20 Суб 22:40:56 1682579124
>>1682562
Ты уже вытекаешь из треда просто.
Аноним 09/05/20 Суб 22:41:05 1682580125
Аноним 09/05/20 Суб 22:47:09 1682583126
>>1682559
>И что?
Чел, ну ты реально тугой. Ты пытаешься завести POSIX софт на системе, не поддерживающей этот стандарт, и спрашиваешь почему всё настолько через жепу?

>>1682562
>И да, под clang я подразумеваю clang++, а под gcc - g++.
Вот тут я орать начала, ахуеть ты реально тугой. Это линки, блядь, считай что ярлыки на рабочем столе.
Аноним 09/05/20 Суб 22:56:15 1682598127
>>1682580
Где здесь получение копии по нужному индексу?
Аноним 09/05/20 Суб 22:56:33 1682599128
>>1682583
>порт
>POSIX софт
Это я тугой? Винда тут даже ни при чем. На любом другом дистрибутиве linux все было бы +- тоже самое. Clang'у так же бы пришлось говорить где лежат библиотеки. И о каком, нахуй, posix речь, когда ИСХОДНИКИ, сука, той же libc++ не содержат в CMAKE параметра для управления теми самыми posix потоками, разве что на unix от них вообще пришлось бы отказываться.

>линки
Хуинки. Че ты несешь, нахуй?

>>1682579
Тебе в рот.
Аноним 09/05/20 Суб 23:02:34 1682608129
>>1682598
Ну поменяй const auto& tuple_value на auto tuple_value, будет тебе копия, лол
Аноним 09/05/20 Суб 23:08:05 1682614130
>>1682608
Мне нужно чтобы (в данном случае match) возвращался копию этого значения из кортежа.
При этом лямбда не должна захватывать ничего по ссылке\указателю.
Аноним 09/05/20 Суб 23:09:06 1682615131
>>1682614
> чтобы функция возвращала копию
Фикс
Аноним 09/05/20 Суб 23:21:10 1682635132
>>1682614
Как ты себе представляешь возврат разных типов из одной функции? делай в функторе все то, что ты хотел делать с возвращенным значением
Аноним 09/05/20 Суб 23:23:04 1682639133
>>1682635
> Как ты себе представляешь возврат разных типов из одной функции?
Вот и выяснял полдня как можно было бы приблизится к этому
Аноним 09/05/20 Суб 23:37:47 1682649134
>>1682639
Тебе анон правильно говорит. Не пытайся засунуть банан в жопу, лучше его съешь.
Аноним 09/05/20 Суб 23:39:46 1682651135
Без имени.png 30Кб, 390x615
390x615
Почему не компилируется?
>error: invalid operands of types ‘Int’ and ‘Int’ to binary ‘operator+’
Если убрать все из main(), то нормально компилируется.
Зачем тогда нужна именно такая форма operator+ с указателями?
Аноним 09/05/20 Суб 23:41:07 1682652136
>>1682649
> Не пытайся засунуть банан в жопу
Ну и истории у вас
Пока решил отказаться от этой затеи и отложить её до других случаев
Аноним 09/05/20 Суб 23:52:02 1682658137
>>1682562
>А clang я выбрал, потому что вычитал, что его лицензия не требует выкладывать исходники приложения
1) Скомпилированные программы не попадают под действие GPL
2) Благодаря GCC Runtime Linking Exception ты можешь использовать glibc, не попадая под действие GPL
Аноним 09/05/20 Суб 23:53:08 1682660138
>>1682639
Посмотри доклад Полухина про трюки из такси, там вроде что-то похожее в третьей части.
Алсо, можно auto поставить вместо типа возвращаемого значения
Аноним 09/05/20 Суб 23:54:21 1682661139
>>1682651
Погугли, как оператор перегрузить
Аноним 09/05/20 Суб 23:55:59 1682663140
15750256980030.jpg 24Кб, 267x274
267x274
>>1682651
>new еще и без delete
>перегрузил + с разными типами (Int, Int*)
>динамическая аллокация без очистки на каждый вызов +
>складывает указатели
Пизда. Ты наверно туториал по С# открыл вместо С++ да и не заметил.
Аноним 10/05/20 Вск 00:00:33 1682667141
>>1682660
То, во что выводится auto, становится понятно уже в compile-time, а у него runtime. auto -- это тебе не "ну давай как в петоне))0"
Аноним 10/05/20 Вск 00:17:38 1682676142
>>1682660
> Алсо, можно auto поставить вместо типа возвращаемого значения
Я так и сделаю, но в таком случае мне этот картеж вообще не нужен будет.
А так бы я по индексу делал копию param и получал нужный тип. Ну если бы это работало, конечно.
Аноним 10/05/20 Вск 00:17:57 1682677143
>>1682661
>>1682651
Тогда почему такой оператор вообще компилируется? Что он значит?
Аноним 10/05/20 Вск 00:20:18 1682679144
>>1682663
Этот код нормально компилируется, если оставить main() пустой. За каким хуем в таком случае нужна такая форма operator+ с указателями?
Аноним 10/05/20 Вск 00:26:46 1682681145
>>1682679
Ты определил Int ^ (Int, Int ^), и на это компилятор выдал тебе справедливое "пощёл нахуй", когда ты попытался сложить Int ^ и Int ^.
Аноним 10/05/20 Вск 00:32:41 1682686146
>>1682681
На "определил" clang++ и g++ просто молча скомпилили. Почему?
Аноним 10/05/20 Вск 00:33:34 1682688147
>>1682686
Код не использовался нигде и компилятор его выкинул?
Аноним 10/05/20 Вск 00:37:11 1682692148
>>1682651
Хуя ты дурачек, дружище съебка ты из треда, тебе все равно только в макдаке останется работать с таким подходом
Аноним 10/05/20 Вск 00:37:23 1682693149
>>1682688
Это само собой. Но код был валидный. Зачем нужен class ^operator (class, class^) ? Почему он компилируется?
Аноним 10/05/20 Вск 00:44:11 1682697150
>>1682635
Ну вдруг у тебя реально есть надобность в функции типа A★ A::operator+(B★), зачем компилятору такое запрещать. И, да, если тебе интересно, он должен скомпилироваться если ты сделаешь Int ★c = (★a) + b
Аноним 10/05/20 Вск 00:46:19 1682698151
>>1682697
>Int ★c = (★a) + b
Это уже лучше. А можно просто a + b ?
Аноним 10/05/20 Вск 00:51:54 1682703152
>>1682698
Так ты определи Int ^ operator+(Int ^, Int ^), тогда будет можно.
>>1682686
Потому что можно что угодно определить. Тебя смущает сложение разнородных объектов? Может, я хочу матрицу умножать на вектор типа b = A x, тогда сигнатура должна быть vec operator(mat, vec). Логично? Пиздец как логично.
Аноним 10/05/20 Вск 00:53:07 1682705153
Блять, со звёздочками можно не объебаться, только если отвечаешь на пост, в котором с ними объебались.
Аноним 10/05/20 Вск 00:55:34 1682706154
>>1682703
>Так ты определи Int ^ operator+(Int ^, Int ^), тогда будет можно.
Это через friend определять? А то если в классе пытаюсь определить, то компилер ругается. Говорит, что лишний аргумент ненужон.
Аноним 10/05/20 Вск 01:42:43 1682735155
>>1682706
Вне класса, просто как функцию. Чтоб в private поля лезть, нужен friend, да.
Аноним 10/05/20 Вск 01:57:56 1682744156
>>1682735
>error: ‘friend’ used outside of class
>error: member functions are implicitly friends of their class
Заебали, так и скажите сразу, что перегрузка операторов это фейк. Зачем пудрите мозги нам, сишникам и скриптовикам?
Аноним 10/05/20 Вск 02:09:28 1682748157
image.png 9Кб, 415x105
415x105
Аноним 10/05/20 Вск 02:53:40 1682760158
Аноним 10/05/20 Вск 03:56:56 1682777159
Аноним 10/05/20 Вск 05:43:34 1682786160
Annotation 2020[...].png 21Кб, 736x232
736x232
Аноним 10/05/20 Вск 09:06:42 1682832161
Аноним 10/05/20 Вск 09:07:31 1682833162
>>1682786
&& гарантирует выполнение слева направо
Аноним 10/05/20 Вск 09:19:52 1682841163
Аноним 10/05/20 Вск 09:26:41 1682845164
>>1682832
Потому что ты не умеешь пользоваться WinAPI. Для этой задачи хватит и обычных std::mutex и std::thread
Аноним 10/05/20 Вск 09:28:49 1682846165
>>1682845
Что я конкретно делаю не так. Мне надо именно на винапи сделать
Аноним 10/05/20 Вск 11:59:52 1682952166
>>1682832
В каком смысле "не выполняется первый поток"?
Аноним 10/05/20 Вск 12:14:17 1682978167
Хочу сделать приложение, которое будет пользоваться интернетом. Что можно прочитать, про устройство интернета, и собственно про средства, которыми должна пользоваться такая программажелательно с примерами реализации простой программы?
Аноним 10/05/20 Вск 13:39:22 1683064168
>>1680235
>>1680249
ИМХО, это не тру вей. Загугли ключ, который манглинг отключает
Аноним 10/05/20 Вск 13:47:42 1683075169
>>1681810
Почитай Страструпа. У него есть калькулятор в книге - прочитай, разберись и адаптируй для своей задачи.
Аноним 10/05/20 Вск 14:05:20 1683095170
>>1683064
и как ты без манглинга делать перегруженные функции?
Аноним 10/05/20 Вск 14:26:56 1683124171
>>1681810
Если нужна не рекурсия то формула перегоняется в какую-то из польских нотаций (например в обратную польскую с помощью алгоритма сортировочной станции). Ну а в польской нотации выражение элементарно вычисляется на простом стеке.
Аноним 10/05/20 Вск 14:51:10 1683165172
челики, скомпилировал свой драйвер kernel sys и вопрос как теперь его установить ??
Аноним 10/05/20 Вск 14:55:20 1683172173
>>1683165
на .inf файл правой кнопкой мыши, и там будет "установить"
Аноним 10/05/20 Вск 14:58:13 1683176174
>>1682841
Ты долбоёб? Я не хочу портянки этой хуиты писать которые ещё и будут работать только в блоке if
Аноним 10/05/20 Вск 14:59:01 1683179175
изображение.png 107Кб, 1920x1080
1920x1080
Аноним 10/05/20 Вск 14:59:37 1683181176
Аноним 10/05/20 Вск 15:06:48 1683189177
Аноним 10/05/20 Вск 15:20:12 1683213178
>>1683176
Оберни в IIFE. Вообще, как ты себе видишь нормальное решение своей задачи? Генерировать 2^64 версий std::get? Или может создавать для каждого tuple список из лямбд и обходить его с целью поиска лямбды, которая вызовет нужный get?
И вообще, ты должен знать, какой конкретно индекс у тебя будет в конкретном месте ещё на этапе написания кода. Если ты не знаешь, то пиздуй использовать std::map
Аноним 10/05/20 Вск 16:31:15 1683262179
>>1682978
Чтобы фундаментально разобраться, читай про сокеты и протоколы - TCP, UDP, HTTP, TLS, и т.д. Всё остальное работает поверх этого.
Потом либо ебош на сокетах по хардкору, либо бери готовые библиотеки и фреймворки. В одной только винде куча всяких апи под разные задачи
https://docs.microsoft.com/en-us/windows/win32/networking
Аноним 10/05/20 Вск 17:15:21 1683302180
>>1683262
Спасибо за наводку. И ещё тогда вопрос, какими фреймворками и библиотеками обычно пользуются в реальности?
Аноним 10/05/20 Вск 17:38:50 1683318181
изображение.png 65Кб, 1461x585
1461x585
Сап, как в конец переменной buf внести название найденного файла (GuitarPro7.exe), чтоб потом через CreateProcess запустить его?
Аноним 10/05/20 Вск 17:42:58 1683320182
Аноним 10/05/20 Вск 17:43:21 1683322183
Аноним 10/05/20 Вск 17:48:30 1683326184
изображение.png 76Кб, 1347x790
1347x790
Аноним 10/05/20 Вск 17:50:38 1683329185
>>1683326
_stprintf или swprintf
попробуй
Аноним 10/05/20 Вск 17:51:50 1683333186
>>1683326
Хотя ты вообще какую-то хуйню пишешь
У тебя что вся программа это запуск гитарпро? Напиши скрипт на повершеле лучше
Аноним 10/05/20 Вск 17:51:53 1683335187
>>1683326
Ещё один ебануктий, который не слышал про wchar_t, TCHAR и всю эту хуйню
Аноним 10/05/20 Вск 17:53:08 1683338188
>>1683318
Как же уебищно выглядит винапи
Аноним 10/05/20 Вск 17:55:07 1683340189
изображение.png 30Кб, 658x567
658x567
>>1683329
>_stprintf
Теперь он ругается на "%s".
Аноним 10/05/20 Вск 17:56:04 1683341190
>>1683335
>>1683338
Я учусь на первом курсе, эти типы данных сунули нам в лабу без каких-либо пояснений, вот пытаюсь в них вникнуть.
Аноним 10/05/20 Вск 17:57:49 1683344191
>>1683340
Блять, ну так и подставь tchar как ты делал выше с buf
Неужели такого подобия нельзя заметить при написании?
Аноним 10/05/20 Вск 17:57:52 1683345192
Аноним 10/05/20 Вск 17:59:44 1683347193
>>1683341
Повезло вам, нас ебучий говнинус заставляли учить вместо системы для людей.
Аноним 10/05/20 Вск 18:00:31 1683350194
>>1683347
А вот и быдло вылезло
Аноним 10/05/20 Вск 18:01:43 1683352195
>>1683347
Потом мне нужно будет делать процессы на линуксе без каких либо метод, а лекций сейчас нет.
Аноним 10/05/20 Вск 18:02:38 1683353196
>>1683344
>Неужели такого подобия нельзя заметить при написании?
Та я тупой и не понимаю.
Аноним 10/05/20 Вск 18:02:57 1683354197
Аноним 10/05/20 Вск 18:09:08 1683363198
>>1683333
Ну вот такое у меня задание, нельзя другим способом блять.
Аноним 10/05/20 Вск 18:19:27 1683380199
Плюсовики, а что у вас делается для облегчения изучения языка? Не боитесь ли через несколько лет повторения ситуации как с перлом и коболом, когда специалистов тупо не найти даже за нормальные деньги? Сейчас я смотрю, куча народу с С/С++ перепрыгнула в Go, и новые проекты уже только на нём начинает. Опасная ситуация, вам не кажется?
Аноним 10/05/20 Вск 18:32:29 1683395200
Хай гайзы.
Почему дауны из комитета до сих пор не введут стандартизированный ABI, чтобы не ебаться со всеми этими совместимостями между компилерами, линкерами и их версиями.
Есть ситуации, например пукалки с 1КБ памяти, для которых билдить желательно по-другому - ну и пусть делают себе какой-то кастомный тулсет, хуярящий фасткол во все дыры. Но в подавляющем большитнстве ситуаций наверняка возможен единый бинарный интерфейс, который позволит нормально сосуществовать всему зоопарку билд-инструментов
Ваши мысли по этому поводу, коллеги
Аноним 10/05/20 Вск 18:55:02 1683417201
>>1682832
Бамп.
>>1682952
В смысле сначала должен выполнится цикл в первой функции, и только потом во второй
Аноним 10/05/20 Вск 19:01:16 1683423202
>>1683417
Ну и нахуя ты создаешь залоченный мьютекс и сразу же ждешь его в своем цикле? Убери из цикла WaitForSingleObject и должно заработать.
Аноним 10/05/20 Вск 19:08:18 1683429203
>>1683395
> до сих пор не введут стандартизированный ABI
Всё сломается нахер за последние 20 лет написанного.
Аноним 10/05/20 Вск 19:10:42 1683432204
Что почитать, чтобы понять что вообще такое abi?
Аноним 10/05/20 Вск 19:14:54 1683439205
>>1683423
Все равно не то. Оба процесса исполняются одновременно. А суть задания в том, чтобы сравнить вывод без мьютексов и с ними.
Аноним 10/05/20 Вск 19:27:51 1683451206
image.png 13Кб, 709x152
709x152
Аноним 10/05/20 Вск 19:53:04 1683481207
Давно не программировал на C++
Как мне вот это std::array<std::pair<uint8_t, intptr_t>, 6> a; перевести на вектор?
Аноним 10/05/20 Вск 19:55:03 1683484208
>>1683395
Titus Winters и пытается как-то>>1683417
>В смысле сначала должен выполнится цикл в первой функции, и только потом во второй
Всё равно не понял. А что происходит, если не это? В любом случае почитай, как использовать мьютексы, потому что:
1) создаёшь уже залоченный мьютекс и пытаешься его потом захватить
2) захватываешь один и тот же мьютекс кучу раз в одном треде без соответствующего разлочивания
3) OpenMutexA емнип возвращает ошибку, если мьютекса не существует - проверяй коды ошибок функций

В любом случае возьми и сам пройдись дебаггером.
Аноним 10/05/20 Вск 19:57:01 1683486209
Безымянный10.png 2Кб, 460x61
460x61
Не бейте, а скажите, как инициализировать.
Аноним 10/05/20 Вск 19:57:11 1683487210
>>1683484
> А что происходит, если не это?
Циклы выполняются одновременно, в итоге выводятся числа от 0 до 20, вместо 10
Аноним 10/05/20 Вск 20:12:43 1683504211
>>1683481
Такой сложный вопрос я задал что-ли? Подскажите.
Почему вот так не работает std::vector<std::pair<uint8_t, intptr_t>> a(5, std::make_pair(0, 0));
Аноним 10/05/20 Вск 20:57:09 1683540212
>>1683504
pair не тот. make_pair возвращает pair<int, int>
Аноним 10/05/20 Вск 21:34:54 1683569213
>>1683095
Базара нуль, извини
Аноним 10/05/20 Вск 21:45:13 1683578214
>>1683432
При компиляции - каждый .cpp файл превращается в .o\.obj, и потом вся эта параша линкуется линкером в один .ехе файл, и линкер разрешает всякие внешние функции.

Так вот - это всё ебаная бинарная масса, которая работает четко благодаря неким соглашениям.

Например, как и кто чистит за собой стэк (либо сама вызываемая функция, либо тот, кто ее вызывает).
Как вообще аргументы в функцию передаются (те самые calling conventions)
Как кидаются и ловятся эксепшены.
Из более забавных вещей: какой layout у каждого класса и так далее.

Здесь всё - четко на доверии. Если ты, допустим, эстет, и руками сделал бинарники разными компиляторами\версиями компиляторов - у них внезапно один и тот же std::string может быть реализован по разному (например где-то есть SSO, а где-то нет).

И когда ты этот std::string будешь передавать между разными модулями, скомпилированными разными компиляторами - другая имплементация будет видеть полную бинарную хуйню, вместо строки.

Собстно, вот это "доверие" и некий "договор", как все должно выглядеть - и есть ABI.

>>1683481
std::vector v(a.begin(), a.end()); Спасибо С++17
Аноним 11/05/20 Пнд 03:34:49 1683694215
>>1683380
>а что у вас делается для облегчения изучения языка?
Не считая того, что весь интернет забит документацией, блогами, статьями, и выступлениями, а на стековерфлоу есть ответ на любой вопрос "как сделать х в с++"? Ну даже не знаю.
Аноним 11/05/20 Пнд 03:55:22 1683695216
>>1683380
Мы дает от 300к на руки + бонусы, и то ищем специалистов по году. Уже этот пиздец настал.
Аноним 11/05/20 Пнд 04:03:01 1683696217
Annotation 2020[...].png 6Кб, 370x274
370x274
>>1683486
"Сырые" массивы можно создавать только с дефолтным конструктором без параметров. Вектор в этом плане удобнее, он может делать копии.

Ну или можно перечислить все объекты, но это только если их количество динамически не меняется.
Аноним 11/05/20 Пнд 04:12:51 1683697218
Крестаны, в 2к20 юзать синглтон - зашквар или не? Если да, то что сейчас модно юзать вместо него?
Аноним 11/05/20 Пнд 09:22:54 1683747219
>>1683697
Юзай не то, что модно, а то, что удобно. А если о моде, то модно нынче в очко долбиться. Можешь попробовать.
Аноним 11/05/20 Пнд 09:31:02 1683749220
>>1683697
Зашквар это делать несколько одинаковых методов/классов, которые отличаются только типом данных, вместо использования обобщений. А синглтон это оюычный паттерн, цель которого экономия ресурсов системы.
Аноним 11/05/20 Пнд 10:55:26 1683795221
>>1683697
Зависит от ситуации. Главное чтобы у тебя в этом синглтоне не было мутабельного стейта, иначе ты ахуеешь ходить по всем возможным граблям.
Аноним 11/05/20 Пнд 10:59:13 1683798222
>>1682832
Короче при вызове функции Openmutex оказывается нужно было первым аргументом указать SYNCHRONISE, правда не понятно, в чем смысл не делать его по умолчанию
Аноним 11/05/20 Пнд 12:51:26 1683852223
image.png 87Кб, 1366x768
1366x768
Аноним 11/05/20 Пнд 13:32:44 1683876224
>>1682693
Потому что именно этот код и не компилится. Ты же его не вызываешь.
Аноним 11/05/20 Пнд 14:35:14 1683978225
>>1683852
>#include <GL/glew.h>; // Подключаем glew для того, ...
Точку с запятой убери.
Аноним 11/05/20 Пнд 15:02:37 1684005226
image.png 87Кб, 1366x768
1366x768
>>1683978
не помогло. Странно, что если начать вводить GLchar, то он подсказывает и подсвечивает, о пототм все также.
Аноним 11/05/20 Пнд 15:05:40 1684006227
>>1684005
Буду все комментировать и потихоньку добавлять, смотреть оде ошибка.
Аноним 11/05/20 Пнд 15:47:10 1684028228
>>1684006
Мразотная vs. Ничего не менял. Все работает
Аноним 11/05/20 Пнд 15:48:23 1684030229
>>1684028
VS не причем, криворученька.
Аноним 11/05/20 Пнд 16:24:00 1684057230
>>1679966 (OP)
Котаны, посоветуйте учебник по C/C++, где объясняется как устроена память, вызовы и так далее по списку. Внутреннее устройство таких простых вещей как определение переменной, функции, вызов функции и др. Заранее благодарю.
Аноним 11/05/20 Пнд 16:44:06 1684081231
>>1684057
Тебе не учебник по си нужен. Почитай например Архитектуру компьютера.
Аноним 11/05/20 Пнд 18:29:19 1684249232
>>1684057
Начни с транзисторов, вентилей. В конце до сишки дойдешь. Гугли "харрис цифровая схемотехника и архитектура компьютера"
Аноним 11/05/20 Пнд 19:17:40 1684278233
>>1684249
Начни с квантмеха, полупроводниковых материалов. В конце до транзисторов дойдешь. Гугли Нейман И. "Математические основы квантовой механики".
Аноним 11/05/20 Пнд 20:31:19 1684344234
>>1684278
Начни с эпистемологии и философии науки. Иначе как ты сможешь понять, что значит "знать"? Гугли Chalmers A. "What Is This Thing Called Science?".
Аноним 11/05/20 Пнд 20:34:34 1684345235
20f9c410fbf43d2[...].jpg 30Кб, 500x337
500x337
>>1681937
>idiv %n1, 0x0A, %n1
>cmj %n1, 0x00, .L01
> %,%, ,,&&&%..,. ,
> %,%, ,%,% %%.,.

Аноним 11/05/20 Пнд 20:43:04 1684349236
Аноним 11/05/20 Пнд 20:45:25 1684350237
Больше года не заходил сюда, а тут шапку поменяли:
> Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.

Наконец-то вменяемость победила!
Аноним 11/05/20 Пнд 20:46:27 1684351238
Аноны, извините, продублирую пост из С треда:

В самых ранних тредах, то-ли здесь, то-ли в крестотреде, анон рекомендовал как годно после С вкатиться в кресты.
Если ты еще здесь, напиши еще раз пожалуйста.
Спасибо.
Аноним 11/05/20 Пнд 20:53:34 1684357239
>Uncle Bob
Сука, как же он меня выбешивает. Никогда не встречал настолько долбоебов К.О., которые вещают банальщину как откровение свыше.
90% того что он напиздел, уже неактуально.
Аноним 11/05/20 Пнд 21:45:27 1684387240
кто использует c++ когда есть го и раст..
Аноним 11/05/20 Пнд 21:46:46 1684389241
>>1684344
Оч годно, видел кучу дебилов которые серьезно так считают
Аноним 11/05/20 Пнд 22:02:24 1684400242
>>1684057
"Deep C" презентация есть где-то в интернетах на slideshare.net. Там именно то всё.
Аноним 11/05/20 Пнд 22:03:24 1684403243
>>1684387
напиши мне драйвер на го или расте.

И потом попробуй поискать разрабов-растовиков, которые это поддерживать все будут на рынке труда. Они все будут либо додики, либо борщехлебы.
Аноним 12/05/20 Втр 00:16:41 1684519244
Аноним 12/05/20 Втр 01:51:39 1684570245
>>1684519
>И потом попробуй поискать разрабов-растовиков, которые это поддерживать все будут на рынке труда
Аноним 12/05/20 Втр 01:53:28 1684571246
>>1684387
> кто использует с++ когда есть кастрированные версии с++..
Аноним 12/05/20 Втр 02:21:23 1684578247
>>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
Написал еллоуворлд - теперь ты программист, ведь программа написана, а остальные программы просто как много хеллоуворлдов, тривиально, можно даже время не тратить на банальщину.
Аноним 12/05/20 Втр 03:26:55 1684594248
>>1684387
Го не системный язык, пчел. Язык со сборщиком мусора априори не может быть системным. А раст - мертворожденная хуйня для хипстеров. Даже Мозилла обосрались с растом и до последнего не хотят этого признавать.
Аноним 12/05/20 Втр 06:46:26 1684669249
15885901959881.png 37Кб, 378x288
378x288
Мне не нравятся касты в крестах, я нормален? Всё время пишу обычные скобками. Даже когда чужой код себе пизжу, заменяю в нем static_cast на Си-каст (вот такой я злодей).
Аноним 12/05/20 Втр 11:02:21 1684799250
>>1684669
Они никак не чекают типы, и когда ты себе прострелишь ногу — не увидишь даже ворнинга (в типизированном коде, кекус).
Аноним 12/05/20 Втр 12:18:53 1684862251
>>1684799
Проблема в том, что каст порой нужен только чтобы заткнуть варнинг. Тип в скобочках мне ещё не влом прописать, но уродовать выражение ебаниной static_cast<>-а только чтобы не было варнинга -- уже как-то возмущает.
Аноним 12/05/20 Втр 12:22:23 1684867252
Аноним 12/05/20 Втр 12:40:00 1684888253
Плюсач, выручач.
Я постоянно испытываю дикую попаболь при сборке библиотек/бинариесов из исходников.
Постоянные ошибки, постоянные гуглёжки, как меня уже это достало.
Подскажите куда копать что бы овладеть мастерством компилирования исходников? Желательно бы ещё статейки накидать.

Заранее целую.
Аноним 12/05/20 Втр 13:59:44 1684968254
Играюсь с векторами, наткнулся на, казалось бы, нелогичную хуйню. Возврат ссылки на вектор из метода не работает как ожидалось, код тут -> https://pastebin.com/frmYKgFp

Укажите на ошибку плез (код компилится, остальное написал в комментах). Почему я не могу править внутриклассовый вектор таким макаром? Это же, блять, ссылка на него.
Аноним 12/05/20 Втр 14:10:14 1684977255
1498349065536.jpg 25Кб, 221x111
221x111
1546687121254.jpg 18Кб, 220x111
220x111
1434844227913.jpg 10Кб, 220x111
220x111
1441692794091.jpg 6Кб, 217x111
217x111
Аноним 12/05/20 Втр 14:11:50 1684982256
>>1684977
Все так. В будущем останется только один язык - Раст.
Аноним 12/05/20 Втр 14:14:04 1684986257
>>1684968
upd:
бля, вот я обосрался.
Я почему-то думал, что auto неявно должен забирать в тип ссылку (ибо я возвращаю ссылку на вектор из метода). Но нет, надо написать auto&, чтобы это заработало как надо.

А вообще, такая тема норм? То бишь, это не говнокод возвращаеть ссылку на вектор туда, где я хочу им МАНЯпулировать? Проблем вроде как быть не должно, ибо вектор неявным образом аллоцируется в куче, а не в стэке (ибо это динамический буфер). Но прикол в том, что с обычными функциями, не методами (метод - функция внутри класса) этот финт не работает, есть предупреждение возврата ссылки на оюъект на стэке (щито? Вектор разве не на куче аллоцируется?? На стэке сохраняется адрес вектора, который в куче, какая тогда проблема?). Почему это работает с методами, но не работает с обычными функциями?
Аноним 12/05/20 Втр 14:15:27 1684988258
>>1684982
>Раст
Мертворожденный высер для мамкиных нитакихкакфсе. Его будущее - теперешнее положение D, не более. Максимум, если повезет, займет какую-то мегаузкую нишу в прикладухе, в системщине у него ноль шансов.
Аноним 12/05/20 Втр 14:24:42 1685000259
>>1684988
Как же ты ошибаешься. Раст уже выбирают многие крупные корпорации. И это правильно, он действительно во всем лучше крестов, тут ничего не попишешь. А ди был обречен с самого начала, не было поддержки, был gc.
Аноним 12/05/20 Втр 14:26:56 1685006260
>>1684986
Это говнокод. Либо ты работаешь с классом, либо с вектором и класс тебе не нужен.
Аноним 12/05/20 Втр 14:32:06 1685017261
>>1684986
> вектор неявным образом аллоцируется в куче, а не в стэке
Нет. Он аллоцируется там где ты его аллоцировал. В твоем случае это автоматическая переменная, тоесть на стеке. Вектор может дополнительно аллоцировать необходимую память в куче - но она очистится при автоматическом удалении вектора. В твоем случае все ок, из-за того что ссылка и вектор находятся в одном скоупе, но если ты передашь ссылку за скоуп в котором создан вектор то ничего хорошего не будет.
Аноним 12/05/20 Втр 14:38:09 1685032262
>>1685006
а если мне по каким-либо обстоятельствам нужен доступ к переменной/структуре данных класса извне? Или в рамках ооп это недопустимо, так как ломает принцип инкапсуляции?
Аноним 12/05/20 Втр 14:40:15 1685036263
>>1685032
Значит твой дизайн полное дерьмо?
Аноним 12/05/20 Втр 14:46:22 1685049264
>>1685017
вывод: вектор при любых обстоятельствах следует передавать по значению из функции? Ну, или же изначально аллоцировать его на куче и вернуть указатель из функции?
Аноним 12/05/20 Втр 14:52:06 1685061265
>>1685049
>= C++17 - да всегда.
< C++17 - гугли NRVO
Аноним 12/05/20 Втр 14:54:42 1685066266
>>1685000
>он действительно во всем лучше крестов
Наследование уже завезли?
Аноним 12/05/20 Втр 15:01:31 1685076267
>>1685000
Сама Мозилла, родитель этого говна, начинает потихоньку отказываться от раста, потому что они осознали его полный обосралити. Раст - никому ненужная хуйня. Мертворожденная. Кресты мощнее раста раз в 50. Полная гибкость и всемогущество крестов против ебанутого компиля раста, в котором нет кучи фич, которые есть в крестах, нахуй то говно нужно вообще?
Аноним 12/05/20 Втр 15:02:11 1685077268
Аноним 12/05/20 Втр 15:07:22 1685080269
>>1685076
>начинает потихоньку отказываться
В чём это выражается?
Аноним 12/05/20 Втр 15:07:30 1685081270
>>1685032
Можешь возвращать по ссылке из метода класса, но тогда нужно следить чтобы класс жил все время пока ты юзаешь эту ссылку.
Аноним 12/05/20 Втр 15:12:50 1685086271
>>1685080
в том, что дохуя начинают на кресты переписывать
Аноним 12/05/20 Втр 15:16:09 1685091272
Аноним 12/05/20 Втр 15:17:37 1685095273
>>1684888
Пока сам в скрипты сборки не залезешь не разберёшься. До сих пор шоке от некоторых дизайнерских решений от разработчиков Qt.
Аноним 12/05/20 Втр 15:20:05 1685100274
>>1684888
vcpkg install library_name если лень пердолиться.

А вообще - то, что ты говоришь это странно. Во всех +- современных библиотеках есть cmake (ну окей, кроме буста), и там все собирается с полпинка одной командой.
Аноним 12/05/20 Втр 15:33:37 1685117275
> Кресты мощнее раста раз в 50
В чем мощнее?
Аноним 12/05/20 Втр 15:56:12 1685177276
>>1684351
Я не он, но начинаешь в любом случае почти с С, ведь С++ с ним совместим и в нём многое используется тоже, что и в С.
Аноним 12/05/20 Втр 16:14:10 1685213277
>>1685049
> вывод: вектор при любых обстоятельствах следует передавать по значению из функции
У тебя при этом будет создана его копия - а это не всегда то что нужно. В большинстве случаев ты можешь использовать ссылку при условии что она не будет покидать скоуп в котором получено. Возращения указателя неплохая идея, если ты подразумеваешь какой-то из умных указателей.
Аноним 12/05/20 Втр 16:20:17 1685221278
>>1685095
Есть один немаленький проектик, где сборка на js. Вот тут я вообще охуел.
Аноним 12/05/20 Втр 16:24:46 1685226279
>>1685117
Наследование, метапрограммирование (с фичей variadic templates к тому же), гибкость в выборе полиморфизма (статический vs динамический, а в расте вообще ООП как такового нет, его можно только убого костылировать через типажи), также в расте отсутствует нечто похожее на constexpr, нет кастомных аллокаторов и т.п. Продолжать? К тому же, в крестах есть бесчисленное количество библиотек для самых разных целей, когда раст юзает и будет юзать кучу биндингов из С и никогда не будет иметь стольких фич, сколько есть у крестов, потому что всем похуй на ржавый высер. Дебичи в очередной раз пытаются высрать некоего революционера, не понимая, что чтобы свергнуть С и С++ с трона системщины, нужно либо скинуть астероид на Землю, либо произвести технологическую революцию в мире железа, которая поменяла бы в корне современную архитектуру компьютеров. И первое, и второе произойдет с вероятностью ноль целых хуй десятых.
Аноним 12/05/20 Втр 16:27:20 1685232280
>>1685095
Не всё так просто. Некоторые решения выстраданы.
Аноним 12/05/20 Втр 16:29:44 1685241281
>>1685226
Зачем его вообще пытаются родить? Что не так с С++, что нужно что-то рожать нового?
Аноним 12/05/20 Втр 16:33:02 1685249282
>>1685241
Зумеры не осиливают.
Аноним 12/05/20 Втр 16:33:09 1685250283
>>1685232
Конкретно в Qt по умолчанию всё включено, нужно самому искать, какие модули не используются и отключать их. А их состав может от версии к версии изменяться. Не могу даже представить, зачем такое понадобилось.
Аноним 12/05/20 Втр 16:34:31 1685253284
Аноним 12/05/20 Втр 16:34:46 1685255285
>>1685250
Универсальность же.
Аноним 12/05/20 Втр 16:35:33 1685257286
>>1685255
В смысле? Где тут универсальность?
Аноним 12/05/20 Втр 16:37:44 1685261287
>>1685257
Есть широкий спектр его применения, вот и охватывают все их сразу.
Аноним 12/05/20 Втр 16:38:31 1685262288
>>1685249
По мне так часто не хватает объяснения в духе - зачем оно вообще нужно, а так же опыта написания программ, не сильно даже больших.
Аноним 12/05/20 Втр 16:40:18 1685265289
>>1685241
Хуй знает, лично я пока отметил только одно приемущество раста перед плюсами - это возможно как C# около члена класса задать кастомные атрибуты типо #[zalupa_1] и потом можно пройтись по всем членам класса и отфильтровать по атрибутам. Статический метаданные одним словом. В плюсах единственный вариант такого это извращения с макросами.
Аноним 12/05/20 Втр 16:41:26 1685268290
>>1685265
Зачем так делать вообще? Что это даёт?
Аноним 12/05/20 Втр 16:44:28 1685274291
>>1685261
> Есть широкий спектр его применения, вот и охватывают все их сразу.
Анончик я тебя всё равно не понял.
На разных платформах по умолчанию соберутся разные пакеты. Не понимаю, почему нельзя было добавить флаг --all для "охватывания всех сразу"?
словами не передать, какая жопаболь, когда какой-то модуль не выбран для сборки, если не выбрана какая-то его зависимость. уведомлений при этом тоже никаких нет
Аноним 12/05/20 Втр 16:48:04 1685276292
>>1685268
Допустим надо сериализовать некую структуру в json формат. Чтобы это сделать нужно для каждого поля вручную писать код сериализации т.к. ты не можешь пройтись по полям структуры динамически. Потом вдруг понадобится добавить еще одно поле в эту структуру и придется править код в разных места.
Вот пример https://ideone.com/4XOpFu
Аноним 12/05/20 Втр 16:57:50 1685292293
>>1685226
Фанатик крестов со своим уёбищным ооп ничем не лучше фанатиков очередной хайпопараши.
>>1685265
>#[zalupa_1]
Внезапно, это макрос.
Аноним 12/05/20 Втр 17:00:16 1685296294
>>1685292
>Внезапно, это макрос.
Ну я там понял там адекватные макросы которые можно программировать как обычный код? Без черной магии как в плюсах с абузом скобок и склеиванием теста.
Аноним 12/05/20 Втр 17:06:22 1685305295
>>1685276
А почему макроссы это именно извращение? И разве нет решений на С++?
Аноним 12/05/20 Втр 17:06:53 1685307296
>>1685274
А если там куча перекрёстных зависимостей?
Аноним 12/05/20 Втр 17:11:18 1685311297
>>1685305
>почему макроссы это именно извращение
Попробуй понять как это работает без пояснений https://gist.github.com/patrickBerry/8cf7799066aaf01d1b8fdab1622c1186
>И разве нет решений на С++
Получить имя поля строкой средствами плюсов без макросов невозможно
Аноним 12/05/20 Втр 17:22:29 1685325298
Аноним 12/05/20 Втр 17:24:14 1685328299
>>1685325
struct s
{
int zalupa; <- вот это
}
Как получить строку "zalupa" без макросов?
Аноним 12/05/20 Втр 17:25:47 1685329300
>>1685311
Вопросов не больше не имею.
Аноним 12/05/20 Втр 17:26:29 1685331301
>>1685328
Зачем тебе ее получать? И как получить с макросом?
Аноним 12/05/20 Втр 17:29:34 1685336302
>>1685331
>Зачем тебе ее получать
Я же кидал уже реальный пример с сериализацией где это необходимо >>1685276
>И как получить с макросом
#define STR(x) #x
в коде потом STR(zalupa) превратится в "zalupa"
Аноним 12/05/20 Втр 18:23:42 1685458303
>>1685274
Как человек, который натрахался со сборкой этой сучары целый день, хочу сказать - не пиздите, там тебе для этого целый тул есть в виде бинарника, который, вроде, configure зовётся. Он расписывает от а до я, что нашёл на машине перед сборкой.
Аноним 12/05/20 Втр 18:26:46 1685465304
>>1685296
>можно программировать как обычный код
Да, именно так.
Аноним 12/05/20 Втр 18:27:02 1685466305
423BB73.jpg 68Кб, 640x430
640x430
Подскажите хорошую иде для плюсов, чтобы все работало из коробки. Скачал затмение (каюсь), создал там хело ворлд, но сбилдить не могу, пишет что в пасе не найден какой-то мейк.
Аноним 12/05/20 Втр 18:29:36 1685471306
>>1685328
Когда завезут рефлексию
Аноним 12/05/20 Втр 18:30:59 1685475307
>>1685471
А это есть в планах хотя бы на c++30?
Аноним 12/05/20 Втр 18:37:05 1685485308
>>1685466
Ставь visual studio. В будущем изучай, как происходит сборка и можешь vs code попробовать с cmake
Аноним 12/05/20 Втр 18:42:41 1685494309
>1685475307
в C++26 по плану. Очень оптимистично - МОЖЕТ БЫТЬ ++23
Аноним 12/05/20 Втр 18:43:22 1685496310
>>1685466
Очевидная вижуал студия как вершина IDEстроения. Сверху еще решарпер++ накати и наслаждайся
Аноним 12/05/20 Втр 18:47:36 1685502311
Как настроить cmake в qt?
Аноним 12/05/20 Втр 20:29:50 1685735312
Аноним 12/05/20 Втр 20:38:17 1685747313
>>1685735
Хочу научиться настраивать cmake, да и кьюти вроде собирались отходить от qmake
Аноним 12/05/20 Втр 20:43:31 1685751314
Двач, как узнать какая строка в моём коде вызывает Segmentation Fault?
Дебагер в Qt Creator открывает мне qstring.cpp
Аноним 12/05/20 Втр 21:11:15 1685791315
>>1685751
В кор дамп загляни, если ты на Линуксе. А если на мастдае, то хз, говном не пользуюсь :(
Аноним 12/05/20 Втр 21:18:33 1685799316
>>1685458
> там тебе для этого целый тул есть в виде бинарника, который, вроде, configure зовётся. Он расписывает от а до я, что нашёл на машине перед сборкой.
Это безусловно круто, но он не пишет того, чего не нашёл. То есть я написал, что не хочу qtdeclarative, значит отвалится ещё и qtwebengine и этот configure ни слова об этом не скажет. Вот и сиди думай, какие библиотеки нужны для каких библиотек, а главное зачем.
Аноним 12/05/20 Втр 21:19:56 1685800317
>>1685496
> Очевидная вижуал студия как вершина IDEстроения.
devenv.exe x86
> вершина IDEстроения
Аноним 12/05/20 Втр 21:21:05 1685804318
>>1685751
Запусти с дебаггером, дождись вылета, посмотри на call stack
Аноним 12/05/20 Втр 21:35:58 1685823319
>>1685800
и? Главное как она охуенно работает, а не то, что ты тут пытаешься совсем уже обскурное найти.
Аноним 12/05/20 Втр 22:07:50 1685870320
Двач, что будет если я в функции буду выбрасывать исключение? Программа продолжит своё выполнение?
Аноним 12/05/20 Втр 22:26:41 1685887321
че за тулчейны и какой выбрать, к clion
Аноним 12/05/20 Втр 23:03:34 1685921322
>>1685870
если оно нигде не поймается то будет std::abort() -> std::terminate()

>>1685887
gcc в случае линукса, mingw в случае шинды (но нахуя тогда шлион).
Аноним 12/05/20 Втр 23:07:34 1685924323
>>1685485
>Ставь visual studio
>можешь vs code попробовать с cmake
>>1685496
>вижуал студия как вершина IDEстроения
Толсто.
Пока отобрал следующих кандидатов (на винду): кдевелоп, кодеблок, коделайт. Если кто-то пользовался этим, просьба поделится впечатлениями, особенно как у них там с тестами дела, на вики пишут что у коделайте нет ковереджа под винду.
Аноним 12/05/20 Втр 23:08:43 1685926324
>>1685823
>она охуенно работает
Сурсы хромиума уже может открывать не падая?
Аноним 12/05/20 Втр 23:14:48 1685931325
>>1685926
Может.

>>1685924
>Пока отобрал следующих кандидатов (на винду): кдевелоп, кодеблок, коделайт
Вот это правда охуеть как толсто. Какие-то говноподелия. Если ты идейный хейтер (что уже само по себе смешно) - то в чем проблема взять тот-же qtcreator?
Аноним 12/05/20 Втр 23:23:03 1685936326
image.png 46Кб, 664x717
664x717
>>1685931
Брал кткреатор, создал там хелло ворлд, запустил, и не вижу куда делася сам цпп файл и почему у меня только тхт. Пока экспириенсом не доволен.
Аноним 12/05/20 Втр 23:25:13 1685939327
Двач, есть вектор в векторе, как правильно удалить внешний вектор если какой-либо элемент внутреннего вектора не подпадают под условие?
Что-то я запутался в циклах, да и гавнокод делать не хочу. Подскажите.
Аноним 12/05/20 Втр 23:33:30 1685944328
>>1685936
а, то есть ты нулевый вкатывальщик. Ну, страдай.
Аноним 13/05/20 Срд 00:42:18 1685966329
>>1685944
Кдевелоп тоже не прошел отбор на хелло ворлд. Итого пока смогли в простое консольное приложение только кодеблокс и коделайт, рекомендую.
Аноним 13/05/20 Срд 01:01:09 1685969330
>>1685966
А в чем проблема KDevelop?
Аноним 13/05/20 Срд 01:07:20 1685970331
>>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
}
}
}

На псевдокодвчах, дальше сам додумаешь.
Аноним 13/05/20 Срд 01:08:15 1685971332
>>1685970
блять, пробелы не схороняются, земля мне жопаскриптом, прости, анон. Разбирайся теперь в этом говне, надеюсь, что хоть чем-то да помог.
Аноним 13/05/20 Срд 01:13:44 1685973333
image.png 28Кб, 746x344
746x344
image.png 36Кб, 612x517
612x517
>>1685969
Например, не могу открыть проект в окне слева и вообще пишет что запустить мейн.цпп не удалось. Смейк ему поставил, но не видит.
Аноним 13/05/20 Срд 01:18:21 1685974334
image.png 22Кб, 610x254
610x254
image.png 35Кб, 636x318
636x318
>>1685969
Сравни например с коделайтом (к нему у меня еще есть вопросы по поводу синтаксиса проги) и кодеблоксом.
Аноним 13/05/20 Срд 01:22:07 1685977335
>>1685973
Хз, походу KDevelop криво портировали на винду. Я на Линуксе (по стечению обстоятельств, юзаю KDE в кач-ве окружения, лол) и у меня зоибис работает.
Аноним 13/05/20 Срд 01:49:33 1685986336
Господа, хочу нырнуть в метапрограммирование, что посоветуете почитать? Желательно на английском, конечно же.
Аноним 13/05/20 Срд 01:52:07 1685987337
>>1685986
Александреску же. Если вынырнешь - то наворачивай доклады Луи Дионне.
Аноним 13/05/20 Срд 02:02:54 1685988338
>>1685977
Нет, добавил в системны патх смейк и прописал ему -г мингв бла-бла, кдевелоп все запустил.
Аноним 13/05/20 Срд 02:05:02 1685990339
image.png 7Кб, 378x140
378x140
>>1685977
Что открывается если нажать на руководство?, на винде просится в микрософт сторе.
Аноним 13/05/20 Срд 02:05:45 1685991340
>>1685986
Определись сначала со стандартом, потому как в c++17 всё метапрограммирование сводится к variadic template, constexpr if и чуть реже std::enable_if. Если типами хочешь жонглировать, то посмотри, как разные методы и типы реализованы в Boost::mp11.
Александреску читай только после всего, что я написал выше. Иначе могут произойти необратимые изменения в мозге.
Аноним 13/05/20 Срд 02:07:20 1685992341
>>1685991
Эти необратимые изменения в мозге очень полезны, имхо. Я Александреску недоосилил в свое время, но многим пользуюсь до сих пор.

Помню, как коллега подошел попросил написать какую-то шаблонную хуету, и я там офигенно наперегружал всяких шаблонов структур (С++14 у них было).
Аноним 13/05/20 Срд 02:13:59 1685993342
>>1685992
А какое есть реальное применение у метапрограммирования, кроме компайл-тайм вычислений и статического полиморфизма (ОЧЕНЬ годная штука, чисто бесплатный по рантайму полиморфизм)?
Аноним 13/05/20 Срд 02:17:42 1685995343
>>1685993
А чем то, что ты перечислил, не реальное применение?
Аноним 13/05/20 Срд 02:24:41 1685997344
krestiki.png 67Кб, 1024x1085
1024x1085
>>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, а мне было лень делать специализации структур.
Аноним 13/05/20 Срд 03:08:12 1686003345
почему Qt 5.12.8 весит 3.7ГБ, а 5.14 2.3ГБ, где подвох, они там какие-то библиотеки убрали?
Аноним 13/05/20 Срд 03:21:20 1686005346
>>1679980
Пропустил, сорри. Ты не поверишь - я самоучка с купленным дипломом на дистанционном обучении. Я сидел и каждый вечер задрачивал С++ в течении года до первой работы крестовиком.
Аноним 13/05/20 Срд 03:22:21 1686006347
>>1686005
Касательно выпускников вузов - тут сложный вопрос. У нас смотрят на то, что ты умеешь, а не на то, где ты учился, если мы говорим про позиции разработчиков с опытом.

Если мы говорим про интернов - то тут я ничего не скажу, не знаю.
Аноним 13/05/20 Срд 03:36:41 1686008348
анон-анон, а вот скажи - почему часть программистов не любит PCH(precompiled header)?

хожу по гиту, смотрю крупные проекты - многие не делают такую фичу.

Но почему? ведь это нехилый буст компиляции (ради прикола пробовал включать, компиляция была быстрее на 20-40%)
Да и на самом деле код становится чище без миллиона инклюдов
Аноним 13/05/20 Срд 04:07:02 1686010349
0
Аноним 13/05/20 Срд 07:27:23 1686068350
>>1686003
Вангую потому что у 12 долговременная поддержка, а у 14 нет.
Аноним 13/05/20 Срд 10:34:09 1686181351
>>1686068
А как посмотреть в чем разница? Смотрю на оффлайн версии, хочется понять без установки.
Аноним 13/05/20 Срд 11:11:20 1686242352
>>1685974
Мне нравился кодблок. Особенно прокрутка правой кнопкой и дебаг-run-to-cursor одной кнопкой.

Но он не обновлялся с 2017. С ним идет какой-то мудацкий билд mingw со странными багами в случайных местах (например отсутствие std::to_string при том что с++11 очевидно поддерживается). В дебаггер ~10 лет не могут добавить питон и как следствие нормальное отображение содержимого stl-контейнеров. При открытии проектов больше 20kloc всё ложится.

Если собираешься решать что-нибудь кроме однофайловых лаб, подумай еще раз.
Аноним 13/05/20 Срд 11:26:34 1686273353
>>1685466
Самый лучший вариант - clion
Аноним 13/05/20 Срд 11:27:15 1686274354
анон, посоветуй годный header-only фреймворк для юниттестов

Ну то есть чтобы блядь без ебанутых систем сборки от анунаков не слышавших про мейнстримные системы сборки и живущих в какой-то альтернативной вселенной. и чтобы оно не выглядело как говно на дефайнах
Аноним 13/05/20 Срд 11:39:52 1686297355
Аноним 13/05/20 Срд 12:12:25 1686348356
>>1686242
Скачай ночную сборку, они вроде каждый месяц выходят.
Аноним 13/05/20 Срд 12:22:28 1686376357
>>1686348
>потести вечную бету
А сколько будут платить?
Аноним 13/05/20 Срд 13:11:26 1686452358
>>1686274
#define ASSERT_EQ(_x, _y) assert((_x)==(_y), #_x " != " #_y)

Фреймворк готов.
Аноним 13/05/20 Срд 13:14:07 1686455359
Аноним 13/05/20 Срд 13:24:42 1686463360
>>1686242
Лол блять. Зашел сейчас на их сайт.
А там после трехлетнего запора оказывается выкатили обновление в марте, где пофиксили и stl и мыло на fullhd экранах и to_string.
Похоже пора перекатываться обратно.
Аноним 13/05/20 Срд 13:38:42 1686470361
Котаны, насколько кресты медленнее сишки? В особенности, если брать STL контейнеры и умные указатели против сырых массивов и указателей в Си?
Аноним 13/05/20 Срд 13:46:56 1686474362
>>1686470
Ни насколько, не еби мозг
Аноним 13/05/20 Срд 13:47:43 1686476363
Я из джавы, хочу в системные, вот типа думаю, учить сразу раст или начать с си и плюсов
Аноним 13/05/20 Срд 13:48:33 1686477364
>>1686470
В дебаге? STL вектор медленнее, особенно MSVC. В релизе? Одинаково.
Аноним 13/05/20 Срд 13:51:03 1686479365

>>1686476
Раст лучше, но на нем пока почти нет работы в россии.
Аноним 13/05/20 Срд 14:30:07 1686517366
>>1686476
Чел, раст для системников это как для тебя J#, думает он...
Аноним 13/05/20 Срд 14:56:54 1686559367
>>1686517
ну раст же лучше, и писать приятнее ну
Аноним 13/05/20 Срд 15:01:42 1686577368
>>1686559
> писать приятнее
> нечитаемая параша из загогулин
Аноним 13/05/20 Срд 15:13:41 1686608369
>>1686559
мертворожденная параша для борщехлебов же, ну.
Аноним 13/05/20 Срд 15:31:50 1686639370
>>1686559
>ну раст же лучше, и писать приятнее ну
Как назвать подобных уебков? Вот есть кабанчики, им 40, а есть вот такие вот "ну че ты ну".
Аноним 13/05/20 Срд 15:42:46 1686673371
Пора смирится, что раст оставит кресты в прошлом. И это в общем то хорошо. Язык не уступающий, а порой даже опережающий кресты, но при этом полностью безопасный. Самое главное он активно развивается и не связан обратной совместимостью с кодовой базой 30 летней давности.
Аноним 13/05/20 Срд 15:47:44 1686687372
15535796363300.jpg 164Кб, 720x1280
720x1280
>>1686673
Тобой выбрана неправильная дверь, дружок-пирожок. Тред клешнеруких два блока вниз и там никого нет
Аноним 13/05/20 Срд 15:52:38 1686692373
1589374354185.png 4Кб, 467x106
467x106
Заглянул в растотред, глянув на первый же пик вспомнил, что в крестах нет нормального вывода в консоль. Либо неформатируемый по человечески cin/cout, либо небезопасный printf.
Аноним 13/05/20 Срд 15:59:56 1686709374
>>1686692
vcpkg install fmt это, конечно, безумно сложно
Аноним 13/05/20 Срд 16:00:24 1686712375
>>1686376
Судя по всему столько же, сколько ты готов заплатить разрабам
Аноним 13/05/20 Срд 16:03:47 1686720376
>>1686709
Левые библиотеки...
Аноним 13/05/20 Срд 16:04:32 1686724377
>>1686720
В с++20 завезли std::format, вот только компиляторы его еще не завезли.
Аноним 13/05/20 Срд 16:39:41 1686807378
>>1686720
ты охуенный топитель за разработку без библиотек?
Аноним 13/05/20 Срд 17:08:28 1686849379
buffer.iter().zip(other_buffer.iter()).enumerate().for_each(|(index, (x, y))| assert_eq!(x, y, "not equal items at {} index", index));
Язык для людей
Аноним 13/05/20 Срд 17:12:46 1686855380
>>1686849
А теперь давай то же на плюсах.
Аноним 13/05/20 Срд 17:15:01 1686859381
>>1686807
Билбиотеки есть смысл тащить для чего-то нетривиального, а вот такая хуита на каждый пук — это жс-макакенг.
Аноним 13/05/20 Срд 17:15:51 1686863382
1398249928336.jpg 22Кб, 300x300
300x300
Аноним 13/05/20 Срд 17:31:52 1686889383
Аноним 13/05/20 Срд 17:38:39 1686898384
Двач, можно ли делать вот так?
if (vector.size() == 2 && vector[0] && vector[1]) {}
Т.е. продолжит ли он смотреть на другие условия и не вылетит ли в segfault после первого false (т.к. вектор пустой)?
Аноним 13/05/20 Срд 17:48:13 1686905385
>>1686898
можно
не продолжит
не вылетит
Аноним 13/05/20 Срд 18:01:23 1686921386
Аноним 13/05/20 Срд 18:02:58 1686926387
>>1686898
нахуй ты обращаешься к элементам вектора через оператор [], если есть метод at, который проверяет границы и элиминирует возможность переполнения?
Аноним 13/05/20 Срд 18:04:29 1686927388
>>1686926
Нахуй это делать если ты уже произвел проверку на size?
Аноним 13/05/20 Срд 18:21:06 1686956389
>>1686927
Затем что кроме примера тебе нахуй больше ничего знать и не надо, тем более когда суть в другом.
Аноним 13/05/20 Срд 18:24:25 1686962390
>>1686859
Ясно, профнепригодный
Аноним 13/05/20 Срд 18:48:59 1686982391
internet-meme-r[...].jpg 74Кб, 800x800
800x800
>>1686962
>ряяя да нибамбит у миня я ни макакин
Аноним 13/05/20 Срд 19:09:28 1686998392
>>1686982
сейчас бы ты еще хоть немного понимал, что ты несешь, а то твои боевые картиночки смотрятся комично очень.
Аноним 13/05/20 Срд 19:20:55 1687017393
>>1686998
>даже ради околочеловеческого принта надо тащить сторонние либы
>при том, что нет даже единого пакетного менеджера и при таком подходе для 3 либ модет понадобиться 3 манагера пакетов
>ряяя маааам плюсы ни гавно!111
Аноним 13/05/20 Срд 19:23:09 1687026394
15888541462440.png 1593Кб, 1387x1600
1387x1600
>>1687017
2050
@
единый пакетный менеджер так и не стандартизировали
@
из-за жс-драйвен-макакенга с пакетами содержащими 1 функцию мир вошёл в сингулярность
@
чтобы собрать 1 утилитку надо поставить 3 компилятора и 293 пакетных манагера
@
а потом подождать пока они скачают кучу пересекающихся зависимостей на пол терабайте
Аноним 13/05/20 Срд 19:32:38 1687050395
>go get
антибагор
Аноним 13/05/20 Срд 19:34:05 1687055396
Аноны, столкнулся с такой проблемой, что виджеты Qt у меня зависают. Происходит это по всей видимости в моменты, когда нужно быстро что-то делать.
Например, захватываю я пакеты из сети и пытаюсь их выводить в QListWidget. Сую в хэндлер пакета что-нибудь типа listWidget.addItem("пакетнейм"). Причем хэндлер вызывается с бешеной частотой, пакетов в сети то много. Программа намертво зависает.
Или другой пример. Записываю пакеты в файл. Пакетов много, поэтому процесс наблюдаю с помощью QProgressBar. Ну то есть после записи очередного пакета value прогрессбара инкрементируется. Пакеты пишутся в цикле for. И тоже зависает, QProgressBar перестает шевелиться, окно программы не отвечает. Хотя сам процесс идет, если подождать, пакеты запишутся в файлы и программа отвиснет.
Тут ясно, что я что-то неправильно понимаю в построении десктопных программ. Но что именно, я не могу понять? Это как-то связано с оперативкой? Или стек вызовов забивается? Как этого избегать? Больше интересует первый пример.
Аноним 13/05/20 Срд 19:43:29 1687065397
>>1687055
Браток, накачивай дату в буфер, и с определенным интервалом, например 5 раз в секунду фетчи виджет с буфера. А ты я так понимаю линейно с каждым обращением за пакетом сразу его вставляешь в виджет
Аноним 13/05/20 Срд 19:46:18 1687070398
>>1687065
> А ты я так понимаю линейно с каждым обращением за пакетом сразу его вставляешь в виджет
Да-да, именно так!
> Браток, накачивай дату в буфер, и с определенным интервалом, например 5 раз в секунду фетчи виджет с буфера.
То есть критична именно частота обращений к методу виджета, так? Если часто его вызывать, комп охереет?
Аноним 13/05/20 Срд 19:50:56 1687075399
>>1687070
Тяжело сказать не зная что там у тебя. Подозреваю что мейнлуп умирает пока ты пытаешься напихать в него дату, потому что тайм-аут у тебя вряд-ли выставлен. Поллинг или как там это называется, читани доку кьюти. И вообще старайся как можно меньше обращений делать
Аноним 13/05/20 Срд 19:53:41 1687081400
>>1687075
А почему умирает во втором примере? Там же тупо цикл, внутри которого происходит генерация пакета и запись в файл. Пакеты при этом ничем друг от друга особо не отличаются, структура одинаковая. Виснет, когда пакетов много, например 200к.
Аноним 13/05/20 Срд 20:00:42 1687090401
>>1687081
Я если честно не очень с куте знаком, и не знаю как там мейнлуп работает, представляю себе что он пытается создать в цикле представление о всех виджетах, а потом проверяет соответствует ли оно актуальному представлению в следующий момент до того как нарисовать, и т.к. пихаешь дату безостановочно, он постоянно заново рисует этот виджет. Короче не скажу тебе что там точно происходит, но опыт и интуиция подсказывают что нужно в буфер накачивать и по типам закидывать в виджет
Аноним 13/05/20 Срд 20:01:52 1687093402
Аноны, а для чего нужен #define в C++? Или его в C++ вообще не юзают, и это только в коде из C?
Аноним 13/05/20 Срд 20:04:43 1687097403
>>1687090
А если в буфер закачивать, он в это время не будет пропускать пакеты? Или для этого надо параллелизм юзать?
Ну то есть я в хэндлере буду писать пакет в буфер. И одновременно мне надо раз в 200 мс еще отправлять содержимое буфера в виджет и очищать буфер. Это же без параллелизма никак не сделаешь?
Аноним 13/05/20 Срд 20:11:17 1687111404
>>1687093
Глупый вопрос какой то. Для чего нужен дефайн в с? Для того же и в с++. Как уже писали выше использовать можно например для получения имени поля
#define PRINTER(x) #x
А так много для чего, средство очень мощное. Но вообще использовать макросы дурной тон.
Аноним 13/05/20 Срд 20:13:37 1687113405
>>1687097
Ну у тебя по возможности вообще не должно быть ключевой логики во фронте. Пихни ее в другой тред например. Куте точно мультитрединг поддерживает, поэтому проблем не должно быть. Но у тебя я так понимаю дата вся создана где-то заранее, а не какие-то пакеты приходящие в реальном времени, поэтому тебе не нужно все пакеты за раз тоже качать. Тяжело понять в общем не зная что тебе нужно
Аноним 13/05/20 Срд 20:13:47 1687114406
>>1687111
Что за имя поля?
> Но вообще использовать макросы дурной тон.
Я вообще если честно не понимаю, зачем нужен #define, если можно объявить функцию.
Аноним 13/05/20 Срд 20:16:06 1687116407
>>1687113
Пакеты в реальном времени приходят.
А как пакеты захватывали и выводили в интерфейс в те времена, когда многоядерных процессоров не было? Вот Wireshark например, судя по вики, сделали в 1999 году.
Аноним 13/05/20 Срд 20:40:49 1687132408
>>1687116
Поток, которым ты оперируешь -- вещь логическая. Можно к одному потоку хардверному цеплять сотни вот таких. Кроме того, ввод/вывод можно совершать неблокирующими операциями, типа если данных в буфере нет, то и хуй с ним, едем дальше.
Аноним 13/05/20 Срд 21:02:14 1687148409
>>1686008
Вот скажите мне, это один растошизик в треде пытается троллить или их целая секта?
Аноним 13/05/20 Срд 21:04:54 1687150410
>>1687148
Сорян, с ссылкой на пост промахнулся, ее там не должно было быть.

Бтв предкомпилированные заголовки требуют единообразного начала всех исходников, вроде как, что не всегда на получается поддерживать при несогласованной разработке.
Ну, во всяком случае, я так понял смысл этой штуки.
Аноним 13/05/20 Срд 21:14:45 1687154411
Аноним 13/05/20 Срд 21:17:22 1687157412
>>1687081
> А почему умирает во втором примере? Там же тупо цикл
Приведи уже код, а то непонятно, что ты там делаешь
Аноним 13/05/20 Срд 21:31:15 1687166413
>>1687157
Ну вот код цикла, например.

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();

Packet packetForWrite = gsPacketSet[index];
QByteArray writeArray(QByteArray::fromHex(packetForWrite.getStr().toLatin1()));
file.write(writeArray);

allGSStreams[index].incCurrentPacketIndex();
gsPacketSet.replace(index, getReplaceForGS(index));

progressBar->setValue(i);
}
Аноним 13/05/20 Срд 21:36:38 1687170414
>>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);

Короче, RTFM.
Аноним 13/05/20 Срд 21:38:03 1687171415
>>1687170
Пощады! Я же ньюфаг, я никогда не юзал мультитрейдинг.
Аноним 13/05/20 Срд 21:40:24 1687173416
>>1687154
И сколько ты напишешь функций?
Хорошо, у тебя есть шаблоны, это круто.
Но там сложные правила для вывода типов и возвращаемых значений, что нужно будет учесть.
template<typename T>
T func(T x) { return x; }
Совсем не всегда одно и то же, что и
#define func(x) #x
Которую написал анон в том посте
Аноним 13/05/20 Срд 21:41:21 1687175417
>>1687173
А имя поля - это что? И зачем его получать?
Аноним 13/05/20 Срд 21:47:28 1687184418
>>1687170
А что именно вешает главный поток в моем случае? progressBar->setValue(i)? Или что? Какие действия вообще могут вешать главный поток, и что делать, чтобы этого избегать?
Аноним 13/05/20 Срд 21:48:06 1687186419
>>1687175
У тебя есть
struct A { int x; };
Имя единственного поля в структуре - это x.

Бтв с шаблонами надо магию уже подрубить в этой ситуации.
В случае макроса
#define func(obj, x) obj.x
И со структурой выше ты кодом
A a;
func(a, x);
получишь значение в поле a.x.
Если честно, хз за решетку, почему ее тот анон использовал, я не настолько плотно шарю в макросах.

С шаблонами лично я не знаю, как это сделать.
Аноним 13/05/20 Срд 21:53:31 1687188420
>>1687186
Шаблон - это компилирующийся код, который пытается собраться комплиятором(инстанциироваться) только когда его вызывают, причем для каждого уникального набора параметров отдельно, используя значения полей, что ты туда передаешь.
А макрос - это замена текста на аргументы, согласно объявленному твоим правилом, но со своей магией.
float pi{3.14}; //будет выделена память под переменную pi со своим значением.
#define PI 3.14 //все встретившиеся PI в исходном коде(в области трансляции, если быть точным) будут заменены на 3.14 и забиты в исполняемый файл как литералы.
И иногда это больше тебе развязывает руки, чем просто функция.

более щарящий анон поправит, если я обосрался.
Аноним 13/05/20 Срд 21:57:10 1687195421
>>1687186
Решетка стрингифицирует то, что ты посылаешь в макрос.
#define STR(x) #x STR(std::cout << pidor) станет строкой "std::cout << pidor", а не вызовом соответствующей функции.
Аноним 13/05/20 Срд 22:02:10 1687201422
>>1687114
>, зачем нужен #define, если можно объявить функцию.
А дефайном ты можешь объявить части функций и создать внутренний дсл, позволяющий коротко и ясно заменить кучу бойлерплейта( и создать больше возможностей выстрелить в ногу). Шаблоны это решают, но не до конца.
Аноним 13/05/20 Срд 22:36:17 1687232423
>>1687184
>Какие действия вообще могут вешать главный поток
Количество работы выполняемое на нём.
Ты по получении каждого пакета:
а) Парсишь пакет и что-то там сравниваешь, в зависимости от размера может выполняться долго. Алсо, ещё гоняешь очень дохуя аллокаций. Выдели вектор себе один раз до входа в первый цикл (и если знаешь размер приходящих — преаллоцируй память заранее, если не знаешь — аллоцируй при входе в первый цикл, иначе на каждый append под твой массив будет выделяться память по новой и копироваться содержимое, что как бы будет работать пизда как медленно);
б) Если у тебя SSD — запись на диск достаточно дорогая операция, чтобы просто так делать её в главном потоке. Если у тебя HDD — то это просто пиздос смерть гроб, особенно если у тебя там не 5 байт.
в) Не знаю, что именно у тебя в предпоследних 2-х строчках, но что-то похоже на копирование, если в gsPacketSet хранится не пара интов — не надо так.

>и что делать, чтобы этого избегать?
Стараться вообще нихуя не делать на главном потоке, и использовать его только для отрисовки UI и как точку синхронизации. В твоём случае, единственная строчка кода, которая должна работать на главном потоке выглядит так:
>progressBar->setValue(i);
Аноним 13/05/20 Срд 22:40:44 1687239424
>>1687232
> Не знаю, что именно у тебя в предпоследних 2-х строчках, но что-то похоже на копирование, если в gsPacketSet хранится не пара интов — не надо так.
Это набор пакетов. Я должен выбирать пакет из набора и записывать его в файл. И реплейсить забранный пакет новым.
Аноним 13/05/20 Срд 22:44:19 1687243425
>>1687232
> Стараться вообще нихуя не делать на главном потоке, и использовать его только для отрисовки UI и как точку синхронизации.
Подожди, а что вообще главный поток в коде? Я что-то вообще запутался. Вот у меня есть MainWindow, в котором все виджеты, кнопочки и прочее. При нажатии на кнопочки программа делает всякие штуки, например, генерирует и записывает пакеты в файл. Что здесь главный поток? Или что должно быть им, если делать все правильно?
Аноним 13/05/20 Срд 22:48:10 1687245426
>>1687186
Не понял, а почему нельзя просто:
struct A { int x; };
и потом:
A a;
a.x = 2;
Или что ты там с х собирался делать?
Аноним 13/05/20 Срд 22:50:00 1687248427
>>1687201
Что такое части функций, внутренний дсл, бойлерплейт?
Аноним 13/05/20 Срд 23:10:08 1687260428
Аноним 13/05/20 Срд 23:25:12 1687267429
>>1687114
У меня для тебя три слова:

КОДОГЕНЕРАЦИЯ
BOOST::PREPROCESSOR
КОД КАК ДАННЫЕ
Аноним 13/05/20 Срд 23:28:52 1687269430
Аноним 13/05/20 Срд 23:32:02 1687270431
>>1687239
Это никак не отвечает на мой вопрос, не копируй объекты если оне не совсем мелкие, короче.

>>1687243
Это поток, с которого начинается выполнение твоей программы (т.е. поток, в котором системным сишным рантаймом была вызвана функция main()).
>Или что должно быть им, если делать все правильно?
То же, что и было, лол. Твой код уже запущен в нём, тебе остальные задачи надо раскидать по другим.

По хорошему, тебе надо сделать 2 потока, в одном все вычисления в другом последовательную очередь с записью на диск, но учитывая твой уровень — просто вынеси всё, что не связано с UI в другой поток, и как я и писал не дрочи сильно память в начале цикла, а результаты лучше складывай в буффер в памяти и записывай одной транзакцией по завершению.

inb4 сразу план действий:
Создай поток, крути на нём свои вычисления, и с помощью сигналов закидывай результаты обратно в главный поток где и меняй прогресс.
Аноним 13/05/20 Срд 23:35:08 1687272432
>>1687269
Учитывая, что ты явно не на KDE сидишь на шинде — нихуя.

>>1687267
Ему ещё рано такие слова слышать, зачем ты так?
Аноним 13/05/20 Срд 23:47:02 1687276433
С чего начать написание простого файлового менеджера? Нуб, QT использовал, про filesystem знаю. Не знаю с чего начать. Сорри если не тот тред.
Аноним 14/05/20 Чтв 00:03:19 1687284434
>>1687276
с вывода в консольку папок и файлов
Аноним 14/05/20 Чтв 00:28:24 1687289435
>>1687245
Допустим, у тебя есть массив строк, каждая из которых - имя поля конкретного класса
И ты можешь в цикле по этому массиву использовать все его поля, а не перечислять их отдельно, если прикрутишь макросы.

Нет, я не говорю, что это обязательно нужно и используется на каждом шагу. Просто без макросов вроде как нет пока способа так сделать.
Аноним 14/05/20 Чтв 01:27:33 1687297436
Аноним 14/05/20 Чтв 04:41:00 1687343437
image.png 142Кб, 265x190
265x190
Аноним 14/05/20 Чтв 07:27:02 1687364438
Анон, вчера в голову пришла идея о бесконечных целых типах. Типа числа с тыщью, миллионами разрядов и проч. Применений масса, хеши, финансы с учётом каждой копейки и проч. Также р напридумывал, что бесконечный целый тип может быть основным целым типом в языке, а компилятор (или какие-то там политики) уже решают, какое брать аппаратное ограничение, может быть 8 бит хватит на всю систему.
Есть ли какие-нибудь придумки по этой теме? Не думаю, что я первый это придумал
Аноним 14/05/20 Чтв 07:29:58 1687365439
1589430624491.jpg 50Кб, 884x346
884x346
Помогите распарралелить код, каждый тред вызывает данную функцию, но время выполнения точно такое же, что и в последовательной реализации.
Аноним 14/05/20 Чтв 08:43:53 1687374440
>>1687364
Если ты про то что бы можно было для каждой системы выставлять свои размеры интов, то в си и плюсах так и есть. Размер char в битах никак не ограничен - его могут выставить любым. Есть проблема с тем что подразумевается (хотя стандарт наверное этого не требует) что размер int равен макимально "удобному" для процессора размеру (тоесть обеспечивает максимальное быстродействие), что ограничивает размеры int размерами регистров процессора. Что ограничивает размеры char, так как char может быть любым, но он не может быть больше int.
Аноним 14/05/20 Чтв 08:56:44 1687377441
Аноним 14/05/20 Чтв 10:17:39 1687421442
>>1687364
Многие языки используют длинную арифметику, например питон и хаскель. ЕМНИП в хаскеле используется GMP по умолчанию для типа Integer.
Аноним 14/05/20 Чтв 11:40:41 1687494443
Безымянный.png 24Кб, 604x601
604x601
sizeof(head)) возвращает 56 байта вместо 54.
Функция начинает правильно работать только после сдвига указателя на 2.
Почему так?
Аноним 14/05/20 Чтв 11:50:18 1687506444
>>1687421
Я только сейчас понял, что у хаскелля-то реально есть применение. На нём же всякие уравнения можно писать почти как на доске, лол.
Аноним 14/05/20 Чтв 11:55:12 1687516445
>>1687364
было, в перле, в 91 году.
Аноним 14/05/20 Чтв 11:59:04 1687519446
Аноним 14/05/20 Чтв 12:01:14 1687521447
Screenshot.png 90Кб, 803x718
803x718
Пикрелейтед.
Почему при написании кастомного компаратора для бинарного поиска надо джва раза перегружать оператор () ?
Аноним 14/05/20 Чтв 12:16:17 1687536448
Аноним 14/05/20 Чтв 12:40:08 1687563449
>>1687494
Ох лол, только недавно была статья на хабре про это, а точнее про собес синьора который не знает про выравнивание.
Аноним 14/05/20 Чтв 12:55:13 1687581450
Аноним 14/05/20 Чтв 12:55:53 1687584451
>>1687521
Наверное чтобы не ебаться с конвертированием Dummy в int. std::binary_search требует чтобы объекты по которым ведется поиск могли быть сконвертированы в типы обоих аргументов оператора(). А тут они его просто перегрузили и никакой конвертации не нужно. Незнаю наколько это правильно.
Аноним 14/05/20 Чтв 13:02:30 1687600452
Аноним 14/05/20 Чтв 13:03:28 1687602453
>>1687584
ну, это работает, можешь сам проверить. Просто эти 2 перегрузки немного с толку сбивают.
Аноним 14/05/20 Чтв 13:34:53 1687659454
Прорамач, объясни дураку пожалуйста как создавать qm файлы и как их подрубать к проекту.
Прочитал в справочнике Qt о QTranslator и ничего не понял.
Вопрос именно с созданием qm файлов.
Спасибо.
Аноним 14/05/20 Чтв 16:49:01 1687945455
Аноним 14/05/20 Чтв 19:33:58 1688241456
>>1685466
У меня хорошо заработал из коробки только xcode. Все остальные жалкие поделия либо тащат с стобой 20Гб легаси и не умеют в лигатуры (visual studio), либо не могут из коробки создавать hello world без пердолинга и кофигурирования всяких cmakeов (qtbuilder, clion, eclipse).

Текстовые редакторы для разработки я вообще не рассматриваю. Хотя всякие мастера своего пердольного дела типа Джона Блоу пердолят код в emacs и альттабаются в студию только для дебага (я так не могу)

Конечно сказывается отсутствие единого стандарта для проектов, и требование под каждую платформу пердолить свою ide
Аноним 14/05/20 Чтв 19:56:42 1688282457
>>1688241
>У меня хорошо заработал из коробки только xcode
У которого постоянно отваливается автокомплит проектах больше мелкого и такой же по стабильности дебаггер.
Ну, если тебе важен внешний вид, то икскод действительно самый лучший (да и шрифты на макоси рендерятся красиво, да).
>либо не могут из коробки создавать hello world без пердолинга и кофигурирования всяких cmakeов
Зато вот для взрослой разработки это минус, лол. Я ебал эти проекты икскода и их ебаный XML, конфликты в котором надо мерджить при каждом слиянии веток.
>Конечно сказывается отсутствие единого стандарта для проектов
Тащемта, есть CMake, который поддерживают примерно все.
>и требование под каждую платформу пердолить свою ide
Ты сейчас ахуеешь, но вообще всю инфраструктуру для этих иде (кроме парсера) надо тоже пердолить под каждую платформу свою.
Аноним 14/05/20 Чтв 19:57:26 1688285458
>>1688241
я наверное никогда не пойму гундёж по поводу сборки. стоит 2-3 дня уделить на освоение компиляции и симейка и проблем потом не возникает.
Аноним 14/05/20 Чтв 20:30:04 1688323459
Безымянный.jpg 165Кб, 604x818
604x818
Аноним 14/05/20 Чтв 20:46:28 1688336460
>>1681810
Писал как-то прогу по решению примеров. Понимает приоритет операций и скобки.
Вводишь строку. Пример 2(3-1)^2. И она выводит результат. Может поможет.

#include <iostream>
#include <stack>
#include <string>
#include <cmath>
#include <cstring>
using namespace std;

#define STKDPTH 32

size_t Priority(char symbol);
void Computaion();
void Parse(char s);

char STACK_OPER[STKDPTH];
double STACK_NUMB[STKDPTH];

size_t idx = 0;
size_t idx2 = 0;

int main()
{

char expression[] = "3+2
4-(6/((6/3)+2))^((22)-1)\0";

size_t N = strlen(expression);

for(size_t i = 0; i < N; i++)
{
if(isdigit(expression))
{
size_t len = 0;

while(isdigit(expression[++i]) && i < N)
len++;

if(!len){
STACK_NUMB[idx++] = expression[--i] - '0'; continue; }

len++;
i -= len;
size_t j = 1;
double numb = 0;

while(j <= len)
numb += pow(10, len - (j++))
(expression[i++] - '0');

STACK_NUMB[idx++] = numb;
i--;
}
else
Parse(expression);
}


while(idx2 != 0)
Computaion();

cout << STACK_NUMB[0]<< endl;

return 0;
}

void Parse(char s)
{
if(s == '(' || STACK_OPER[idx2 - 1] == '(')
{
STACK_OPER[idx2++] = s;
}
else if(s == ')')
{
while(STACK_OPER[idx2 - 1] != '(' )
Computaion();
idx2--;
}
else
{
while(idx2 != 0 && ( Priority( STACK_OPER[idx2 - 1]) > Priority(s) || Priority( STACK_OPER[idx2 - 1]) == Priority(s) ) )
Computaion();
STACK_OPER[idx2++] = s;
}
}

size_t Priority(char symbol)
{
if ((symbol == '+') || (symbol == '-'))
return 1;
if ((symbol == '') || (symbol == '/'))
return 2;
if ((symbol == '^'))
return 3;
return 404;
}

void Computaion()
{
double result = 0;
double right, left;
char oper;

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;

default: break;
}
STACK_NUMB[idx++] = result;
}
Аноним 14/05/20 Чтв 21:11:22 1688365461
>>1688241
> не умеют в лигатуры
Не ври, у меня студия с шрифтом Cascadia Code всё прекрасно показывает. Только надо студию перезагрузить после смены шрифта