Этого треда уже нет.
Это копия, сохраненная 31 марта 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
2 1129289
Использую CodeLite. Написал программу (эхо сервер вебсокетов), и когда я ее открываю в самом CodeLite, она запускается, а когда я открываю исполняемый файл сам, то вылезает ошибка libgcc_s_seh-1.dll не найден и т.д. Вопрос: в чем блять разница между тем что я просто жму RUN в CodeLite, и открываю exe файл своими кривыми ручками? Между тем, скачал я эту dll, закинул ее, и выходит ошибка при запуске приложения (0xc0000007b).
3 1129290
>>29289
Под Windows нет IDE, кроме MSVC.

Между RUN и запуском руками разница в working directory, в которых ищется дллка. а ошибка - хуй знает вообще почему, может АБИ не то, может либа не той версии.
4 1129294
>>29289

> c++


> windows


> codelite


> mingw


Раз уж решился писать на крестах под виндой, так скачивай visual studio, для винды лучше нее пока что ничего не придумали
5 1129299
>>29289
Гугли отличия между статической и динамической линковкой. А чтобы все работало, то просто скопируй дллки, которые просит программа, из /MinGW/bin/.
6 1129315
>>29290
Да вроде бы они в одном месте ищутся. Я еще использую sfml-system-2.dll (вроде так), и когда ее нет, он ругается при RUN и при запуске руками.
>>29299
Первое, что я попробовал. Только там нету libgcc_s_seh-1.dll , зато есть libgcc_s_seh_64-1.dll. Я пробовал его переименовывать и засовывать в директорию с exe файлом, и как итог - та же самая ошибка.
>>29294
А могу ли я не используя их среду использовать их компилятор? Она у меня медленно работает.
7 1129324
>>29315

>Первое, что я попробовал. Только там нету libgcc_s_seh-1.dll , зато есть libgcc_s_seh_64-1.dll. Я пробовал его переименовывать и засовывать в директорию с exe файлом, и как итог - та же самая ошибка.


Непереименнованный файл тоже пробовал? Хз в чем проблема, но тогда компилируй с параметром "-static", может поможет.

>А могу ли я не используя их среду использовать их компилятор? Она у меня медленно работает.


Да, из командной строки. Правда студия все равно должна быть установлена.
8 1129330
>>29324

>Правда студия все равно должна быть установлена.


Не, там компилятор можно отдельно установить, точно помню.
9 1129331
>>29255 (OP)
Дебил, нумерацию проебал
10 1129348
>>29331
В который раз
11 1129349
>>29289 >>29290 >>29315
Хотите - можете почитать МСДН, но разница в том, где ищутся дллки для процесса, запущенного из под другого процесса.
>>29289
В папке компилятора есть папка bin, добавь её в PATH (фгугл).
>>29315
Если программа просит какую-то либу, то она, блядь, где-то таки есть. Найди её поиском по ЖД.
>>29330
Из последних SDK его исключили, компилятор из WDK убрали. Качаёшь инсталятор коммьюнити-студии - выбираешь декстоп ц++ - получаешь визуал студио коре едитор с неотключаемой галочкой.
>>29331
Чиркнул моду.
12 1129354
>>29349

>В папке компилятора есть папка bin, добавь её в PATH (фгугл).


Уже добавлена

>Если программа просит какую-то либу, то она, блядь, где-то таки есть. Найди её поиском по ЖД.


Искал, нашел только libgcc_s_seh_64-1.dll

Такой пиздец
13 1129356
>>29289
Проверь еще нет ли разделения на дебаг и релиз версии. Откомпилируй и запускай именно релиз версию. Дебаг может быть расчитана на запуск с помощью иде через какие-то местные мокрописьки, а не обычное исполнение. Посмотри еще в консоли иде какой командой запускается файл на исполнение - там обычно(часто) пишутся команды запуска. Есть ли такое в CodeLite не знаю.
14 1129361
>>29356
Есть такая хуйня:
C:/TDM-GCC-64/bin/g++.exe -o ./Release/sockets @"sockets.txt" -L. -LC:\SFML-2.4.2\lib -lsfml-system -lws2_32
в sockets.txt object файлы прост прописаны. Тут просто линковка вродь, хотя я хз. У меня даже надежда появилась когда ты про Release сказал (есть такое разделение да), но в итоге все та же хуйня происходит.

Блять, может все таки сесть на стул с майкрософтом и не ебаться, но мне уже тупо интересно что за хуйня.
15 1129378
>>29331
Не баг, а фича.
16 1129385
>>29361
Ну да это компиляция. Посмотри может в консоли когда программа запускается - может там команда запуска есть. Поищи в настройках где флаги компиляции можно добавлять и попробуй добавить -static-libgcc -static-libstdc++ это статическая линковка рантайм библиотеки. Еще может почитай про динамическую линковку в операционной системе виндоуз. Потому что в линуксе для динамической линковки не достаточно просто закинуть библиотеку в нужные папки. Еще должен обновиться кеш динамического линкера (ldconfig) - может в виндовс тоже что-то подобное есть.
17 1129411
>>29349

>Из последних SDK его исключили, компилятор из WDK убрали. Качаёшь инсталятор коммьюнити-студии - выбираешь декстоп ц++ - получаешь визуал студио коре едитор с неотключаемой галочкой.



Три наносекунды в гугле: https://blogs.msdn.microsoft.com/vcblog/2016/11/16/introducing-the-visual-studio-build-tools/
18 1129433
Нахуй студию с ее троянами и телеметрией
19 1129454
Накатил вроде Visual C++ в CodeLite. Но когда даже тупой хелло ворлд пытаюсь откомпилить вылезает дохуя вот этого: https://ideone.com/gSFSyD
В чем проблема может быть? Я наверное должен был понять, но я пока еще не совсем шарящий.
20 1129480
>>29354
Тогда лобовое решение: качаешь process explorer и смотришь список путей к DLL-кам у своей программы, запущенной из коделите, раз ты такой пиздоглазый.
>>29411
Я про это не знал, но там линк мёртвый, и в каталогах этих билд тулз нет.
https://www.visualstudio.com/downloads/?q=build+tools#build-tools-for-visual-studio-2017-rc
>>29454
Тебе нужно либы подключить (наследие 80х годов).
Берёшь одну функцию, ищешь ей так:
https://www.google.ru/search?q=WideCharToMultiByte+winapi+msdn
На MSDN есть название либы:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx (в самом низу описания каждой функции)
А дальше пихаешь эту либу куда-то в аргументы линкера (без расширения .lib ).
http://codelite.org/LiteEditor/BuildSystem#toc5

Потом собираешь снова и ещёшь ошибки снова. Каким образом это упрощается в обычной студии - хуй знает, она, скорее всего, генерит список зависимостей из заголовочных файлов.
21 1129488
Народ, вот такой вот нубовопрос:
Есть строка, выполняется проверка: присваевается ли её содержимое через StrToFloat переменной типа float. Является ли это действие проверкой на то, что содержимое строки - вещественное число?
22 1129550
>>29488
Смотря что этот StrToFloat делает. Он может, к примеру, зажрать первые символы, которые могут составлять float и на этом закончить
23 1129552
>>29488
В общем смысле - нет.
24 1129572
я ебу собак
25 1129585
>>29552
>>29550
Спасибо за ответ.
Тогда я правильно понял, что наиболее верной будет сперва проверка строки на содержание только цифр + не более одной точки (при этом не первым/последним символом) + возможным минусом первым символом?

Краем уха слышал про регулярные выражения, но вот беда, поскольку я совсем-совсем начинающий и в синтаксисе языка ещё не разбираюсь, а в интернетах примеры в основном для всякой джавы и пхп, то не мог бы кто подсказать учебник или статью, где пишут про регулярные выражения для с++ (операторы, их атрибуты, какие нужны библиотеки)? Ну или тут рассказать. Думал с помощью них попробовать вытаскивать из строки заданные выше символы и сравнивать потом с оригинальной строкой.
26 1129624
>>29585

> Тогда я правильно понял, что наиболее верной будет сперва проверка строки на содержание только цифр + не более одной точки (при этом не первым/последним символом) + возможным минусом первым символом?



Возможно, он пропускает начальные пробельные символы (табы, перенос строки и прочее), и затем считывает float в одном или нескольких форматах (научный, который представляет собой запись с показателем десятичной степени, например 10e5, или какой-нибудь еще). А вот когда он натыкается на неожиданный символ - тут уже без знания доков или механизмов по одному названию ничего не скажешь. Ну разве что может быть семантика у метода с указанием флага успешного выполнения, к примеру.

> Краем уха слышал про регулярные выражения, но вот беда, поскольку я совсем-совсем начинающий и в синтаксисе языка ещё не разбираюсь, а в интернетах примеры в основном для всякой джавы и пхп, то не мог бы кто подсказать учебник или статью, где пишут про регулярные выражения для с++ (операторы, их атрибуты, какие нужны библиотеки)? Ну или тут рассказать. Думал с помощью них попробовать вытаскивать из строки заданные выше символы и сравнивать потом с оригинальной строкой.



Регулярные выражения слишком жирные, чтобы заниматься парсингом чисел. Думаю, что методов, которые представляет те же стандартные потоки, тебе будет вполне достаточно.
А если ради интереса, то синтаксис там вполне простой, для этого книг читать не надо, достаточно мануалов.
27 1129636
>>29624

>семантика у метода с указанием флага


>заниматься парсингом


>стандартные потоки


Для меня это пока нецензурные выражения, но всё равно спасибо. Буду смотреть что это.
28 1129641
>>29636
Дерьмо, книгу хоть одну по С++ почитай сперва. Нахуй тебе аноны шапку делали?
29 1129645
>>29641
Чего такой агрессивный? Читаю, но медленнее чем хотелось, особенно учитывая, что задачки нужно сдать гораздо раньше, чем успею это все нормально почитать.
30 1129646
>>29645
Падажжи, когда отменили золотое правило С++ треда?

ЛАБЫ ИДУТ НА ХУЙ

Я бы тебе все подробно объяснил, но это бессмысленно.
31 1129648
>>29646
А я и не просил мне ничего решить. Не хочешь - не объясняй, твоё дело.
32 1129651
>>29636

> парсинг


В твоем случае парсинг - выделение чисел из строки

> стандартные потоки


Имеется в виду cin/cout/fstream
33 1129843
Анчоусы, поясните дебилу, как dpointers в qt позволяют сохранять бинарную совместимость?
34 1129846
>>29843
The trick is to keep the size of all public classes of a library constant by only storing a single pointer. This pointer points to a private/internal data structure that contains all the data.
http://wiki.qt.io/D-Pointer
35 1129982
>>29454
Ты зачем один ide запихнул в другой?
36 1130120
>>29488
Для того, чтобы это проверить, тебе нужно использовать потоки - создаёшь stringstream из строки, считываешь оттуда число, узнаешь число сожранных символов. Если число сожранных символов не равно длине строки, то в строке не только число.
37 1130130
Анон, а подскажи, - как при помощи QT логиниться на ресурсе в локальной сети? Нормальных примеров в сети не нашёл, мануал читал
Пока понял что мне нужен QAuthenticator в который я кладу логин и пароль
Затем мне нужен QNetworkAccessManager, а так же слот, который бы обрабатывал запрос ресурса.
Со слотом всё в целом понятно
void onAuthenticationRequestSlot(QNetworkReply aReply, QAuthenticator aAuthenticator) {
aAuthenticator = &myLoginPass;
}
Но непонятно как при помощи QNetworkAccessManager сделать запрос на аутентификацию.
Пытался
myNM->get(QNetworkRequest(QUrl("\\\\Test\\")));
Никакой реакции.
Как это правильно сделать?
38 1130133
https://metanit.com/sharp/tutorial/3.29.php
Есть ли подобный гайд, но по плюсам?
39 1130135
>>29982
ОНИ СЪЕДЯТ ОДИН В ДРУГОЙ
40 1130177
Ананасы, посоветуйте простой веб-сервер для плюсов, в котором было бы сложнее выстрелить себе в ногу нубу, и который поддерживал бы https.
41 1130202
>>30130
Средствами винапи, маня.
42 1130211
>>30202
И где я их возьму, если даже на офф сайте 2 с половиной команды и те на собачьем?
44 1130285
45 1130349
>>30277
Thnks
Тоже это нагуглил, видимо так и придётся, если других вариантов не будет.
46 1130356
Сап. В Qt Creator 4.4.1, версия под вин почему-то при пошаговом выполнении по F10/F11 стал переключаться на листинг дизассемблера и идет по нему. Галочка/её отсутствие в меню Отладка-Уровень инструкций ничего не меняют. Что делать?
47 1130369
>>30349
Пробую использовать cURL для smb-целей. Норм?
48 1130424
>>30356
Может ты слишком глубоко во вложенность функций лезешь? Например внутрь библиотек кути, которые распространяются как бинарники.
49 1130434
>>30356

>Что делать?


Качать дебаг-симболы.
50 1130442
>>30434
Там листинг даже для простой программы без модулей в виде дизассемблерного листинга показывается.
51 1130551
>>30135
А если серьезно? Нахуя ему сразу жва иде?
sage 52 1130661
>>30356
Имеется ввиду то, что текст программы вообще не показывается? А это дебуг билд хоть?
>>30551
Ему компилятор нужен был. Про Build Tools не все знют, раньше компилятор с обновлениями проще всего было получить из студии.
53 1130670
>>30661

>А это дебуг билд хоть?


Спасибо, переключение в дебуг билд помогло. Привык, что на линупсе сразу в таком режиме шло.
54 1130767
Что в STL C++ означает, когда у меня есть некий мой пользовательский класс A, который конструируется из 2х чисел, предположим
и я создаю
А<int> a(1,2);
что это вообще за контейнер или объект??
встретил в коде и не могу понять
55 1130828
>>30767
Что за хуйню я только что прочитал. Не мешай STL с шаблонами как частью языка.
56 1130870
>>30767
(1,2) - это параметры конструктора (и если их много, выбирается подходящий). Что там у тебя конструируется - контейнер, мутекс, или ещё какая залупа - никому, кроме тебя, неизвестно.
57 1130871
>>30767
Олсо, если ты не в курсе, A - это шаблон класса.
58 1131084
Двач, наверное это тупой запрос, но тем не менее, подскажите алгоритм на то что если больше одной переменной стоят в true, то завершать программу.
59 1131086
>>31084
Отвечаю на свой тупой вопрос:
Достаточно просто сложить все bool переменные и получится число сколько bool переменных стоят в true.
60 1131109
Запилил вот такой синглтон для логирования, собственно, прошу посмотреть, попинать ногами и ткнуть носом в
дерьмо, там где я неправ. (Про то что синглтоны вообще считаются злом я знаю).
Ещё хотелось бы задать вот какие вопросы:
1) Правильно я понимаю, что правильнее будет заменить (const std::string& message) -> (std::string_view message)?
2) Почему, когда я закомментировал в статическом методе Get() последнюю строку(т.е. return *pThis) у меня всё нормально
скомпилировалось и работало. У меня было два указателя, которые указывали на разные адреса, но откуда они это взяли, если
функция ничего не возвращала?
3) Правильно ли я понимаю, что здесь избыточно явное запрещение функций с мув-семантикой?
4) Насколько вообще рационально создать обертку для более удобной работы с файлами из функций filesystem(ака QFile)?
5) Что делать с деструктором? Ну, то есть, код деструктура вообще же не будет вызваться, а по-хорошему ведь нужно же
файл закрывать. А что делать, если в деструктуре надо удалять динамическую память, это же утечки, как решают тогда
такую проблему?

https://pastebin.com/yUTL2hrW
61 1131115
>>31109
Код - кошмар. Перенеси все внутрь класса и используй синглтон Маерса

Logger& getLogger()
{
static Logger logger;
return logger;
}

Сырые пойнтеры тоже не используй. Тогда будет все разрушаться как надо. Но не здесь, здесь пойнтеры вообще не нужны.
62 1131117
Двач, а filesystem собирается из expiremental вытаскивать или нет?
63 1131120
64 1131125
>>31120
Не вытащили.
65 1131145
>>31125
Что значит не вытащили?

>The filesystem library was originally developed as boost.filesystem, was published as the technical specification ISO/IEC TS 18822:2015, and finally merged to ISO C++ as of C++17.

1.png23 Кб, 659x251
66 1131159
>>31145
Совсем наркоман?
67 1131164
>>31159
"Вытащили из experimental" != "сразу стало поддерживаться всеми компиляторами"

Ну и вот: https://www.reddit.com/r/cpp/comments/7o9kg6/gcc_80_support_stdfilesystem_include_filesystem/

>GCC 8.0 support std::filesystem (#include <filesystem>) now



Обновляйся
68 1131233
Есть ли разница в производительности между gcc, vc, Intel компиляторами?
69 1131247
>>31233
В каком плане производительности? То, как быстро они собирают твой код, или производительность генерируемого кода? Если второе, то гцц пока лучшее, что придумал мир в общем случае. Интел в конкретных ситуациях может использовать оптимизации, т.к. знает устройство своих процов лучше других. vc - говно.
70 1131254
>>31247

>то гцц пока лучшее, что придумал мир в общем случае.


>vc - говно.


Можешь объяснить почему? Работаю в VS2017, на другие IDE кроме вижака без злости вообще смотреть не могу, но если разница между компиляторами значительная, то пересилю себя.
71 1131295
>>29255 (OP)
Господа, есть пара вопросов.
Как можно в 2к18 получить адекватные графы всех сортов из исходников?
72 1131297
>>31295
И ещё один.
Давно юзаю cmake для сборки, но это же полный аутизм. Есть сейчас смысл укатываться на всякие там мезоны и ниндзи?
73 1131486
>>31254
IDE - это не компилятор. К студии уже можно подключть и кланг и ICC (сто лет как).
74 1131493
>>31486
Да, только для этого всё равно нужно заморачиваться как это сделать, настроить, что делать если какая то хуйня в тексте ошибок компиляции и т.д. И я вот спрашиваю, стоит ли оно того. В чем охуенное преимущество g++ над vc++? Можно со всякими низкоуровневыми подробностями
75 1131597
>>31493
Очевидно тем что vs собирает программы для никому не нужной параши.
76 1131608
Нормально ли то, что у меня компилируется char a[body_length + 2];
77 1131609
>>31608
Просто насколько я помню, динамические массивы объявляются через new, а тут у меня байт body_length вообще из recv приходит.
79 1131612
>>31610
Принял
80 1131617
>>31610
А их разве завезли?
81 1131619
>>31617
в gcc и clang давно уже. Других компиляторов на свете нет.
82 1131629
>>31597
Каким образом он собирает программы под Linux? Я нигде такого параметра не нашел
83 1131656
Почему в С нет честного рандома? Он каждый раз выдает одни и те же последовательности?
84 1131667
>>31656

>Он каждый раз выдает одни и те же последовательности?


Его в таком виде используют в алгоритмах шифрования.
85 1131669
>>31656
Честный рандом это слишком сложная штука для стандартной библиотеки.
86 1131694
>>31629
Пояснение для дебилов: Очевидно что он собирает программы для никому не нужной windows параши.
87 1131701
>>31694
Почему линуксодрочеры такие тупые?
88 1131715
>>31694

> никому не нужной windows параши


> виндой пользуются 82.68%


> никому не нужной


Проиграл с 1.43% дебила
89 1131716
>>31694
Дурачок-максималист не зарабатывает деньги программированием.
91 1131730
плюсаны
поясните, почему binary_search возвращает bool, а не итератор на нужный ( или end() ) элемент
какая-то неявная (как по мне) хуйня
92 1131733
>>31724

> Linux 0.66%


В глаза долбишься?
94 1131740
>>31730
Есть lower_bound
95 1131747
>>31715
Пояснение для совсем умственно отсталых: Очевидно же никому не нужная windows параша никому не нужна среди нормальных людей и уж тем-более для программистов, школьники гоняющие крузис в перерывах написания хелло ворлдов не в счёт.
96 1131756
А поясните за умные указатели - нахуя они нужны и примеры использования, если есть new/delete ?
97 1131757
>>31756
Помимо удобства, в С++ что угодно может выбросить исключение, и до delete дела не дойдет.
98 1131758
Какого хуя хром ликает память? После ~недели браузинга, даже если закрыть все вкладки, кроме одной, он занимает 2 гига в памяти. Как понять, где лик?
99 1131771
>>31597
Ну это всё понятно, арряя, кроссплатформенность, лепукс рулез венда маздай)0.
А вот так чисто в сухом остатке на уровне сырых байтов в чем преимущества gcc++ над vc++?
100 1131775
>>31756
RAII базовое понятие C++, почитай. В принципе shared ptr в большинстве случаев нахуй не нужон, а юник это лучше нововведение эвер, 20 лет ждал.
101 1131788
>>31747
Конечно, дурачок. Ты же один в мире, и твое мнение единственно верное. Но ты не переживай - через некоторое время пройдет
102 1131789
>>31771
У гцц стандарты лучше и быстрее поддерживаются. Другое дело что мсвс сильно удобнее. Под никсы нормальной иде нет просто
103 1131794
>>31789
На работе пишу под линукс и использую VSCode. Оказалось лучше, чем я думаю - легко настраивается сборка и отладка, более-менее сносно работает навигация по коду и автокомплит. Сам редактор как в студии практически.
104 1131796
>>31794
Между более менее сносно и идеально + статический анализ + авторефакторинг все таки большая разница
105 1131815
>>31789

>У гцц стандарты


в каком плане? понимаю, никому не захочется по пунктам расписывать, в чем vc++ с заглотом всасывает у гцц, но хотя бы один убойный пример можно?
106 1131829
>>31815
Вывод тимплитов в конструкторах. Студия все еще не умеет. Вроде структуред биндингс еще не умеет
107 1131906
>>31815
Помню, когда в MSVC13 перемещающие операции компилятор не генерировал... во жара была.
Я то думал, хули = default не работает.
108 1131910
>>31669
Да ладно? Помню в средней школе изучали бейсик, так там вроде был рандом. А бейсик - это самый днищеязык.
109 1131911
>>31910
Он не был честным. Для честного рандома нужен источник энтропии - или аппаратный, или его имитация на основе нажатых клавиш/трафика/содержимого экрана/звука с микрофона и т.д.

Все это слишком сложно, чтобы запихивать в стандартную библиотеку.
110 1131917
>>31911
Почестнее чем в С. В бейсике он хотя бы выдавал разные значения при каждом запуске программы.
111 1131919
>>31917
Если бы ты почитал документанцию, то и тебя и сишный рандом разные бы выдавал.
112 1131921
>>31919
Ага, если подключить ctime и использовать srand от времени. Но это такие костыли, что пиздец
113 1131923
>>31921
Кто-то не знает как генератор случайных чисел работает.
114 1131924
>>31923
И как же он работает?
115 1132009
>>31295
>>31297
Бамп вопросу.
116 1132046
>>31297
Cmake, хоть и инопланетное говно - де-факто стандарт индустрии нынче.
117 1132048
>>32046
cmake работает, спору нет, но у мезона уже неплохой список проектов появился. Интересны идеи про потенциал, хотелось бы перекатиться чуть раньше чем вся индустрия на что-нибудь более удобное.
s485473420656009237p147i9w493.jpeg77 Кб, 493x516
чугунный чайник 118 1132284
Посоны, а чо ставить то, аа-а? Визуал студио если целиком то там пиздец дохуя всего, какой минимальный набор чтобы ковыряться в языке создавая консольную хуйню.
Коротко вопрос, такой. Где качать компилятор и нубовской набор библиотек. IDE среды идут без компилятора, насколько я понимаю.
Пока установил голый VS Community 2017 без нихуя.
119 1132287
>>32284
Студия или кьют. Если совсем начальный уровень можешь попробывать ideone обойтись.
120 1132299
>>32284
Студии тебе за глаза навсегда - это топ1 профессиональный инструмент разработки под С++.

Нубовской набор библиотек у тебя на первый год есть - собстно, стандартная библиотека С++.
121 1132410
>>32284
Clion лучшее IDE.
122 1132432
>>32410
Нет бесплатной версии? Значит не лучший
123 1132446
>>32410
85 гигабайт должно хватить.
124 1132522
>>32432

>Нет бесплатной версии?


Есть.
https://rutracker.org/forum/viewtopic.php?t=4976066
125 1132543
>>32432

>бесплатно


Есть комуннити версия.

>значит не нужен


За хорошие продукты таки стоит заплатить
126 1132544
>>32446
Причём тут студия?
Capture.PNG43 Кб, 780x303
127 1132585
>>32543
Где взять ссылку на комьюнити версию? На сайте только триал и всякие предложения для студентов и опен-сорса.
128 1132713
>>31619
Портэбл стэндэрт конформинг коуд? Вотс зэт?
>>31617
Расширение стандарта, нинужно.
>>31921
Вы к нам их РНР-треда причапали?
>>31815
В блогах MSDN сам найди нововведения и их даты.
http://en.cppreference.com/w/cpp/compiler_support
129 1132728
>>32544
Без понятия, причем тут студия, у нас же беседы джава господ.пнг
130 1132729
>>32585
Community версия есть у божественной Вижуал Студии. У Слиона ее никогда не было. Либо плати, либо пирать, либо сиди на EAP'ах
131 1132913
>>32729
Кстати, в 17 студии завезли какой-никакой рефакторинг, но работает это все, как обычно, хуево.
132 1132974
>>32913
решарпер С++ поставь, и ты приятно удивишься
133 1132997
>>32974
Как гуглится?
134 1133032
>>32997
Resharper C++ ?
135 1133115
>>32997
Resharper от jetbrains
136 1133116
>>32728
Как же хорошо на Clion. Не чувствую себя чуханом, как на VS.
137 1133124
Тупой вопрос, но почему в числах с плавающей запятой запятая плавает? Куда блядь она плавает?
138 1133129
>>33116
у тебя с головой проблемы, если ты себя чувствуешь чуханом
140 1133273
>>32974
его ценой
Ты забыл добавить. Решарпер для крестов продается только в Ultimate-версии, которая стоит пиздец как дорого, если уж о ценах речь зашла
141 1133367
>>33273
Решарпер для крестов продается отдельно, лол. 200 баксов для конторы, 100 для себя.
142 1133371
>>32974

>решарпер


Visual Assist - наше всё.
143 1133491
>>33367
Ох ты, не знал. Круто, но для дома я предпочту использование пиратского сервера ключей
144 1133569
>>33129
Только на VS
145 1133946
https://ideone.com/G38I0c
Подобная реализация возведения в степень - говнокод?
146 1133954
147 1133956
>>33954
воднустрочкужыыыы
148 1133961
>>33946
За такое надо пиздить ногами.
149 1133970
>>33961
Почему? Надо на if заменить вопросы?
150 1133976
151 1133977
>>33970
https://ideone.com/9VwwEe
Лучше читается, как думаешь?
152 1133979
>>33977
Отрицательные степени?
153 1133983
>>33970
1. Алгоритм быстрого возведения в степень придумали чуркобесы?
2. Нахуй тебе рекурсия глубины power, да ещё и нехвостовая?
3. Не используй тернарный оператор, пока не научишься в форматирование.
154 1133992
>>33979

>Отрицательные степени?


https://ideone.com/9VwwEe
Но теперь уже тоже говнокод, а вообще >>33983 этот господин все верно написал, нахуй нужна именно рекурсия, хотя если это просто задачка какая, то ладно.
155 1133993
>>33983

>нехвостовая


Зачем?

>быстрого возведения


Для умников и пидоров.
156 1134001
>>33993
Стек - не твоя баба.
157 1134023
>>33993
У меня баб куча.
ОП КОКОЙ КОЛОМБУР
158 1134024
На плюсах работы больше чем на питоне?
159 1134026
>>34024
А ты шутник
160 1134027
>>34026
Меньше что ли?
161 1134030
>>34023
Выходит у тебя баб нет, а только есть указатели на них?
162 1134033
С++ ДЛЯ ЛОХОВ.
163 1134034
>>34027
На https://www.indeed.com забанен ?
164 1134084
>>33992
https://ideone.com/rU520r
Как-то так.
пидор и умник
165 1134085
>>34084
Сколько лет стажа?
image.png397 Кб, 1920x1080
166 1134090
>>34034
Проиграл что-то.
167 1134091
>>34085
3 года лаб
168 1134109
>>34091
Сильно.
169 1134130
>>31086
Неплохо.
170 1134132
>>34090
21 век
171 1134164
>>34033

>ЛОХОВ


Хаха, да я зарабатываю 30 тысяч рублей в ДС. Пуфонисты соснули

> ЛОХОВ


Соснул я :(
172 1134176
>>34164
А я зарабатываю 250 тысяч рублей в ДС. Соснули все.
173 1134184
>>34176
Ура! Все у всех соснули.
Мы все на ВТОРОМ месте!
sage 174 1134211
>>31086

> сложить


Использовать || уже слишком сложно?
175 1134228
>>34211

>если больше одной переменной стоят в true, то завершать программу


>больше одной


>Использовать ||


Земля тебе пухом.
мимо
176 1134270
>>34164
У меня работа, что и на плюсах и на питоне кодю.
177 1134394
https://github.com/eggman/ldacenc/blob/master/ldacenc.c
Поясните насчёт этого файла, как он работает? Можно ли сделать decoder
178 1134407
Сам, крестаны. Решил вкатится в плюсы, посоветуйте какого-нибудь чтива про stl, а то в шапке какое-то старье из начала нулевых.
179 1134419
>>34407
Effective STL. Осилишь это - уже хорошо
180 1134440
>>34419
Я про нее и говорил. Не слишком старая?
181 1134442
>>34440
как будто в стл с тех пор что-то изменилось. Как степанов написал, так и пользуемся до сих пор.
182 1134468
>>34440
Освой хоть на каком-то уровне, пойми дизайн СТЛ. И потом уже сам по cppreference догонишься
183 1134508
>>34442
Много чего изменилось.

>>34440
Старая. Почитай для общего развития, а потом прочитай Effective Modern C++.
oxx.mp4253 Кб, mp4,
1280x720, 0:01
184 1134550
>>34508
Я к тому, что эти книги по стл как фундаментальный матан, врядли когда-то устареют. это классика блять
185 1134620
Есть какой-нибудь достопочтенный господин, готовый помочь мне разобрать 2к строк кода?
Большая часть кода — это огромный однородный свитч, так что реального чтения там намного меньше.
Писал эту портянку не я, но мне надо внести туда изменения и пересобрать. Проблема в том, что там есть некая UB-дыра, приводящая к segfault под линуксом, но нормально работающая под виндой.

Возможно, чей-то опытный глаз поможет быстрее определить проблему.
herpderp[1].jpg189 Кб, 1415x1500
186 1134641
Как комбинацией клавиш в КЛИОНЕ зделоть, чтобы он сам расставил правильные пробелы в моем говнокоде? Настройки всего дефолтные.
187 1134645
Двач, не могу понять частичную специализацию шаблона, может кто объяснить что это и зачем нужно? Или может быть у вас найдётся доступный пример?
188 1134676
>>34620

> приводящая к segfault под линуксом, но нормально работающая под виндой.


Худшая система снова обоссана
189 1134682
>>34676
Ну толсто же.
190 1134688
>>34641
Ctrl-alt-L
191 1134698
>>34676
Ну так подебажь. А, постой, у вас же консольный кусок залупы вместо дебаггера
192 1134866
>>29255 (OP)
Здарова, котаны. Студент-почти-второкурсник итт.
Выбрал своим профилем кресты, посмотрел требования на hh и появился ряд вопросов
1) Под какой осью сидеть/ разрабатывать?
2) Насколько большая разница между кодингом под никсы и форточки?
3) Когда осилю Страутструпа , в какую сторону копать?
4) Классика вопросов для джуна? Два стула, какие библиотеки?
193 1134922
>>34866

>Выбрал своим профилем кресты


худшее решение в твоей жизни с точки зрения будущего
хуже наверное только начать ставится герычем по вене
194 1134936
>>34866
1. Винда\Студия.
2. Разница огромная, у красноглазых ублюдков нет нормальных тулзов. Щас бы в 2018 пердолиться в сосноли.
3. В любую другую, чем дальше от С++, тем лучше.
4. Любые, главное, не С++ные
Аноним 195 1134958
>>33946
1) Вложеный тернарный оператор говно, особенно в одну строку.
2) У тебя одинаковое условие в подоператорах и одинаковый исход для false.
3) Рекурсия с хуй знает каким числом вложений - это охуеть.
4) сукоблядь, в большинстве процессоров с FPU есть инструкция для этого! В стдлибе есть функция для этого!
>>34620
Аноним 196 1134960
>>34620
Могу попробовать.
>>34645
Это один из методов описания шаблона в целом. Частичная специализация может быть описана для произвольного условия, при выполнении которого она будет использоваться.
197 1135035
>>34936

> Разница огромная, у красноглазых ублюдков нет нормальных тулзов. Щас бы в 2018 пердолиться в сосноли.


Кому пиздишь тут? Есть нормальный qt editor.
198 1135046
>>35035
Говна кусок твой qtCreator.
199 1135181
>>34936
1. Пользоваться обосранной системой и обосранным ide от индусов, проиграл.
200 1135182
>>34936
3. Дальше от лучшего и безальтернативного языка, а этот школьник в ударе сегодня.
201 1135197
>>35181
Хуево, когда у тебя все обосраное. Но ты продолжай из сельского толчка вещать, с тобой весело.
202 1135338
>>33946
Ебаный пиздец.
203 1135345
>>34960
Отправил на почту.
204 1135347
>>35345
А нет, не отправил, давай другую почту.
205 1135352
>>35347
>>35345
Теперь отправил.
206 1135381
Плюсаны, посоветуйте литературу по написанию высокопроизводительного кода на плюсах. Сам шарпист, но сейчас понадобился DLL на кроссплатформенных плюсах для Xamarin.
207 1135480
>>35381
В шапке все есть
sage 208 1135501
>>34866

> 1) Под какой осью сидеть/ разрабатывать?


Это требования проекта, а не твой выбор.

> 2) Насколько большая разница между кодингом под никсы и форточки?


Если писать хорошо, то никакой. Иначе будешь чинить под другой осью.

> 3) Когда осилю Страутструпа , в какую сторону копать?


Копай шапку дальше

> 4) Классика вопросов для джуна? Два стула, какие библиотеки?


Копай шапку
209 1135823
https://ideone.com/SiQOk2
Задания обрезать первый символ в строке и засунуть новую строку в переменную a. Сделал через memcpy. Как можно там автоматизировать 3 аргумент с количеством копируемых байт? Шоб через sizeof. Помогите, пожалуйста:3
210 1135946
>>35823
Первое правило треда: лабы идут на хуй
Второе правило треда: остальные языки идут на хуй
211 1136064
>>35035
QtCreator уебищное говно, а все кто в нем пишет - умственные инвалиды. Вообще все qt несвежая подзалупная смазка. Сука вот же ебучий фреймворк, заставили на новой работе на этом говне писать.
Тру крестобляди, вы согласны? Может создадим тред унижения qt-дебилов?
212 1136081
>>36064
А что насчёт Clion? Или ты за создание только программ под одну платформу? Windows конечно же
213 1136086
>>36081
Нет я уже давно угорел по кроссплатформе.
Но вот только дестопные приложухи лучше уж на джаве какой нибудь писать.
А как студия разработки кроссплатформенных либ - очевидный Clion, да.
Хотя недавно открыл для себя https://nuclide.io/ и https://buckbuild.com/, просто ульмитативное ультракроммплатформенное решение.
Ну вот пришлось из-за кучи легаси писать либы с использование qt (не ui), это пиздец, ну есть же boost ребята. Для асинхронности - boost::asio, он скоро въедет в стандарт, а qt - тухлое несвежее дерьмищще.
214 1136350
Есть у меня одна идея. Абсолютно тривиальная хуета. Но я уже долгое время пытаюсь понять, как внутренние компоненты будут взаимодействовать друг с другом. И всё гавно какое-то. Мне уже кажется, что нахуячить монолитный код это нормально.
Книги на амазоне, что я видел, это вода о воде. Статьи всякие про декомпозицию читал. Когда читаешь, это кажется так легко. А потом делаешь сам и ловишь рейдж.
Помогите, или я поеду. Может есть какая нормальная книга, чтобы даже такой даун, как я, просветлился.
215 1136426
>>34550
Refactoring Фаулера почитай. А лучше начинай писать, в процессе хождения по граблям сам до всего дойдешь.
216 1136496
>>36350
Отталкивайся от глобальных паттернов и потом начинай декомпозицию к более локальным. Для первого случая советую к прочтению Pattern Oriented Software Architecture, да и для остального тоже. Одна из самых годных серий книг по паттернам в архитектуре приложений.
217 1136497
Можете посоветовать какой-нибудь интересный проект, который будет делаться неделю-месяц и поможет в процессе освоить плюсы и библиотеки std? В вузе задали самому выбрать задание, а идей нет. На плюсах учусь писать около полугода, основы знаю.
218 1136503
>>36497

>std


stl. На всякий случай поправлю, а то мало ли.
219 1136537
Сап проганы.
Есть ли смысл использовать в качестве аргумента функции std::shared_ptr<Someclass> someobj, если для Someclass определен move constructor?
Т.е., чтобы в некоторых случаях не писать
somefunc(std::make_shared<Someclass>(args));
, а писать
somefunc(Someclass(args));
когда я хочу сэкономить на памяти и вызовах всяких конструкторов копирования, при передаче объекта через несколько функций подряд.
220 1136705
Есть ли хоть сколько-нибудь ощутимая польза от noexcept? Или это всё просто хороший тон?
221 1136706
>>36705
Есть. Подробности в Effective Modern C++
222 1136708
Посоны, даю LsaEnumerateAccountRights корректный сид, полученный через NetUserEnum, но она почему-то отвечает мне ERROR_FILE_NOT_FOUND. Запускаюсь под админом, возвращает ошибку, когда пытается получить привилегии обычного пользователя (в этом случае, когда пытаюсь получить свои привилегии).
В чем может быть проблема?
223 1136714
>>36706
Ага, спасибо, действительно, там есть целая глава про это.
224 1136715
>>36708
Где-то пишут, что это означает, что у пользователя не привилегий, но посмотрел через "whoami /priv", пишет, что есть.

>>36708 - кун
225 1136732
>>36537

>, а писать


> somefunc(Someclass(args));


В этом случае конструктор тоже будет вызван. Если ты хочешь создать объект из нихуя (только из аргументов) то move constructor никак не поможет.

> при передаче объекта через несколько функций подряд


Создание копий std::shared_ptr будет скорее всего быстрее чем вызовы move constructor (так как std::shared_ptr в большинстве случаев будет меньше чем остальные классы). Как-то ускориться можно только через allocate_shared - чтобы не дергать кучу, зависит от ситуации, может и нихуя не помочь, а то и замедлить.
226 1136751
>>36732
шаред птр там на каждое копирование каунтеры на атомиках инкрементирует и проверки делает, что конечно легкая операция, но не бесплатная, может и не быстрее move быть
227 1136775
>>36732

>В этом случае конструктор тоже будет вызван. Если ты хочешь создать объект из нихуя (только из аргументов) то move constructor никак не поможет.


Ну я имею в виду, что в случае вот такого кода и наличия move constructor для Someclass:

// тут вызывается обычный конструктор, потом move constructor при передаче аргумента в функцию do1
do1(Someclass(obj));

void do1(Someclass obj)
{
// move constructor при передаче аргумента в функцию do2
do2(obj);
}

void do2(Someclass obj)
{
// move constructor при передаче аргумента в функцию do3
do3(obj);
}

void do3(Someclass obj)
{
// move constructor при передаче аргумента в функцию do_final
do_final(obj);
}

Таким образом за всю цепочку вызовов функций (do1 -> do2 -> do3 -> do_final), обычный конструктор вызывается 1 раз, а все остальные разы move constructor.
Я прав? Не знаю, понятно ли написал, лул.
Просто я обычно использую в таких случаях std::shared_ptr, но писать std::make_shared<Someclass>() каждый раз довольно длинно, да и читать это не так удобно.
227 1136775
>>36732

>В этом случае конструктор тоже будет вызван. Если ты хочешь создать объект из нихуя (только из аргументов) то move constructor никак не поможет.


Ну я имею в виду, что в случае вот такого кода и наличия move constructor для Someclass:

// тут вызывается обычный конструктор, потом move constructor при передаче аргумента в функцию do1
do1(Someclass(obj));

void do1(Someclass obj)
{
// move constructor при передаче аргумента в функцию do2
do2(obj);
}

void do2(Someclass obj)
{
// move constructor при передаче аргумента в функцию do3
do3(obj);
}

void do3(Someclass obj)
{
// move constructor при передаче аргумента в функцию do_final
do_final(obj);
}

Таким образом за всю цепочку вызовов функций (do1 -> do2 -> do3 -> do_final), обычный конструктор вызывается 1 раз, а все остальные разы move constructor.
Я прав? Не знаю, понятно ли написал, лул.
Просто я обычно использую в таких случаях std::shared_ptr, но писать std::make_shared<Someclass>() каждый раз довольно длинно, да и читать это не так удобно.
13862724381740099112.jpg31 Кб, 702x240
228 1136805
Посоны! Нахуй нужны ссылки? С указателями всё понятно, это полезная и хорошая вещь чтобы крашить программу самым неожиданным методом.
Но нахуя ссылки? Они просто заменяются препроцессором на имя ссылочной переменной или как то по другому? Есть профит от использования ссылок, кроме как создания константного типа ссылки чтобы не покрашить данные случайно?
229 1136811
>>36805 алсо, лет 10 назад забил на вышку на втором курсе. На сишнике писал успел написать одну тупую лабу. Так вот, с той поры С++ обновил две, а то и три версии. Можно в двух словах, разница кардинальна или просто новых функций в стандартные библеотеки понапихали.
Про ссылки вот я кстати не помню, были они в С++99 или нет.
230 1136817
>>36805
Ссылка это автоматически разыменовываемый указатель. Профиты те же самые.
231 1136872
>>36805
ссылка ощутимо "безопаснее" чем указатель, за счет того, что не может быть нулем. А висячую ссылку сделать сильно сложнее, чем кривой указатель.
232 1136881
>>36775

> вызывается 1 раз, а все остальные разы move constructor


Да

> std::make_shared<Someclass>() каждый раз довольно длинно


Если под "каждый раз" ты подразумеваешь один раз на цепочку вызовов, то да. Если рассматривать именно со стилистической точки зрения то использовать смарт поинтер может быть действительно не совсем правильно. std::shared_ptr нужен для того чтобы гранить указатели на объект в нескольких местах, с автоматическим контролем за использованием. Просто передача объекта по цепочке вызовов не совсем использование по прямому назначению. Лучше передавать просто объект и надеяться на оптимизации. Может в будущем компиляторы смогут вообще оптимизировать эту хуйню, так чтобы никаких мув конструкторов не вызывалось (они то в принципе нахуй не нужны). Но по эффективности это примерно одинаковые подходы. Асло, есть же еще std::unique_ptr - я где-то читал что компиляторы во многих случаях способны оптимизоровать std::unique_ptr так что у него вообще нет накладных расходов, незнаю насколько это правда - но он может оказаться эффективней.
233 1136884
>>36497
Бамп.
234 1136900
>>36817
>>36872
А вот ещё спросить хотел тип bool в новых редакциях имеет автоматическю защиту от переполнения?
235 1136913
>>36881

>Асло, есть же еще std::unique_ptr - я где-то читал что компиляторы во многих случаях способны оптимизоровать std::unique_ptr так что у него вообще нет накладных расходов, незнаю насколько это правда - но он может оказаться эффективней.


Я изначально его и попытался заюзать, но в моем компиляторе был какой-то косяк, поддержка shared_ptr была, а unique_ptr не было или типа того. Ну, это давно было.
Поэтому заюзал shared_ptr, чтобы не греть голову по поводу своевременного освобождения памяти.
236 1136951
>>36900
От какого переполнения?
bool++ - так делать просто не надо и все. Скорее всего даже варнинг схватишь.
237 1137037
class B {
explicit B(int a);
};
class A : public B
explicit A(int a, int c);
};

A::A(int a, int c)
: B(a) // 1
{
DoSomeShit(a); // 2
B(a);
}

Можно ли сделать, чтобы конструктор предка вызывался не перед вызовом конструктора, а после? Без аггрегации
238 1137044
>>37037
Нет. Предок должен быть полностью сконструирован перед тем как конструируется потомок.
image.png256 Кб, 1920x1080
239 1137406
Что значит int? То есть это указатели на указатель?
240 1137409
>>37406
Да но зачем
241 1137413
>>37409
Динамический массив.
242 1137447
>>37413
Так и объявляй динамический массив.
243 1137452
>>37447
Ну я объявил.
244 1137453
>>37452
Пiчальна, чо.
245 1137456
>>37406
Удалил плохо.
246 1137458
>>37453
А что не так? Как правильно, сеньор?
247 1137475
>>37456
Надо циклом удалять сначала все строки массива, потом весь массив?
248 1137478
>>37475
У тебя десять массивов, которые являются элементами другого массива. Ты стер массив из десяти указателей на десять массивов, но те десять массивов по десять чисел в каждом всё ещё существуют.
image.png265 Кб, 1920x1080
249 1137480
>>37478
Вот так надо?
А вообще как я сейчас делаю, делают?
Или юзают векторы и тому прочее?
250 1137495
>>37480
Да, вот так.

Юзают, абсолютно верно - векторы, или std::array. Сырые владеющие указатели после 2011 года юзать запрещено.
251 1137498
>>37495

>запрещено


Почему? Утечки хуечки?
252 1137504
>>37495

>абсолютно верно - векторы, или std::array


А они же больше жрут ресурсы?
254 1137522
>>37518
Меньше что ли жрут?
255 1137523
>>37498
exception safety равный нулю. И да, человеческий фактор с утечками.

>>37504
std::array - жрет столько же сколько обычный массив на стэке.

vector - чуточку тяжелее. Но если ты будешь делать reserve\resize для пре-аллокации нужного количества памяти - то по производительности будет почти тоже самое
256 1137529
>>37523
Значит лучше array там где надо СКОРОСТЬ.
257 1137533
>>37529
лучше сначала профайлером пройтись, а потом уже на скорость дрочить.
image.png303 Кб, 1920x1080
258 1137537
Вот смотрите, если делать так, вместо using std::cout, то я буду пидором?
259 1137552
>>37537
да, будешь. Макросы в современном С++ использовать строжайше не рекомендуется, кроме для кроссплатформенной разработки ну или когда код шарится между кернел-модом и юзер-модом, как у меня на работе
260 1137553
Возможно ли в 2018 студенту устроиться стажёром с++ в ДС за еду? Или сразу идти учить джаву/sharp?
261 1137557
>>37553

> устроиться стажёром с++ в ДС за еду? Или сразу идти учить джаву/sharp?


ЦМС 1С, чекай
262 1137566
>>37553
С++ вообще такой язык, где нужны только мидлы и выше, а лучше вообще одни сениоры. Это не ангуляр-мартыха.
263 1137569
>>37566
Не рождаются же C++ кодеры мидлами. К тому же, на hh есть вакансии, где указано без опыта, но как-то подозрительно всё это. Что вообще в сейчас на крестах пишут?
264 1137570
>>37569
Без опыта != студент-интерн. Я собесил на вакансию "без опыта", приходили совсем нулевые дауничи. То, что у тебя нет опыта - это значит, что ты что-то заебись умеешь и знаешь.

Что пишут - я писал в разное время;
qt-парашу для железной дороги, сервер управления поездами для нее же, бэкенд-утилитки для хостинг панели, прошивку для роутера, сейчас пишу драйвер для винды.
image.png349 Кб, 604x604
265 1137573
>>37570

> То, что у тебя нет опыта - это значит, что ты что-то заебись умеешь и знаешь.



Да как так то. Ну знаю всякие основы ОС, сетей, алгоритмы, жму/пинусы с гитами и С++ на уровне базового курса, я нулёвый даунич?
266 1137583
>>37573

>


>Да как так то. Ну знаю всякие основы ОС, сетей, алгоритмы, жму/пинусы с гитами и С++ на уровне базового курса, я нулёвый даунич?



Знание алгоритмов и прочих основ не делает из тебя не говнокодера. Нужно иметь умение структурировать код и проектировать его, чтобы потом через полгода или год, тебя ногами не пиздили за то, что ты написал. Ну еще знание всяких жизненных ситуевин очень помогает. Опыт карочи.
267 1137592
>>37573
C++ на уровне базового курса == не подпускать к продакшен кодбазе на расстояние пушечного выстрела.
268 1137602
>>37583

> Чтоб получить опыт, нужно устроиться на работу, чтоб устроиться на работу, нужен опыт.


>>37592
Понял, пойду выпиливаться, спасибо за ответы.
269 1137611
>>37602

>Понял, пойду выпиливаться, спасибо за ответы.


Короче блять. Совет тебе. Пробуй делать хоть какие-то мизерные, но все же проекты. Со временем ты увидишь, что у тебя начинают возникать бойлерплейты и ты постараешься их избегать и изобретешь для себя паттерны, но пока ты ничего не понимаешь в этом, паттерны будут только во вред, потому что их нужно грамотно применять.
Попробуй написать какой-нибудь обменник сообщениями по TCP, потом улучшай, улучшай и улучшай. Переписывай все заново. Так и набивается опыт.
270 1137689
>>37611

> Попробуй написать какой-нибудь обменник сообщениями по TCP, потом улучшай, улучшай и улучшай. Переписывай все заново. Так и набивается опыт.



Спасибо за совет, няша. Родители уже гонят на работу, а на собеседования страшно идти. Может ещё успею, а то сейчас вообще тьма, депрессия и боль.
271 1137712
Так, а такой вопрос, возможно ли вообще проверять в шаблоне, что не было передано никакого параметра?

template<typename T, typename std::enable_if<
std::is_signed<T>::value ||
std::is_void<T>::value
,T>::type>
void f(T t = 0);

Можно ли вообще такое сделать валидным?
272 1137721
>>37712
обычная перегрузка?
273 1137722
>>37712
вдогонку - в вариадик шаблоне да, sizeof...(), а в обычном - только специализация\перегрузка и тд
274 1137727
>>37721
Можно, но хотелось, чтобы было одной функцией.
>>37722
Спасибо, почитаю.
275 1137880
Подскажите самый простой компилятор кода под Винду, чтобы ещё был без установки
276 1137885
>>37880
https://nuwen.net/mingw.html

если ты совсем маргинал - то www.cpp.sh
277 1138023
>>37495

>Сырые владеющие указатели после 2011 года юзать запрещено.


А мне норм.
278 1138025
Собираюсь полностью перейти с g++ на clang, какие подводные?
279 1138027
>>37885
Как всё сложно.
В никсе нажал две кнопки и уже собираешь.
280 1138040
>>38023
Лови сишника

>>38027
Если тебе архив сложно распаковать - ну, хуй знает, что тут сказать
281 1138045
Бля, как хуёво жить.
Не было доступа к родной пеке, быстро накатил dev-c++ на виндах, написал всё, прогнал тесты - всё ок.

Перегнал исходники на никсы, написал скрипт, который генерирует скрипт запуска по передаче 500+ аргументов в последовательных запусках. Где-то на сотом файле всё умерло. Ну, думаю, что-то упустил. Ручками запускаю с этим файлом под виндой - всё ок. Ручками запускаю в никсах - обрабатывает файл по кругу, не останавливаясь в eof, лог вырастает в гигабайт за 10 секунд.

Хуле ему надо.
282 1138056
>>38045
Нет, это, блядь, невозможно просто.

Шапка цикла: while(pos < length) {

Вывод в конце цикла:
[code]
code_length = length - pre_pos;
rintf("END OF FILE in %d bytes\n", code_length);
printf("length is %04x\n", length);
printf("pos is %04x\n", length);
[/code]

END OF FILE in 5 bytes
length is 0f5b
pos is 0f5b

pos больше не меняется. length больше не меняется.
После этого проверяется шапка цикла.
Под виндой ок, под никсами файл начинает обрабатываться заново (то есть pos = 0).
283 1138062
>>38056
Блядь.
284 1138067
>>38062
Разобрался, всем спасибо.
285 1138092
А в плюсы нормальный билд тул с менеджментом зависимостей подвезли или мне надо устанавливать либы в систему?
286 1138096
>>38092
vcpkg
287 1138114
>>37689

>Родители уже гонят на работу


>ещё успею, а то сейчас вообще тьма, депрессия и боль


зря ты решил в кресты инвестировать свое время
288 1138116
>>37553

>Возможно ли в 2018 студенту устроиться стажёром с++ в ДС за еду?


если совсем кратко, то в случае если ты учишься по профильной специальности, те на программиста, тогда, да, возможно
289 1138120
>>37523
все же различия между std::vector и std::array глубже рассуждений быстрее-медленней..
290 1138213
>>38096
А что-нибудь не для винды и не для vs?
image.png237 Кб, 1920x1080
291 1138238
АХУЕТЬ МОЖНО ЧТО ЛИ ТАК БЕГАТЬ ПО МАССИВУ? ЕБАННЫЙ В РОТ, ЭТО ТАК КРУТО ПРЯМ КАК ЧЕЧНЯ
292 1138263
>>38238
Ага, оно ж по порядку лежит.
293 1138270
>>38263
Есть профит от такого способа?
294 1138308
>>38270
Это одно и тоже, просто квадратные скобки - это синтаксический сахар для читаемости кода, особенно, когда у тебя двух-, трех- и т.д. мерный массив через указатели совершенно нечитабельно. А так компилятор генерирует абсолютно один и тот же код. Пруф: https://godbolt.org/g/5oxxc6
295 1138339
>>38067
Что сделал то?
296 1138357
Чому биты представляют не в десятеричной системе исчисления?
image.png244 Кб, 1920x1080
297 1138358
Пацаны, клевый код?
298 1138359
>>38357
Нахуя, если у него два положения?
299 1138360
>>38358
Сильный.
300 1138361
>>38359
Чтобы ты вопрос задал.
301 1138363
>>38308
Прости, что доебываю, но у меня вопрос. Массив же состоит из элементов типа int? Почему тогда при смещении адреса указателя на единицу выдается другое число? По идее же, должно быть смещение адреса на 4.
Выходит, в массиве хранятся указатели на числа по которым можно так проходить?
302 1138374
>>38363
Вот, что написал Прата в "Языке программирования С": "добавление
1 к указателю" означает добавление одной единицы хранения. Для массивов данный
факт означает, что адрес увеличивается до адреса следующего элемента, а не просто
до следующего байта. Это одна из причин того, почему нужно объявлять
вид объекта, на который указывает указатель. Одного лишь адреса недостаточно, т.к.
компьютер должен знать, сколько байтов требуется для хранения объекта.
303 1138396
>>38374
Норм книга? Стоит почитать под пивас?
304 1138397
>>38374
Спасибо большое. Добра тебе.
305 1138400
>>38374
Если я указал int, то он по байту будет прибавлять значит?
306 1138411
>>38396
Не знаю, многовато воды и совершенно неинтересные упражнения, но очень подробно все объяснено, так что решай сам.
>>38400
Будет прибавлять к адресу sizeof(int) байт. Стандарт не гарантирует, что это будет 4 байта, но, как правило, это именно столько. Чтобы прибавлять по байту нужно сделать приведение в Си-стиле к указателю на char.
307 1138469
Не тренировался на крестах где-то год. Переустановил lubuntu 16.04 установил g++ geany. Открыл файлики( типа a.cpp b.cpp c.h) с учебника праты и получаю ошибки undefined reference. Помню раньше надо было открыть и нажать сборку именно на том файле где есть функция int main, сделал именно так, всё равно таже ошибка. Пробуюв консолечке g++ a.cpp b.cpp -o a всё норм работает. Понимаю что почему-то geany теперь не хочет автоматом подхватывать второй файл b.cpp (c.h он должен вставить ведь он заинклюжен). Как исправить?
308 1138475
>>38358
замени на 'new long long'
309 1138476
>>38469
я нихуя не понял, но .cpp файлы надо руками указывать, а хедеры "подцепятся автоматически" (препроцессор их хуйнет текстом в cppшники)
310 1138479
>>38476
Может и я чето подзабыл, может и не было такой функции в geany чтоб *.cpp подхватывались сами
311 1138482
>>38479
я не знаю, что такое geany, но абсолютно точно уверен, что .cpp нужные надо вручную перечислять
312 1138528
>>38238
Ща я тебе мировосприятие сломаю. Попробуй cout<<2[andron];
313 1138597
Анчоусы, а вообще описывать метод вне класса, а в классе оставлять онли прототип функции - это норм? Как по мне - это ухудшает понимает понимание кода и читаемость в разы. Нахуй оно вообще нужно, можете объяснить?
<пример. где такая хуйня встречается https://pastebin.com/Qstf02Wv
314 1138609
>>38528
Зачем ты так с неокрепшим умом...

>>38238
Анончик, если уж занялся изучением плюсов, то дам пару советов:
1. Создавая проект в Visual Studio, создавай "Пустой проект". Тогда, у тебя не будет лишних файлов в твоем проекте по типу stdafx и иже с ними. Плюс уберутся лишние флаги к компилятору, суть которых ты не будешь понимать еще пару лет.

2. Изучая разделы плюсов, отвади по 1-2 дня на каждый раздел, нарешивая задачки. Или придумай задачку по-крупнее (написать консольный калькулятор, игру в слова, крестики-нолики, решить квадратное уравнение, запилить класс Matrix для матричных вычислений и т.п.)

3. Даже не пытайся запилить игры. Minecraft ты не напишешь еще очень долго. Могут уйти годы. Причем, minecraft это пожалуй один из немногих проектов, которые вмещаются в одну голову, все дальше только командная разработка, готовые фреймворки (Unity, UE4, CryEngine и т.п.).
Gamedev это вообще, глубокая область. Тебе придется разобраться в матане, графических библиотеках, работе со звуком, работа с артефактами (ассетами), разобраться как работает GPU (что такое Vertex Shader, Fragment Shader, Computer Shader и т.п., Shader buffer и т.п.). Плюс тут еще много подводных камней касаемых target platform, drivers, deploying, native OS API, hardware, build (dynamic linking vs static linking). Понятно, что тут еще будет накручен сбоку VCS, и всякие гиты ты должен будешь знать как пять пальцев. Это Single Player Game.
Если игра будет Multi-player specific, то нужен будет чувак, который еще шарит в сетях, сетевых протоколах, знает про то как мониторить и тестировать RPS, будет знать в каких БД хранить инфу о пользователях и т.д и т.п....
Еще можно долго писать про наличие Художника, Звуковика, Сценариста.
_______
Если хочешь для себя сделать что-то не сложное и за короткие сроки (пару месяцев, год). То бери только готовые решения - Unity (C#), UE4 (Blueprints, C++), м.б. какой-нибудь GameMaker. (GoDot не трогай, там много нюансов).

4. Если не планируешь изучать в дальнейшем английский, хотяб на уровень B1, C2, то спецом ты НЕ станешь однозначно. В доках ты ничего прочитать не сможешь - инфа 100%. Статьи ты будешь понимать коряво, а не то что пытался передать автор. И т.д.

5. (Если знаешь EN, или хотяб планируешь его изучать). Начинай смотреть канал - TheCherno (https://www.youtube.com/channel/UCQ-W1KE9EYfdxhL6S4twUNw). Отруби русский язык везде, где только возможно. Телефон и Компьютер на анг. поставь. Каждый день пытайся проговаривать в слух все что говорят Англоговорящие с youtube.

6. Держи в голове поговорку: "Повторение - мать учения". Также следуй принципу: "Все решения доводить до конца". Старайся концентрироваться на задаче/проблеме. Хотя, пох, можешь не следовать им, все равно через пару лет ты к ним придешь. Не всё сразу....

7. Старайся мыслить своей головой, и лишь затем пользоваться готовым решением.

Думаю к остальному, что я здесь не перечислил ты сам придешь или столкнешься в скором времени.
______________
П.С. Сам 23 лвл. Играл лет 10 в дотку и лол, а потом захотелось создать игру.
За 5 лет, так игру и не создал, зато прочитал 20 книжек по программированию. Узнал кучу полезной и бесполезной инфы. И еще 10000 статей с хабра и прочей фигни. По-работал по 2+ лет на каждой из популярных ОС.
Похоронил для себя C++ и перешел в web (пару лет назад) - мучу RESTful сервисы.
314 1138609
>>38528
Зачем ты так с неокрепшим умом...

>>38238
Анончик, если уж занялся изучением плюсов, то дам пару советов:
1. Создавая проект в Visual Studio, создавай "Пустой проект". Тогда, у тебя не будет лишних файлов в твоем проекте по типу stdafx и иже с ними. Плюс уберутся лишние флаги к компилятору, суть которых ты не будешь понимать еще пару лет.

2. Изучая разделы плюсов, отвади по 1-2 дня на каждый раздел, нарешивая задачки. Или придумай задачку по-крупнее (написать консольный калькулятор, игру в слова, крестики-нолики, решить квадратное уравнение, запилить класс Matrix для матричных вычислений и т.п.)

3. Даже не пытайся запилить игры. Minecraft ты не напишешь еще очень долго. Могут уйти годы. Причем, minecraft это пожалуй один из немногих проектов, которые вмещаются в одну голову, все дальше только командная разработка, готовые фреймворки (Unity, UE4, CryEngine и т.п.).
Gamedev это вообще, глубокая область. Тебе придется разобраться в матане, графических библиотеках, работе со звуком, работа с артефактами (ассетами), разобраться как работает GPU (что такое Vertex Shader, Fragment Shader, Computer Shader и т.п., Shader buffer и т.п.). Плюс тут еще много подводных камней касаемых target platform, drivers, deploying, native OS API, hardware, build (dynamic linking vs static linking). Понятно, что тут еще будет накручен сбоку VCS, и всякие гиты ты должен будешь знать как пять пальцев. Это Single Player Game.
Если игра будет Multi-player specific, то нужен будет чувак, который еще шарит в сетях, сетевых протоколах, знает про то как мониторить и тестировать RPS, будет знать в каких БД хранить инфу о пользователях и т.д и т.п....
Еще можно долго писать про наличие Художника, Звуковика, Сценариста.
_______
Если хочешь для себя сделать что-то не сложное и за короткие сроки (пару месяцев, год). То бери только готовые решения - Unity (C#), UE4 (Blueprints, C++), м.б. какой-нибудь GameMaker. (GoDot не трогай, там много нюансов).

4. Если не планируешь изучать в дальнейшем английский, хотяб на уровень B1, C2, то спецом ты НЕ станешь однозначно. В доках ты ничего прочитать не сможешь - инфа 100%. Статьи ты будешь понимать коряво, а не то что пытался передать автор. И т.д.

5. (Если знаешь EN, или хотяб планируешь его изучать). Начинай смотреть канал - TheCherno (https://www.youtube.com/channel/UCQ-W1KE9EYfdxhL6S4twUNw). Отруби русский язык везде, где только возможно. Телефон и Компьютер на анг. поставь. Каждый день пытайся проговаривать в слух все что говорят Англоговорящие с youtube.

6. Держи в голове поговорку: "Повторение - мать учения". Также следуй принципу: "Все решения доводить до конца". Старайся концентрироваться на задаче/проблеме. Хотя, пох, можешь не следовать им, все равно через пару лет ты к ним придешь. Не всё сразу....

7. Старайся мыслить своей головой, и лишь затем пользоваться готовым решением.

Думаю к остальному, что я здесь не перечислил ты сам придешь или столкнешься в скором времени.
______________
П.С. Сам 23 лвл. Играл лет 10 в дотку и лол, а потом захотелось создать игру.
За 5 лет, так игру и не создал, зато прочитал 20 книжек по программированию. Узнал кучу полезной и бесполезной инфы. И еще 10000 статей с хабра и прочей фигни. По-работал по 2+ лет на каждой из популярных ОС.
Похоронил для себя C++ и перешел в web (пару лет назад) - мучу RESTful сервисы.
315 1138614
>>38597
нет, не норм. Потенциальное замедление компиляции - плюс в наших петушиных кругах принято отделять интерфейс от реализации
316 1138615
317 1138619
>>38597
Похоже на пример из Лафоре.

Это чувак посмотри на мой пост, там я канал посоветовал где, все очень хорошо объясняется:
>>38609
318 1138635
>>38614
>>38619
Спасибо)
319 1138644
>>38609

>Даже не пытайся запилить игры


Я уже сделал гениальные крестики-нолики и арканоид... Дороги назад нет?
320 1138649
>>38528
Как так? Почему это работает?
321 1138659
>>38649
a это (a+b). b[a] это (b + a).

Догадался?
322 1138660
>>38659
ебаный двач звездочки перед круглыми скобками сьел
323 1138664
>>38659
Ага
a[5]==(a+5)==(5+a)==5[a]
324 1138665
>>38659
АХУЕТЬ. ЕБАТЬ СПАСИБО. АХ ВОТ КАК КВАДРАТОСКОБКИ РАБОТАЮИТ.
325 1138666
>>38660
>>38664
Лол, та же хрень. Короче ты понял
326 1138676
>>38644
Если тебе интересна эта тема (gamedev), то развивайся конечно!!
Просто сделать что-то большее чем minecraft в одного будет почти нереально, если ты конечно не со школьлной скамьи фигачил лин.алг, computer science и т.п.
Арканоид - норм. Если прям шаришь, в том что сделал и все понимаешь, и можешь уместить весь проект в голове, то пробуй что-то большее. А если нет, то смотри в сторону UE4.

Лично, я дальше 2д поделок не смог уйти. Теперь понимаю, что нужно было в школе учить косинусы, тангенсы и нарешивать всякие СЛАУ. Щас, уже времени нет на все это, да и голова не свежа.

У тебя память кстати норм? Родичи заставляли в свое время учить стихи и прочее?
327 1138691
>>38528
ЕБАТЬ МОЙ ХУЙ
328 1138693
>>38676

>2д поделок


Как будто что-то плохое.
Жаспер Брин же смог в Lone Survivor, например.
329 1138726
Господа байтобоги, пытаюсь разобраться с Cmake на примере одного опенсурс проекта, но что-то нихуя не выходит, чувствую только боль и унижение. Вечно какие-нибудь субдиректории не так подключаться/не найдуться и т.д. Куча магических переменных, пзц. Есть ли какая-нибудь годная книга по этой системе сборки, чтобы все аспекты сразу пояснили?
330 1138733
>>38726
Начните с корневой директории. Всего доброго.
331 1138737
>>38676

>У тебя память кстати норм? Родичи заставляли в свое время учить стихи и прочее?


С памятью все хорошо. В школе много зубрил всякой терминологии гуманитарной.

>Теперь понимаю, что нужно было в школе учить косинусы, тангенсы и нарешивать всякие СЛАУ. Щас, уже времени нет на все это, да и голова не свежа


Насколько нужен сильный уровень математики? Если он чуть выше/равен школьному, то сойдет?

>UE4


Мне почему-то удобнее работать с SDL. Уеч слишком монструозен.
332 1138774
У С++ вообще есть перспективы или скоро всему настанет пиздец и нужно будет всего полтора специалиста, поддерживающих древее говно? Есть смысл перекатываться в нейронки или ещё куда?
333 1138775
>>38664
Вот коммутативность такой операции нихуёвый такой брейнфак
334 1138794
>>38774
Если перекатываться, то только в веб.
image.png237 Кб, 600x600
335 1138812
336 1138817
Есть на С или крестах нормальные serverless базы данных? Про SQLite знаю, там Decimal всратый.
337 1138841
Господа, делаю задачи из учебника Лафоре застрял. Не пойму в чем проблема. Признателен буду за помощь.
https://pastebin.com/4vzmApEi
338 1138844
>>38733
Слишком сложно для меня. Много нерелевантной инфы.
https://github.com/mapsme/omim/blob/master/CMakeLists.txt
Я хочу скомпилить только нужный мне кусок.
https://github.com/mapsme/omim/blob/master/qt/CMakeLists.txt
Но как я не ебусь с этими мэйклистами нихуя не выходит, постоянно какая-нибудь хуитка не находиться.

1.Можно ли в cmake как то добавлять префиксы для инклюдов в исходниках?
Т.е. если у меня huilta1.hpp и huita2.hpp чтобы между собой в коде писать не #include "huita1.hpp", а #include "PREFIX/huita1.hpp"?
2.Можно ли как-то вывести список всех директорий, которые подключаются к проекту?
3.Можно ли то же самое сделать для всех файлов?
339 1138910
>>38737
Память это core resource. Успех интеллектуальной деятельности от нее слишком сильно зависит. Мне вот не повезло, я прочитал от силы 3 книги за всю школу и выучил "Бородино". Теперь, вот даже не получается запомнить функции фреймворков с которыми работаю, каждый день. Всегда держу откртыми доки и стак.

Углубленный матан нужен, если ты пишешь с нуля физический движок. (движение частиц, упрогость объектов, кинематические функции для скелетов гуманойдов, баллистические уравнения и т.п.), все это нужно будет быть способным понять и реализовать.

Конечно есть готовые либы и функции на github, в частных блогах, книгах.
Если с матаном будет не очень складываться, то тогда только готовые движки, либы и т.д. Ну хотя, может с школьными знаниями (геометрия, тригонометрия, лин.алг) дейсвительно можно делать примитив на уровне 2Д платформеров и др. жанров.
340 1138911
>>38910

>3 книги за всю школу и выучил "Бородино"


Ничего себе. У нас в школе палками пиздили если ты не читал и не учил.

Спасибо за ответы вообще. Ты сам почему с плюсов ушол?
341 1138914
>>38910

>если ты пишешь с нуля физический движок


Можно про вот это по-подробнее? Как их вообще пишут? На OpenGl и DirectX?
342 1138915
>>38841
В проверке символа ты делаешь переприсваивание. поставь ==
343 1138919
Какой же вас язык лаконичный! Такой простой, изящный и прямолинейный! И главное, он всегда делает то, что ты задумывал. Никаких подвохов!
344 1138926
>>38919
Как будто где-то жизнь проще.
345 1138930
>>38926
Всяким пыхаблядям, джаваскриптопидорам и питонистом проще.
346 1138938
>>38774
C++ активно используется в яндексе и мейле из русского. В Фейсбуке, Гугле, Майкрософте, Амазоне из зарубежного.

Я ответил на твой вопрос?
347 1138939
>>38911

>>Ты сам почему с плюсов ушол?


0. Ну про память я тебе написал свою. Как рыбка Дори =).
1. Слишком долго разбирался в тонкостях языка и его экосистемы, как итог - просто перегорел, стало даже тошнить от расширения файлов cxx, cpp и тд. Теперь понимаю, что нужно было искать работу после двух лет изучения (и идти пусть даже стажером). Пожалуй, основная причина. Все-таки, на старте нужна хоть какая-то отдача. Если то, чем ты знаимаешься не приносит тебе денег в течение года, то что-то тут не так..
2. Интерес к основным штукам для которых предназначен сейчас C++ - у меня пропал. (Embedded, gamedev, ROS, OS, "SUPER ULTRA HIGH PERFORMANCE SYSTEMS", и т.п.) - эти области Мне более неинтересны.
3. Архаичность. Когда имеешь дело с C++, то нужно всегда помнить про тонкости и хаки чистого C. Количество подходов к тому как писать либы и код, менялось более 40 лет, отсюда слишком разная структура у third party либ. Каждый раз нужно разбираться, как inject-ить либу в проект, потом настривать compiling, linking, building. Всегда нужно читать все header файлы. Ибо может быть какая-нибудь особенность конкретной либы. Порядок подключения хедеров, тоже иногда может быть важен.
4. Просто выпишу из своего дневника пару минусов:
- Total absence of Unified Package manager
- Total lack of Unified Best Practices
- Exuberant Syntax, therefore it has Poor Readability && Many ways to solve a problem
- If you write C++ code, then you need understand old C code. Because C++ founded on top of C.
- Hard to configure IDE or code editor to make a builds. Real good IDE is just for Windows.
- Dependency Injecting is so fucken mindgames. You always need to read source code and headers to understand library specific traps and pitfalls.
- (RAII) Manual work with memory allocation/deallocation. (OFC if you work with C++ approx 5 years, then you know about SMART POINTERS), but this approach has overhead, and decrease performance of target system.

В целом я рад, что начал в свое время с C++. Мир веба, кажется теперь простым детским садиком.

"Куда ушел?"
Веб. Здесь гораздо проще людям с памятью рыбки "Дори". Программирование, как таковое выливается в чтение доков, а затем примение какого-то готового шаблона из фреймворка. Почти что декларативный стиль программирования. Ситуаций, когда ты можешь что-то сломать на уровне логики - очень мало.

>>38914

>>Можно про вот это по-подробнее? Как их вообще пишут? На OpenGl и DirectX?


Да это обыкновенный набор cpp, h, c, cxx, hpp, dll, lib, dll.lib, so и д.р. файлов.
В этих файлах описываются шаблоны игрового мира, шаблоны объектов, шаблоны устройств ввода (джойстики, клавиатуры, мышки, геймпады, рули, стики и т.п.), шаблоны свойств объектов и т.д. Там очень богатая иерархия шаблонов классов.
Там будет обязательно реализация state machine. Реализация renderer (отрисовщика кадров) и т.п. В отрисовщике кадров уже используются всякие функции Direct3D (если проект собирается под Windows платформу), OpenGL (под все поддерживаемые им платформы, опять же видеокарта должна поддерживать соотв. стандарт OpenGL-ля), Metal (для MacOS), Vulkan (под все, если производитель карты замутил соотв. драйвера) и тд.
Понятно, что пишут их только спецы, которые понимают как работает ОС и Железки.
Остальные их только дорабатывают, фиксят баги.
347 1138939
>>38911

>>Ты сам почему с плюсов ушол?


0. Ну про память я тебе написал свою. Как рыбка Дори =).
1. Слишком долго разбирался в тонкостях языка и его экосистемы, как итог - просто перегорел, стало даже тошнить от расширения файлов cxx, cpp и тд. Теперь понимаю, что нужно было искать работу после двух лет изучения (и идти пусть даже стажером). Пожалуй, основная причина. Все-таки, на старте нужна хоть какая-то отдача. Если то, чем ты знаимаешься не приносит тебе денег в течение года, то что-то тут не так..
2. Интерес к основным штукам для которых предназначен сейчас C++ - у меня пропал. (Embedded, gamedev, ROS, OS, "SUPER ULTRA HIGH PERFORMANCE SYSTEMS", и т.п.) - эти области Мне более неинтересны.
3. Архаичность. Когда имеешь дело с C++, то нужно всегда помнить про тонкости и хаки чистого C. Количество подходов к тому как писать либы и код, менялось более 40 лет, отсюда слишком разная структура у third party либ. Каждый раз нужно разбираться, как inject-ить либу в проект, потом настривать compiling, linking, building. Всегда нужно читать все header файлы. Ибо может быть какая-нибудь особенность конкретной либы. Порядок подключения хедеров, тоже иногда может быть важен.
4. Просто выпишу из своего дневника пару минусов:
- Total absence of Unified Package manager
- Total lack of Unified Best Practices
- Exuberant Syntax, therefore it has Poor Readability && Many ways to solve a problem
- If you write C++ code, then you need understand old C code. Because C++ founded on top of C.
- Hard to configure IDE or code editor to make a builds. Real good IDE is just for Windows.
- Dependency Injecting is so fucken mindgames. You always need to read source code and headers to understand library specific traps and pitfalls.
- (RAII) Manual work with memory allocation/deallocation. (OFC if you work with C++ approx 5 years, then you know about SMART POINTERS), but this approach has overhead, and decrease performance of target system.

В целом я рад, что начал в свое время с C++. Мир веба, кажется теперь простым детским садиком.

"Куда ушел?"
Веб. Здесь гораздо проще людям с памятью рыбки "Дори". Программирование, как таковое выливается в чтение доков, а затем примение какого-то готового шаблона из фреймворка. Почти что декларативный стиль программирования. Ситуаций, когда ты можешь что-то сломать на уровне логики - очень мало.

>>38914

>>Можно про вот это по-подробнее? Как их вообще пишут? На OpenGl и DirectX?


Да это обыкновенный набор cpp, h, c, cxx, hpp, dll, lib, dll.lib, so и д.р. файлов.
В этих файлах описываются шаблоны игрового мира, шаблоны объектов, шаблоны устройств ввода (джойстики, клавиатуры, мышки, геймпады, рули, стики и т.п.), шаблоны свойств объектов и т.д. Там очень богатая иерархия шаблонов классов.
Там будет обязательно реализация state machine. Реализация renderer (отрисовщика кадров) и т.п. В отрисовщике кадров уже используются всякие функции Direct3D (если проект собирается под Windows платформу), OpenGL (под все поддерживаемые им платформы, опять же видеокарта должна поддерживать соотв. стандарт OpenGL-ля), Metal (для MacOS), Vulkan (под все, если производитель карты замутил соотв. драйвера) и тд.
Понятно, что пишут их только спецы, которые понимают как работает ОС и Железки.
Остальные их только дорабатывают, фиксят баги.
348 1138977
>>38938

> нужно будет всего полтора специалиста, поддерживающих древее говно



Значит, всё так.
349 1138978
>>38939
Спасибо большое тебе. Удачи. Не гори.
350 1138979
>>38659
А если это как у дверного массива? Andron [3][3]
351 1138985
>>38977
нет.
352 1139002
>>38528
добью
int * ukoz = &andron
353 1139074
#ятупой
почему эта хуйня работает? Под неё будет выделена какая то память или что?

const int &r=42;
354 1139076
>>39074
Нет конечно, но будет одна косвенная адресация.
https://godbolt.org/g/3xReRN
355 1139137
>>38978
Спасибо) И тебе удачи, не забрасывай, не теряй мотивации, доделывай дела до конца и все будет пучком. :)
356 1139207
>>39002
Это я знал. Так в Qt пишут.
357 1139208
>>38659
А как это просиходит с двумерный массивом?
b[a][b1], это (b+a) и *(b + b1)?
358 1139224
>>39208
проебал указатель
image.png287 Кб, 1920x1080
359 1139243
Это по-пацански так пихать везде указатели?
MustDie.jpg39 Кб, 440x437
360 1139293
>>39243
Да.
361 1139297
>>39208
Чтобы макакопараша не сходила с ума {} - это []
звездочка это 'з'
arr{a}{b} это з(з(arr + a) + b)

Это валидно и для статических двумерных массивов, и для динамических
362 1139299
>>39243
чем меньше указателей - тем лучше. В идеале справлятся вообще без них.
363 1139302
>>39299
Хм...
364 1139357
>>39243 вместо указателей лучше бы ссылки использовать.
365 1139427
>>39137
И если не утомил тебя, то ты не можешь сказать о том стоит ли учить Си? Мне он просто больше как-то заходит.
366 1139432
>>39357
Гей плез
367 1139489
сап, программач!
понадобилось подправить cout, это я нагуглил, но не пойму, как его использовать правильно в нескольких файлах .cpp(с одним работает), компилятор говорит что-то об ошибке линковщика.
https://pastebin.com/bXEz814y
368 1139515
Как я понял, длительные цепочки else if преобразуются компилятором в switch? Switch вообще быстрее else if?
369 1139517
>>39515
Неправильно ты понял. Компилятор делает из всех условных конструкций последовательности cmp и jump
370 1139518
>>39297
Спасибо!
371 1139522
>>39517
нет, свитч-кейсы оптимизируются в O(1), если могут

https://godbolt.org/g/sTqvj7
372 1139620
>>39427
Не, не утомил)
В первую очередь определись с тем, что тебе интереснее - какая конкретно область тебя интересует (может тебе хочется железки программировать, писать драйвера для GPU, или там Движки писать для игр).

Твой вопрос очень сильно похож на:
"Какой язык учить? немецкий, японский, итальянский или иврит?"
Без доп. информации я не смогу нормально ответить)

__________
Если ты точно не знаешь, или еще не определился с областью, то тогда три КЛАССИЧЕСКИХ варианта для старта:

1. Архаичный вариант (Turbo Pascal), неплох для совсем новичков, чтобы пройти именно след. темы: Алгоритмизация, Структуры данных, Array, functions, procedures, input/output stream, и тд. Потом перескакивают на прагматические языки, на которых можно будет зарабатывать.
В отличии от C, имеет понятный для новичков синтаксис.

2. Более сложный вариант (C). В начале будет сложнее, но зато не нужно тратить время на Turbo Pascal. Изучая язык, ты столкнешься со всеми важными топиками: Алгоритмы, структуры данных, looping, conditional statements, память, stack, heap, calling conventions, functions, functions returning void (procedure), linker, compiler, input/output streams, descriptors, pointers, constant values, ascii, posix/winapi, memory allocations/deallocations/reallocation и т.д.

3. Самый простой в начале это Python. Но многие моменты (по типу адресной арифметики, указателей (pointers), структуры данных, типы, и почти все выше перечисленное из пункта 2 - пройдут вскользь, а следовательно - будет плохая база, если ты соберешься делать что-то крутое и продвинутое. Тот же CPython будет уже так просто не заюзать. Но зато, на нем ты быстро можешь заценить результат твоих трудов, сможешь делать более крупные задачи раньше чем на C или C++. Начинать вкатываться в программирования с применением этого языка, это как - учиться вождению на Mercedes S Class, а потом придется вдруг пересесть на Subaru (у которой еще движок не собран), а потом вообще в копейке придеться копаться. К хорошему быстро привыкаешь. Не советую начинать вкатываться с этого языка.
_______________

Прямой ответ на твой вопрос:

C++ не бывает без C. Используя C++, ты так или иначе юзаешь C.
А юзая C ты всегда используешь часть C++.
С лишь подмножество C++.

Если ты новичок, то иди по пункту 2 (выше).
В противном случае бери любую Толстую книжку по C++ и прорешивай, осмысливай все что там написано. В таких книжках косвенно объясняется весь твой C. А затем начинается специфика самого C++. Параллельно можешь, смотреть канал - "TheCherno" на youtube. Как только наберешься умных слов и практики, начинай мутить сколько-нибудь сложные программы (десяток консольных программ и пару графических). Дальше ищи работу стажером.
Вообщем, действуй!! Карты еще могут сто раз переиграться.
372 1139620
>>39427
Не, не утомил)
В первую очередь определись с тем, что тебе интереснее - какая конкретно область тебя интересует (может тебе хочется железки программировать, писать драйвера для GPU, или там Движки писать для игр).

Твой вопрос очень сильно похож на:
"Какой язык учить? немецкий, японский, итальянский или иврит?"
Без доп. информации я не смогу нормально ответить)

__________
Если ты точно не знаешь, или еще не определился с областью, то тогда три КЛАССИЧЕСКИХ варианта для старта:

1. Архаичный вариант (Turbo Pascal), неплох для совсем новичков, чтобы пройти именно след. темы: Алгоритмизация, Структуры данных, Array, functions, procedures, input/output stream, и тд. Потом перескакивают на прагматические языки, на которых можно будет зарабатывать.
В отличии от C, имеет понятный для новичков синтаксис.

2. Более сложный вариант (C). В начале будет сложнее, но зато не нужно тратить время на Turbo Pascal. Изучая язык, ты столкнешься со всеми важными топиками: Алгоритмы, структуры данных, looping, conditional statements, память, stack, heap, calling conventions, functions, functions returning void (procedure), linker, compiler, input/output streams, descriptors, pointers, constant values, ascii, posix/winapi, memory allocations/deallocations/reallocation и т.д.

3. Самый простой в начале это Python. Но многие моменты (по типу адресной арифметики, указателей (pointers), структуры данных, типы, и почти все выше перечисленное из пункта 2 - пройдут вскользь, а следовательно - будет плохая база, если ты соберешься делать что-то крутое и продвинутое. Тот же CPython будет уже так просто не заюзать. Но зато, на нем ты быстро можешь заценить результат твоих трудов, сможешь делать более крупные задачи раньше чем на C или C++. Начинать вкатываться в программирования с применением этого языка, это как - учиться вождению на Mercedes S Class, а потом придется вдруг пересесть на Subaru (у которой еще движок не собран), а потом вообще в копейке придеться копаться. К хорошему быстро привыкаешь. Не советую начинать вкатываться с этого языка.
_______________

Прямой ответ на твой вопрос:

C++ не бывает без C. Используя C++, ты так или иначе юзаешь C.
А юзая C ты всегда используешь часть C++.
С лишь подмножество C++.

Если ты новичок, то иди по пункту 2 (выше).
В противном случае бери любую Толстую книжку по C++ и прорешивай, осмысливай все что там написано. В таких книжках косвенно объясняется весь твой C. А затем начинается специфика самого C++. Параллельно можешь, смотреть канал - "TheCherno" на youtube. Как только наберешься умных слов и практики, начинай мутить сколько-нибудь сложные программы (десяток консольных программ и пару графических). Дальше ищи работу стажером.
Вообщем, действуй!! Карты еще могут сто раз переиграться.
373 1139635
>>39620
Спасибо за такие полные развернутые ответы!

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

Меня больше всего интересует создание драйверов/программирование движков и т.п. Только не знаю, потянул ли, ибо с физикой проблемы.

Кстати, насколько сильно нужна физика программисту?
374 1139645
>>39635
Астрофизика, говорят, нужна
375 1139648
>>39645
Я играл в kerbal space program. Я знаю ее.
376 1139649
>>39635
А если серьезно, то вообще не нужна. Именно для программирования физика не нужна. Программисту нужно знать алгоритмы, а анализ этих самых алгоритмов происходит с помощью всеми любимой математики.

Если речь идёт о разработке движков, то, опять же, всё зависит от конкретной задачи, т.к. такие штуки обычно создаются командой, где есть четко распределенные роли.
377 1139652
>>39649
А то мне бухой батя втирал про ее важность.
378 1139657
>>39652
Ну, изучать CS обычно начинают с самого "низа", т.е. с самого базового устройства ПК (устройство процессора, транзисторы, логические вентили, триггеры и т.д.). Может он умудрился связать с физикой работу транзистора, например?
379 1139669
>>39657
Видимо да. Он еще с ламповыми компами работал...
380 1139678
Жрется ли память при абстнакциях?
381 1139712
Сап. Читаю книгу по джаве Шилдта, там такие слова:

>В C++ можно определить значение, которое будет принимать параметр, при вызове функции без аргумента, соответствующего этому параметру."



Это вроде как он на вариадики намекает? Или это про обычную перегрузку void foo(int p) <===> void foo()?
383 1139804
>>39635

Я тебе отвечу конечно, но тебе лучше начать решать практические задачи (больше практики, меньше форумов на болтовню).

Физика тебе как-таковая ненужна, если ты будешь программировать Software. Но она дает, некоторые фичи для тебя, как для будущего инженера, а именно знание и понимание физических процессов (напр. процесс кипения, процесс перемещение объектов, процесс изменения состояний какого-либо вещества, процесс движения частиц (в зависимости от агрегатного состояния - газ, плазма, жидкость, тверд. тело), интерференция волн, и т.п.). Таких процессов просто овер 9999999999, поэтому нет смысл это все досконально изучать.

Посмотри основные темы - кинематика, электричество, термодинамика, магнитизм, волновая физика, оптика. Пожалуй основные, вот они помогут тебе в жизни. (Пусть знающие поправят, если что забыл). Короче физику нужно знать и понимать на уровне 7,8, 9 класса. По-крайней мере, мыслить ты будешь шире, чем человек без понимания физических процессов и законов.

Вся остальная физика только от задач с которыми, ты будешь сталкиваться. Просто так, не имеет смысла изучать, скажем Ядерную физику. Ну будешь, ты знать какие-то периоды полураспада хим. элементов, но практического толку будет - 0. Или там, скажем принцип суперпозиции, зачем оно тебе?
384 1139810
>>39804
UPD:
Если че, я оффаюсь на пару недель. Много работы.

А тебе анончик здоровья и воли, не ленись и все будет оки-доки. =)
385 1139913
Какой проект можно создать, чтобы он выглядил нормально в портфолио(я же правильно понимаю, что джуна без хотя бы парочки проектов никто даже рассматривать не будет?). У меня была идея кое-что запилить на boost asio, но по сути же это будет куча функционала библиотеки а поверх немного моей логики. Про OpenCV и SFML тоже думал, но в обоих случаях надо лопатить огромные библиотеки ради написания достаточно простеньких вещей. Делал свои реализации стандартных вещей(библиотеки для работы с большими числами, математики кватернионов, обертку для сокетов и tcp/udp соединений), но быстро бросал, потому что это всё уже тысячу раз делали и много лучше чем я. Может у вас есть какие мысли?
386 1139922
>>39913
блокчейн
387 1139928
>>39922
Серьёзно? Это же какое-то дануство, не? Не, конечно, можно как-то сделать это более интресно, но разве в этом есть что-то кроме модного слова?
388 1139947
>>39913
boost asio это очень круто, если сделаешь даже говночат
389 1139956
>>39947
Хм, я даже не думал, что это будет кому-нибудь интресно, а вот если взять идею говночата и на него накрутить ssl, всякий функционал в виде комнат, конф, может гуи, возможность передавать зашифрованные файлы и тп. Это нормальный проект для портфолио?
390 1140022
>>39947
А что по распространению либ? Вот есть буст асио, а есть ливень, а есть вангл. На что из этого стоит посмотреть в первую очередь?
мимо тоже хочу написать хоть говночат
sage 391 1140023
>>40022
Ливень -> либивент
392 1140091
>>40022
буст асио скоро в стандарте будет. Стандарт > все остальное.

>>39956
если ты просто сделаешь говночат с комнатами и личкой - уже отлично.
393 1140122
>>39804
Спасибо, анон.
пока не могу практиковаться ибо ноутбук продать пришлось
394 1140124
>>39913

>SFML


Не такой он огромный.
image.png368 Кб, 1920x1080
395 1140218
Что не так?
396 1140237
Почему во многих крутых фреймворках пишут свои контейнеры, которые схожи с теми, что есть в стл?

У нас с другом две теории, он считает что они пишут более производительные/оптимизированные варианты. Я считаю, что они скорее расширяют как-то функционал и серьезно оптимизировать стл не получиться.(Иначе почему это еще не в стл?). Есть еще варианты?
397 1140241
>>40237
Видимо стл слишком тяжеловесен для их нужд?
398 1140263
Стоит ли кидать в гитхаб текстовый рогалик? Или работодателю будет ПОХУЙ?
399 1140266
Пацанлар, допустим, я решил написать свой велосипед-аналог list. Как реализовать удаление элементов правильно? Иначе же хуита выходит! Всем элементам нужно сместится на единичку, что при больших объемах затруднительно?
Captured1.png132 Кб, 1254x883
400 1140280
>>40266
Посмотри «Mastering Algorithms with C» (Kyle Loudon), там в картинках рассказано.
401 1140283
>>40263
Стоит.
402 1140284
>>40263
Работодатель посмотрит на то, какие используешь указатели, как оформлен код, нет ли диких констъюкций вроде оператора возврата из середины функции и т.д.
Текстовый режим или графика — менее важно. По крайней мере, насколько знаю лично я (лично).
403 1140288
>>40284

>Работодатель посмотрит на то, какие используешь указатели, как оформлен код


То есть их не волнует просто наличие/не наличие.
404 1140289
>>40218
не прилинковал библиотеку

>>40237
STL обязана соблюдать контракт, написанный в стандарте. Стандарт позиционируется как универсальная штука-дрюка. Свои велосипдеы, если будут писаны крутыми чуваками - конечно лучше. Можно в векторе сделать Small Vector Optimization, можно изменить паттер аллокации с x2 на что-то более сложное. Можно нахуй выкинуть все эксепшены еще. Вариантов так-то много очень. Та же хэш-таблица может быть реализована разными способами.

>>40263
Кидай конечно.

>>40266
В варианте листа ты просто соединяешь линками предыдущий и следующий элемент. А текущий нахуй удаляешь потом.
IR Stalin.jpg23 Кб, 428x342
405 1140293
>>40288
Так, а треугольные скобки у него для множественного наследования?
Расстрелять.
406 1140302
>>40293

>треугольные скобки для множественного наследования


Так делают?
407 1140306
>>40293

>множественного наследования


Уже стоит растрелять.
408 1140322
Я написал проект. Ни разу не тестил. Нажал кнопу запуска... все заработало с первого раза... что за хуйня?
409 1140337
>>40322
Теперь попробуй написать что-то сложнее, чем Hello world
410 1140344
>>40337
В этом то и прикол, что я написал крестики и нолики с ИИ...
411 1140351
Есть аналог system("PAUSE")? Эта функция слишком медленна для моей задачи.
412 1140352
>>40351
_getch()
413 1140353
>>40351
system("cls")*
414 1140368
>>40353
Взять хэндл на стдаут и насрать в буфер при помощи оснвого апи
415 1140385
>>40368
Лол. Я так и сделал, думал что говнокод сраный.
416 1140438
Если я в map нахуячу разного невпопад в духе:

map[0xF4] = "asd";
map[0x09] = "ffgf";
map[0xAB13] = "eed";
map[0x00] = "cvcccc";
map[0x05]= "ddd";

А потом пройдусь по ней итератором от начала до конца, то значения будут отсортированы по ключу или нет?

Допустим, в данном примере std::map<int, std::string>
417 1140442
>>40438
Сортировка по ключу идет, а не по значению
419 1140501
Cтарый хрен, сука. На хую вертел Седжвика и его книгу. Примеры - самое кривое, что я видел в своей жизни после Кочана
420 1140516
>>40237
Др. аноны уже все расписали. Можешь глянуть EA STL, как раз писалась для перформанса и юзабилити.
421 1140518
>>40351
std::cin.ignore();
std::cin.get();
422 1140524
>>40501
Мне почему-то кажется, что они специально так сделаны, чтобы у тебя горело и ты разбирался.
дважды кидал книга на пол, когда читал обход бинарного дерева
Дойди до сортировок анон, дальше попроще
423 1140525
>>40524
*книгу
слепой дебил
image.png15 Кб, 401x241
424 1140578
https://ideone.com/zy8aBH
При завершении программы выдает ошибку. На сколько правильно я создал алгоритм увеличивающегося массива.
В прошлый раз я приходил сюда с этим же алгоритмом и мне сказали использовать vector. Не уже ли нельзя нормально реализовать программу с увеличивающимся массивом?Жду ваших советов.
426 1140581
>>40578
1)Ты увеличил n и лезешь за границу первого массива в цикле на 24 строке.
2)Ты не удаляешь первыц массив после копирования во второй и переопределяешь в 28 строке
427 1140583
>>40578
А да, ты еще и в 28 строке сокрытие имени делаешь, как правильно заметили. Короче смотри правило. Если ты переопределяешь переменную, инициализированную через new,то ее нужно скопировать, удалить, создать, скопировать.
428 1140596
>>40501
Потому что алгоритмы нужно учить по Кормену (и Ко) или Кнуту.
429 1140613
>>40501
Когда главы разбираешь, там есть текст описания алгоритма и есть текст в рамке с программой, читай сначала текст в рамке, сразу начнешь понимать текст в книге при описании алгоритма
image.png14 Кб, 400x168
430 1140741
>>40579
>>40581
>>40583
Это другой код здесь я удаляю оба массива
https://ideone.com/fPExiY
Примерно месяц назад я приходил сюда с таким же кодом, мне сказали используй вектор, а затем спросили зачем ты создаешь и удаляешь массивы по два 2 раза, но на мой взгляд все логично. Вообще вся эта проблема пошла с лабораторной работы по программированию. Тогда мы долго с учителем сидели и думали что не так, ну затем он тоже сошелся на том что массив объявленный внутри цикла невидно в другой части программы. Вчера я написал программу где я не удаляю массив arr_one а просто присваиваю ему другой размер и у меня впервые результат был верный я ввел 1 2 3 и мне вывело 1 2 3. Но только выводило ошибку. До этого на лабораторной тоже все было нормально, но в конце мне выводило массив не с моими числами, а со случайными числами. Теперь у меня код примерно такой же как на лабораторной. Но теперь выдает вот эту ошибку.
431 1140764
>>40741
Я тебе уже ответил. Ладно, я сегодня добрый, поэтому разжую тебе всё , но лабы всё равно идут нахуй.
Разберем твой говнокод по шагам
Ты инициализируешь n=1. Переменная k, которая на 1 всегда меньше n нахуй не нужна. Далее ты создаешь arr_one в куче размера n==1.
Далее ты заходишь в цикл, инициализируешь единственный элемент массива с клавиатуры. После этого спрашиваешь добавить или нет.
Если да, то ты инкреметируешь n. На первой итерации цикла оно становится n==2.
Далее ты создаешь arr_two размера n==2.
Заходишь в цикл с условием (i=0; i<2;i++)
При i==0 arr_two[0]= arr_one[0]
При i==1 arr_two[1]= arr_one[1]
Но arr_one у тебя размера 1, поэтому элемента arr_one[1] не существует и ты вылазишь за границу массива.
Исправь условие в цикле на i<n-1
И добавь в конце функции delete [] arr_one;

А вообще за ебучий месяц ты мог всю блядскую книжку зазубрить, но нет, пацаны помогите, я сам не хочу разбираться в том, что наваял. А теперь иди читать книжки и доебывать своего мудака препода
432 1140768
>>40764

https://ideone.com/ExAbId
Все равно ошибка
433 1140812
>>40768
ты совсем долбоеб?
434 1140820
>>40812
ну давай скажи что не так
435 1140823
>>40820
Сотри весь код и напиши заново, без всех этих new и delete, никто ими в современном мире уже не пользуется, всю необходимую информацию тебе уже дали. Если твоя цель - просто сдать лабу, пройди нахуй и не трать наше время на дваче, лол, время ну вы поняли
436 1140825
>>40823
даже несмотря на то что программа выдавала, ошибку лабу мне зачли. Информацию необходимую мне не дали. Мне сказали что сделать я сделал, все равно не работает.
437 1140826
>>40825
хах как смешно я запятую поставил
438 1140906
https://ideone.com/5cmvPS
Почему выдает только 3 названия.
439 1140911
>>40906
srand нужно вызвать один раз в самом начале.
440 1140913
>>29255 (OP)
Котаны, джаваблядок в треде: какие шансы у меня вкатиться в разработку на C++, если я уже привык к тому что меня неплохо кормят? В теорию программировани умею, инженерный бэкграунд и инглиш в наличии. Просто внезапно осознал, что занимаюсь какой-то хуйнёй.
441 1140918
>>40913

>что занимаюсь какой-то хуйнёй


с технологией никак не связано, смысла тебе перекатываться нет
442 1140921
>>40918
Всё так плохо?
image.png267 Кб, 1920x1080
443 1140949
Что за хрень? Схуяли они меня ограничивают, пидоры. Скоро блять вооббще хуй соснуть без их слова нельзя будет.
444 1140962
>>40949
Во-первых, ты пишешь на С, поэтому ты попутал тред. Во-вторых, если все же ты пишешь на С++, то используй iostream и потоки ввода-вывода. Во-вторых, conio.h НЕ является файлом стандартной библиотеки, вместо этого лучше используй getchar() из stdio.h (в С++: cstdio), или cin.get() из iostream.
445 1140993
>>40921
С одной стороны мне нравится, что я на С++ пишу охуенно сложные вещи (сейчас на работе виртуализацией файловой системы занимаюсь, кернельный драйвер пишу) - с другой стороны, у меня иногда прям истерики, что кто-то шлепает формы копипастой на ангуляре, а я реально очень сильно напрягаю голову.
446 1140998
>>40993
Ну и пусть, зато ты ГЕНИЙ, а они ПИДОРЫ.
447 1140999
>>40962
Си - подмонжетство С++. Не выебывайся, умник.
448 1141100
>>40999
Страуструп, плес.
Невероятно, но факт 449 1141267
Следующий код не скомпилируется:
int main()
{
int a[10], b[10];
a = b;
}

Но при этом в стандарте нельзя найти никаких правил, которые бы запрещали такой код.
450 1141276
>>41267

>Но при этом в стандарте нельзя найти никаких правил, которые бы запрещали такой код.


Да неужели.
Objects of array type are not modifiable lvalues, and although their address may be taken, they cannot appear on the left hand side of an assignment operator.
451 1141290
>>41276

>Objects of array type are not modifiable lvalues


Это с цепепереференс, верно? А я говорил что в стандарте нельзя найти.
Кстати,
http://eel.is/c++draft/basic.lval#10: "An lvalue is modifiable unless its type is const-qualified or is a function type."
Поэтому откуда взята информация на цепепереференс — непонятно.
452 1141302
>>41290

>откуда взята информация на цепепереференс — непонятно


Точнее, понятно: откуда-то из прошлого. Из C стандарта или из старой версии C++-стандарта. C++ стандарт до сих пор ссылается на отсутствующее правило:
http://eel.is/c++draft/dcl.array#7 [ Note: Conversions affecting expressions of array type are described in [conv.array]. Objects of array types cannot be modified, see [basic.lval]. — end note ]
Только вот [basic.lval] говорит то, что я процитировал выше. Ни слова про массивы.

Так что вот так.
453 1141335
Пишу FTP клиента, и в протоколе FTP есть такая команда как PORT, вместе с которой я должен передать IP адрес клиента и порт, к которому сервер будет подключаться и по которому будет передавать данные. Вопрос: как получить IP адрес клиента? Именно тот, что например я вижу на 2ip.ru (мой IP в сети интернет, или типо того. Я не силен в сетях пока что).
454 1141336
>>41267
>>41290
Но ведь логично, что это нельзя сделать - не зная, сколько элементов лежит в массиве пытаться его перезаписать - гиблое дело, и хуй знает чем бы оно кончилось.
455 1141410
>>41336

>Но ведь логично, что это нельзя сделать


Может быть.
Но внятно написанных формальных запретов это делать нет.

Это, конечно, не проблема. Просто такой маленький забавный факт. Возможно, этот дефект когда-нибудь пофиксят.
456 1141420
>>41335
getpeername()
457 1141441
Почему std::cout быстрее printf?
458 1141443
>>41441
всегда медленнее был
459 1141446
>>41443
Кто?
460 1141478
Как объявить через typedef прототип для scanf()?
пытаюсь делать так:
typedef int(__cdecl scanfPrototype) (const char format);
но потом обсираюсь в
scanfPrototype read = &scanf;
Типа сигнатуры не те. Действительно, у scanf там еще ",...". Так вот, как это указать в прототипе ИЛИ как еще можно кроме std::cin >> var и scanf("%d", &var) считать инт в переменную? Желательно без считывания строки с дальнейшей конвертацией в int. Или все эти scanf и cin изолированно от меня всё равно конвертят ввод пользователя из ascii в нужный тип?
461 1141479
>>41478
Былять, разметка съела указатели. Ну ты понел
462 1141505
>>41478

>Как объявить через typedef прототип для scanf()?


typedef decltype(scanf) scanfPrototype;

>Или все эти scanf и cin изолированно от меня всё равно конвертят ввод пользователя из ascii в нужный тип?


Ну не телепатически из его головы же читают.
463 1141506
>>41505

>typedef decltype(scanf) scanfPrototype;


Шаман, однако. Спасибо
 .jpg8 Кб, 480x80
464 1141509
>>41478

> scanfPrototype read = &scanf;


auto read = &scanf;
465 1141510
>>41478

> через typedef


Если не пишешь на с, закопай обратно.
https://ideone.com/DuT52u
466 1141512
>>41510
От __cdecl не сломается?
467 1141516
std::vector<T> vec;
// какой-то код, сующий в vec, допустим, 3 элемента

`&vec[0] + 2` и `&vec[2]` — не одно и то же, первое приводит к UB на любой реализации вектора, у которой push_back реализован по стандарту, т.е. работает за амортизационно константно евремя.
468 1141517
>>41516
В поле тема я написал "Трудно поверить, но факт", но оно почему-то не отобразилось.
469 1141681
Есть ЭТО:
void SetKeyCallBack(KEY_CALLBACK callback);
typedef void (CALLBACK * KEY_CALLBACK)(int iRow, int iColumn, bool bPressed);

Как мне получить два инта и бул? Да, я умственно отсталый, пожалуйста помогите и объясните во всех деталях.
470 1141712
>>41681
тебе их передадут прямо в твой коллбек который ты зарегестрируешь через SetCallback

мимотян, пруфов не будет
 .PNG244 Кб, 2560x1402
471 1141820
Решил я тут вкатиться в кодинг на C++ + Qt. Объясните, почему статически слинкованные приложения имеют такой-то размер? И это простой хеллоу ворлд. DEBUG-версия вообще линкуется неадекватно долго (минуты три).
472 1141824
Как нормально скачать и подключить ипаный буст на clion?
473 1141858
>>41516
Проверь, &vec[0] и vec.begin() - одно и то же?
474 1141865
>>41820
Нормально все. Ты при статической линковке весь рантайм собираешь и тянешь. А ликовка долгая, т.к. плюсы с шаблонами.
475 1141869
>>41820
Собери релизную версию без отладочной инфы, будет меньше.
476 1141870
>>41869

> With Visual C++ (and other Microsoft compilers) on Windows, symbols aren't part of the binaries. Instead, they are stored in separate files called "Program Database" files (.pdb files). Just don't provide the .pdb files.


Отладочной инфы там нет.
477 1141977
>>41870
Только вот оптимизатор уменьшает код все равно. Иногда в разы.
478 1141979
>>41977
Так релизная оптимизированная версия весит 23.4Мб, а неоптимизированная 57.2Мб + 180Мб отладочной инфы в отдельном файле.

Может это из-за того, что я использую Intel C++ Compiler? Я его по большей части спиздил с рутрекера и поставил потому, что MSVC отображает ошибки конпеляции на русском языке и Qt Creator не в состоянии их отобразить. Подключить clang-cl к Qt Quick я не асилил, а icl полностью мимикрирует под MSVC и для его подключения достаточно заменить батник инициализации и mkspec.
479 1141988
>>41979

> Qt Quick


Qt Creator если быть точнее.
480 1142019
>>41979
Английскую версию мсвц ты не смог поставить?
481 1142030
>>42019
Она мультиязычная изначально, лол. На SO есть старые способы удаления языковых пакетов, но с VS2017 они не работают.
482 1142039
Пишу в Code Blocks с SFML, пытаюсь открыть файл, пишет undefined reference to. Файл лежит в той же папке, кириллицы в пути нет, расширение поддерживается. В чём может быть ошибка?
483 1142041
>>42039

> Пишу в Code Blocks


Вот здесь
484 1142045
>>42041
Есть нормальные альтернативы кроме VS?
485 1142062
>>42045
Самый удобный инструмент разработки - это VS. В нем пишут вообще все, кроме поехавших вимоблядей, и всяких унылых дядь с эмбедом, где свои инструменты.
486 1142063
>>42045
если ты хочешь делать упор на изучение qt, но знаний у тебя явно маловато, то наверное удобней будет поставить какой-нибудь user-friendly вариант линукса, кодить в qt creator и в качестве компилятора использовать gcc
но если говорить вообще - похоже, у тебя явно не хватает бэкграунда чтобы спокойно делать что-то рабочее на qt
487 1142065
>>42063
да еще: линукс ты можешь поставить на виртуалку, в этом есть множество преимуществ
488 1142072
Ответь на пару вопросов, плюсач
1. Что такое embedded?
2. Реально ли писать на Qt в VS?
489 1142076
>>42072

> 2. Реально ли писать на Qt в VS?


Ну как бы да. Только вот официальный аддон так и не допилен. Какие-то подвижки есть, но например Qt Quick не поддерживается вообще и в ближайшее время не будет. Только если сам хочешь ебаться с cmake (который в последние VS, кстати, встроен).
490 1142082
>>42072
1. Программы для всяких кастомных крошечных микросхемок. Обычно там свои IDE (не всегда) и тулчейны (всегда), и это не совсем типичный С++, скорее просто С с классами. У данных девайсов могут веселейшие ограничение типа 32кб оперативки, отсутствие Heap'a вообще, и прочее.

2. Да, писал с официальным аддоном, все норм. Причем цмейк тут у предыдущего оратора я не понял, но qtquick да, не поддерживался. Мое скромнейшее имхо в том, что удобство студии перевешивает убогость qt creator'a, даже если надо немного поебстись с аддоном.
491 1142139
>>42082
Получается, Arduino - сорт оф эмбед?
492 1142185
Антон, я пишу не на плюсах, а на си с классами. Что делать?
494 1142204
>>42189
В том то и дело, что на это у меня агрессия.
495 1142345
Бля, как я заебался, в общем пытаюсь сделать свой велосипед - режим подсветки для клавиатуры
496 1142351
>>42345
Бля, обосрался даже тут
Детектить кейпресы - ✔
Делать всякую хуйню - ✔
Иметь хоть какую-то логику - ❌
В общем че я сделал, завел вайл который просит Сдк клавы задектить мне кейпрес, если детектит то срет мне в другую функцию, а я в этой функции делаю что-то еще, теперь блять нужно как-то сделать так, чтобы если я нажал кнопку, эта кнопка подсветилась, попытался через треды и детач, но получилась хуйня, жму кнопку и жму её опять, два треда как альфачи дерутся за ебаную посдветку и кнопку хуярит то ярко, то тускло, пока не погаснет, как вообще логику сделать для этой хуеты?
497 1142352
>>42185
что хочешь то и делай. тебя никто не заставляет использовать все фичи языка. если твои "си с классами" сообразны задаче, то пиши на них. как грится: "ты платишь лишь за то, что используешь".
498 1142354
>>42351
Блять, опять обосрался, нужно сделать чтобы она не просто подсветилась, а ушла из полностью яркой в погашенную, 256 -> 0, такие дела, помогите или подкиньте идей каких-то
499 1142356
>>42351

>завел вайл который просит Сдк клавы задектить мне кейпрес


цпу в соточку бьёт?
500 1142358
>>42354
Ты хоть что за клавиатура скажи. И откуда SDK брал?
501 1142359
>>42351
Ну учись бороться с race-condition, хули. Ебани там очередь какую-нибудь, блокировок понаставь.
502 1142361
>>42356
Если бы там, с учетом того, что я сделал, должно было бить в 2 соточки, а бьет в 1 процент макс, это при этом что два вайла и куча потоков
>>42358
CM masterkeys pro L rgb, брал с их сайта
>>42359
Да я итак на кнопки очередь ебанул, че дальше делать не ебу
503 1142363
Двач, есть ли смысл делать геттеры/сеттеры когда в них смысла нет и отдать пользователям класса просто публичную переменную? Просто в отличии от других языков, в C++ я не видел что-бы кто-то оставлял в классах публичные переменные вместо геттеров/сеттеров.
504 1142368
>>42363
Ну если под "пользователями" класса ты понимаешь себя любимого, то не похуй ли?
505 1142371
>>42351

> В общем че я сделал, завел вайл который просит Сдк клавы задектить мне кейпрес,


Что-то я в их пдфе функция для получения клавиши не вижу: https://makerhub.coolermaster.com/custom-lighting/assets/sdk/sdk-document.pdf

Может просто сделаешь старый добрый глобальный хук в винде?
506 1142373
>>42371
Да забей ты хуй на их SDK, я хук уже делал, да у них в SDK все есть(SetKeyCallBack()), там просто в самом SDK Тайваньские комментарии от 2008 года, а на сайте 3/4 SDK
507 1142379
>>42373
Короче, почитал про эти рейс кондишон, пиздаааа, я ж головой ебанусь там, ну да ладно, пара вопросов:
Как можно избавиться от бесконечных циклов чтобы задектить кейпрес и можно ли вообще от них избавиться?
Как один тред бить по голове, если он лезет вперед другого и срет ему в руки?
508 1142380
>>42373
Так в чём проблема? Ты хочешь убрать дребезг (debounce)? Ну, таймер тебе в руки. После прихода сообщения устанавливаешь таймер, по окончании которого он вызывает функцию установки цвета с последним сообщением. При каждом новом сообщении таймер сбрасывается, и пришедшее сообщение ставится последним пришедшим. И так для каждой клавиши.
509 1142384
>>42380

> При каждом новом сообщении таймер сбрасывается


Точнее сбрасывается и устанавливается вновь.
510 1142390
>>42380
Алсо, если есть такая логика: Нажатие -> Ярко -> Нажатие -> тускло, то чтобы не терять слишком быстрые нажатия клавиш, можно добавить Atomic-переменную, которая будет считать нажатия с момента последнего срабатывания таймера. Таким образом можно будет сохранить логику и при этом игнорировать слишком быстрые изменения.
511 1142394
>>42390

> Atomic


Хотя её будет мало. Лучшеиспользуй полноценный мютекс. http://en.cppreference.com/w/cpp/thread/lock_guard
512 1142395
>>42390
На счет атомиков гуглил, но чет хз, логика такая, нажатие->кнопка и 4 ближние к ней загораются ярко->изначальные 5 кнопок чуть тускнеют, загорается следующий слой кнопок(ряд/колонка + 1)->опять кнопки предыдущий стадии тускнеют(кнопки самой первой стадии уже почти погасли) загорается следующий слой и на этом следующие слои больше не загораются, все предыдущие уходят в фейд, вот на моменте фейда и нажатие кнопок которые задевают уже нажатые кнопки проблема
513 1142396
>>42394
Бля, а мютекс может помочь, спасибо, попробую потестить потом
514 1142441
>>42395
У тебя там лапша из ифов небось? Наворачивай MVC. Делаешь контроллер. Он подписывается и получает вызовы колбеки (тоесть метод контроллера передается как колбек в SDK). И связан с моделью. Модель (предположительно) сосоит из массива с яркостями кнопок. По вызову колбека контроллер передает модели инфу что нажата такая то кнопка (вызывает метод модели "кнопка нажата"). Модель обновляет свою инфу - пробегается по всем кнопкам и у всех кнопок где яркость больше нуля уменьшает яркость и добавляет в массив обновленных кнопок, после этого яркость нажатой кнопки и соседних повышается до максимума и их айдишки тоже добавляются в массив обновленных кнопок. После этого этот массив передается контроллеру. Контроллер разгребает массив обновленных кнопок и посылает в SDK команды с новыми яркостями. Все ждут нового колбека. Естественно, это как вариант. Может повляют какие именно возможности предоставляет SDK. Что-то подобное можно и на лапше ифов сварганить. Если совладаешь с таким то можешь дальше навернуть абстракций, например DI - всю логику по которой определяется яркость кнопок выделить в отделную стратегию. Модель будет заниматься только собственно хранением инфы, общением с контроллером и вызовами стратегии. Если тебе захочеться изменить правила по которымподствечиваются кнопки - тебе нужно будет только заменить стратегию.
image.png58 Кб, 512x719
515 1142451

> атомиик!


> мьютекс!


> запускай таймер!


> наворачивай MVC!


А могли просто взять FRP-фреймворк и сделать throttle.
 .PNG42 Кб, 977x643
516 1142460
>>42451
Только не throttle, а debounce, как я и писал. Можно сделать на https://github.com/Reactive-Extensions/RxCpp если нужен именно С++. Только вот нужно хоть как-то понимать что такое реактивное программирование, а он даже про мютексы не в курсе.
517 1142462
>>42460

>Только не throttle, а debounce


Да, debounce более правильное название. Я решил сохранить терминологию из кода на картинке.
518 1142545
>>42189
Ох нахлебался я от парня, который темплейты как недо-миксины использовал. Просьба всему треду - используйте темплейты по назначению, а не как средство превратить код в кашу.
519 1142577
>>42030
на VS2017 инсталлятор жи, там все настраивается легко
520 1142652
>>42363
Геттеры/сеттеры вообще зло, особенно которые "лишь бы были". Могу пояснить поподробнее где-нибудь.
521 1142681
>>42652
Поясни-ка.
522 1142700
>>42681
Ну вообще всё помещается в одну фразу:
Don't ask for the information you need to do the work; ask the object that has the information to do the work for you.

Если у тебя весь код в геттерах и сеттерах, то это может (но не обязательно) свидетельствовать о проблемах в архитектуре.

Это не всегда так (а в каком-нибудь шарпе или спринге геттеры и сеттеры вообще являются НЕЗЫБЛЕМЫМ ЦЕНТРОМ МИРОЗДАНИЯ, вокруг которого всё крутится), так как некоторые хитрые алгоритмы работы с объектами не могут без этого обойтись (либо требуют один рефакторинг за другим снова и снова), поэтому если ты видишь, например, в плюсах, что тебе оба класса надо значительно перекраивать, чтоб изменить логику их работы, то можно вместо этого дать геттер в одну сторону или сеттер с поинтером/референсом в другую (тут уже тоже надо смотреть по ситуации, чтоб выбрать из двух зол меньшее, иначе иногда получаются совсем дикие цепочки, где референс/поинтер передается на 3+ родителя вверх / ребёнка вниз, потому что там что-то с ним надо сделать).

А создание геттера и сеттера для каждого поля — вообще слабоумие (ну или необходимость, если этого требует какой-нибудь слабоумный фреймворк, который не может адекватно воспользоваться конструктором), потому что это равнозначно public type x, но лишь с другой формулировкой. Инкапсуляция, понятное дело, идёт по пизде.

А вообще вот статья:

http://www.yegor256.com/2014/09/16/getters-and-setters-are-evil.html
524 1142707
>>42577
>>42700

> а в каком-нибудь шарпе или спринге геттеры и сеттеры вообще являются НЕЗЫБЛЕМЫМ ЦЕНТРОМ МИРОЗДАНИЯ, вокруг которого всё крутится


Тому що это единственный способ сделать виртуальную переменную, которая определена в интерфейсе. Множественное наследование ведь не завезли.
525 1142740
>>42707

>множественное наследование не завезли


Интерфейсы для кого придумали?
526 1142747
>>42740
Ну так и переменные в интерфейсе можно определить только геттерами/сеттерами. Ты бы мой пост прочитал сначала.
527 1142750
>>42747
Что-то я слепой пиздец.
528 1142780
>>42394
Короче получилась хуета, которая послала мою многопоточность нахуй, шо делать не знаю...
529 1142806
>>42082

> Мое скромнейшее имхо в том, что удобство студии перевешивает убогость qt creator'a, даже если надо немного поебстись с аддоном.


Кстати, для студии рекомендую использовать недавно релизнувшийся verdigris. Там всего два hpp-файла добавить в проект. Тогда вместо emit, slots и прочих непотребностей можно будет использовать старые добрые макросы и не смущать intellisense и всякие статические анализаторы. Т.е. в итоге получается чистейший C++ без каких либо дополнений. Алсо, qt quick писать вполне себе можно. Просто нужно при создании проекта подключить в аддоне нужную библиотеку, и в готовый *.qrc-файл добавлять qml-формы с гуем. Ну и заменить сгенерированный main.cpp файл на qt quick-ный.

https://github.com/woboq/verdigris
530 1142809
>>42806

> рекомендую использовать недавно релизнувшийся verdigris


Только из недостатков: ему нужен C++14 конпелятор.
531 1142964
Сап ананасы.
Хотел такой вопрос задать.
Начал учить плюсы (до этого был си диез) чисто для себя.
В последствии хочу вкатитца в ИИ/микроконтроллеры/реверс- инженегринг шото из этого (не хочу я ваш питон, нинужон он мне).
Взял книжку лафоре. Оч годная. Прохожу с примерами где-то 1 главу за 1-2 дня. День читаю главу\разбираю какую- никакую алгоритмитизацию примеров, другой день - решаю примеры с книжки и кодварса.
Вопрос. Сколько примерно времени пройдет, прежде, чем я начну понимать что к чему и куда мне двигаться ?
532 1142992
>>42809
Недостатком является отсутвтсие С++14 компилятора на твоей работе
533 1142993
>>42964
~полгода минимум, а то и год.
534 1142995
>>42964

> чем я начну понимать что к чему и куда мне двигаться ?


Для программирования мк C++ нинужен. Достаточно Си с классами, а на изучение этой хуйни много времени не уйдёт. Ты же не собираешься постигать template-fu? Для мк более важно понимать как работают процессоры, про организацию памяти, про способы взаимодействия с периферией и прочее. Короче работа с железом. Для нейросетей нужно изучать алгоритмы, и опять таки ЯП тут не так важен.
535 1143001
>>42992
Для MSVC требуется минимум версия 2017, поскольку он использует фичи C++17 для обхода багов компилятора. Там вообще хеадери пиздец какие сложные. Как такую хуйню вообще написать можно?

https://github.com/woboq/verdigris/blob/master/src/wobjectdefs.h
https://github.com/woboq/verdigris/blob/master/src/wobjectimpl.h
536 1143011
>>43001
Это не так сложно, как кажется. Надо понимать, что вся эта компайл-тайм параша - фактически свой собственный язык
537 1143014
>>43011
Там не просто теймлейты. Они ещё приправлены макросами и на всём это сделан синтаксический анализатор и транслятор.
538 1143126
КТо нибудь пробовал к vs2017 прикрутить gcc вместо/рядом с vc++? Получилось? Есть ссылка на гайд рабочий? Как себя потом intellisence ведет?
539 1143177
>>43126
gcc только на ремоутной линуксовой машине, или локально через WSL.

Для локальной шиндоразработки вроде как-то clang\LLVM можно прикрутить, но не пробовал.
540 1143347
Я недавно вкатился в C++ из C#. И мне кажется я пишу не на C++, а на C# со странным синтаксисом. Особенно касаемо генериков и абстрактных классов. Например мне нужен класс с двумя типами, которые должны наследоваться от interface1 и interface2 соответственно и должны иметь конструктор не принимающий аргументов.

В сишарпе я это опишу так:
public class azaza<T1, T2>
where T1: interface1, new()
where T2: interface2, new() {...}

В плюсах пишу так:
template <typename T1,
typename T2,
typename = std::enable_if_t<(std::is_base_of_v<interface1, T1> && std::is_constructible_v<T1>)>,
typename = std::enable_if_t<(std::is_base_of_v<interface2, T2> && std::is_constructible_v<T2>)>>
class azaza {...}

Это нормальный C++ код или надо делать как-то по-другому?
541 1143356
>>43347

> typename = std::enable_if_t<(std::is_base_of_v<interface1, T1> && std::is_constructible_v<T1>)>,


> typename = std::enable_if_t<(std::is_base_of_v<interface2, T2> && std::is_constructible_v<T2>)>>



Хотя судя по тому какие непонятные ошибки компиляции выходят при несоответствии проверкам, наверное лучше добавлять в конструктор

static_assert(std::is_base_of_v<interface1, T1> && std::is_constructible_v<T1>);
static_assert(std::is_base_of_v<interface2, T2> && std::is_constructible_v<T2>);

вместо аргументов шаблона?
542 1143437
>>43347
И ещё один вопрос. Если я захочу использовать статический полиморфизм вместо динамического, то единственный нормальный способ проверить соответствие "интерфейсу" аргументов шаблона (пока не сделали концепты), это создать такие структуры:

template<typename T>
struct interface1_check
{
static_assert(std::is_class_v<T> && std::is_default_constructible_v<T>);
static_assert(std::is_same_v<decltype(std::declval<T>().method()), void>);
};

(в данном случае тип должен быть классом, иметь конструктор по-умолчанию и метод `method` который без аргументов возвращает `void`)

а затем наследовать эту структуру вот так:

template <typename T1>
class azaza: interface1_check<T1> {...}

?

Просто я не хочу, чтобы ошибки вылезали только когда полиморфный объект будет непосредственно использоваться. Хочу, чтобы всё вылезало ещё при создании класса azaza.
543 1143450
>>43437
Хотя, ещё можно сделать так:

template<typename T>
struct interface1_check_t
{
static constexpr bool value = std::is_class_v<T> && std::is_default_constructible_v<T> &&
std::is_same_v<decltype(std::declval<T>().method()), void>;
};
template<typename T>
constexpr bool interface1_check = interface1_check_t<T>::value;

template <typename T1>
class azaza {
static_assert(interface1_check<T1>);
...
}

Код выглядит красивее, правда сообщение об ошибке стало похуже.
544 1143468
>>43450
Наверное гибрид будет самым лучшим решением. Как-то так:
template<typename T>
struct interface1_check_t: std::true_type
{
static_assert(std::is_class_v<T> && std::is_default_constructible_v<T>);
static_assert(std::is_same_v<decltype(std::declval<T>().method()), void>);
//static_assert(std::is_same_v<decltype(std::declval<T>().method1()), bool>);
};

Тогда если будет много методов, можно будет сразу увидеть какой не совпадает.
545 1143518
>>43437
>>43450
>>43468
Это какой-то вайп?
546 1143526
>>43518
Чувак, похожу, шаблонов объелся. Несите сюда пуфон
547 1143527
>>43526

>> похоже


Извините
548 1143548
>>43518
Нет, я просто изучаю C++ и спрашиваю, правильно я делаю или нет. Вот придумал макрос для определения наличия метода в типе

#define PP_CAT(a, b) PP_CAT_I(a, b)
#define PP_CAT_I(a, b) PP_CAT_II(~, a ## b)
#define PP_CAT_II(p, res) res
#define LINE_NAME(base) PP_CAT(base, __LINE__)

#define HAS_METHOD(type, method, result) \
template<typename, typename = std::void_t<>> \
struct LINE_NAME(m) : std::false_type {}; \
template<typename U> \
struct LINE_NAME(m)<U, decltype(std::declval<U>().##method())> {\
static constexpr bool value = std::is_same_v<decltype(std::declval<U>().##method()), ##result>;\
}; \
static_assert(LINE_NAME(m)<##type>::value);

Теперь можно просто написать:

template<typename T>
struct interface1_check_t
{
static_assert(std::is_class_v<T> && std::is_default_constructible_v<T>);
HAS_METHOD(T, method, void)
HAS_METHOD(T, getBool, bool)
};

и выдаются очень красивые ошибки при несовпадении сигнатуры.
548 1143548
>>43518
Нет, я просто изучаю C++ и спрашиваю, правильно я делаю или нет. Вот придумал макрос для определения наличия метода в типе

#define PP_CAT(a, b) PP_CAT_I(a, b)
#define PP_CAT_I(a, b) PP_CAT_II(~, a ## b)
#define PP_CAT_II(p, res) res
#define LINE_NAME(base) PP_CAT(base, __LINE__)

#define HAS_METHOD(type, method, result) \
template<typename, typename = std::void_t<>> \
struct LINE_NAME(m) : std::false_type {}; \
template<typename U> \
struct LINE_NAME(m)<U, decltype(std::declval<U>().##method())> {\
static constexpr bool value = std::is_same_v<decltype(std::declval<U>().##method()), ##result>;\
}; \
static_assert(LINE_NAME(m)<##type>::value);

Теперь можно просто написать:

template<typename T>
struct interface1_check_t
{
static_assert(std::is_class_v<T> && std::is_default_constructible_v<T>);
HAS_METHOD(T, method, void)
HAS_METHOD(T, getBool, bool)
};

и выдаются очень красивые ошибки при несовпадении сигнатуры.
549 1143585
>>43548
Ты какую-то хуйню делаешь.
550 1143588
>>43585
Чому? Я "переизобретаю" концепты (которые обещают к C++20), чтобы компилятор не выводил кучу непонятных ошибок при работе с типами из шаблонов.
551 1143627
>>43548
Пиздец, хотел научиться программировать на C++, а тут такие страшные сообщения.

Это вы так реально программируете?
552 1143630
>>43627
Нет, это он балуется.
553 1143688
>>43627

> а тут такие страшные сообщения.


А что там страшного? Алсо, удалось упростить проверку. Теперь она выполняется один раз, а не два как в предыдущем варианте.

#define HAS_METHOD(type, method, result) \
struct LINE_NAME(struct) { \
template<typename U, typename = std::enable_if_t<std::is_same_v<decltype(std::declval<U>().##method()), ##result>>> \
static std::true_type test(void*); \
template<typename> static std::false_type test(...); \
}; \
static_assert(std::is_same_v<decltype(LINE_NAME(struct)::test<##type>(nullptr)), std::true_type>);
554 1143730
>>43627
я подобную хуету на работе пишу фо фан. Проект маленький, всем похуй, что там я и как хуярю. У меня там модерн С++ курильщика во всей красе, рофл
555 1143794
Ииии, последняя версия:

#define HAS_METHOD(type, method, result, ...) \
template<typename... Args> \
struct LINE_NAME(struct) { \
template<typename U, typename = std::enable_if_t<std::is_same_v<decltype(std::declval<U>().##method(std::declval<Args>()...)), ##result>>> \
static std::true_type test(void*); \
template<typename> static std::false_type test(...); \
}; \
static_assert(std::is_same_v<decltype(LINE_NAME(struct)<__VA_ARGS__>::test<##type>(nullptr)), std::true_type>);

Теперь можно проверять как возвращаемый тип, так и типы аргументов.

HAS_METHOD(T, method, void) // возвращает void, аргументов нет
HAS_METHOD(T, method1, const bool&, int, bool, float) // возвращает const bool&, аргументы int, bool, float
556 1143851
>>43794

> так и типы аргументов.


Только вот он их почему-то не проверяет, только количество. При этом никак заставить его сделать это невозможно. Видимо какая-то "фича" `declval` либо я криворук.
557 1143956
>>43730
В реальном коде я и близко к самописным темплейтам не подхожу и считаю их в почти любом проявлении вредными, что они должны быть только в библиотеках общего пользования и самим писать - только схватишь потом, поэтому настоятельно не рекомендую.
Но вот ради прикола и самообразования конечно можно. Например, я реализовал монады на концептах, которые "подключаются" к стандартным вещам вроде std::vector и std::optional. И можно делать вещи вроде
std::vector<int> x {1, 10};
auto y = x >>= [](int x) { return std::vector<int>{x, x*2}; };

Там примерно похожий уровень магии темплейтов, хотя концепты и позволили повысить читаемость.
558 1143964
>>43851

>Только вот он их почему-то не проверяет, только количество


Посмотри в сторону is_invocable. Если нужны точные параметры, то придётся какой-нибудь трейт писать (или использовать бустовский). Смотри:
https://stackoverflow.com/questions/9065081/how-do-i-get-the-argument-types-of-a-function-pointer-in-a-variadic-template-cla
http://www.boost.org/doc/libs/1_41_0/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html
559 1143974
Что делать, если я ленивое хуйло и даже не могу прочитать первую книжку? Как заставить себя
560 1144011
Короче я ебанутый, но мне нужно нацти ответ на этот вопрос, есть консольная приложуха, в ней дрочево с битмапой, создаю битмапу 22на 6, крашу ее в красный, сохраняю как пнг, круто, теперь делаю функцию, которая мутит всякую хуцню с битмапоц и изменчет цвет раз в пол секунды или быстрее, да, я успеваю сохранять битмапу, но просомтр картинок не успевает так бытсро обновлятьсч и я из за этого пропускаю какие то моменты, вопрос следующий, как эту ебаную битмапу видеть как изображение в риалтайме???да я бы мог перецти на какую нибудь хуету вроде цлр, сделать канвас в канвас запихнуть битмапу и ноль проблемы, но я бы и собаку тоже мог выебать, но мне нкжно именно в консоли это все делать, думал на счет того, чтобы вывести в консоль тупо один и тот же символ и тупо красить отпут консоли в разные цвета, но там цвета ограниченные, вроде бы можно через констыли сделать ргб, но костыль нашел только один с нулем апвотов на стаке, так шо надежды на это особо нет
562 1144051
А вот такой вопрос, есть ли какой простой способ сделать регулярку рекурсивной? Как я понял, в стандарте такая вещь не поддерживается, надо использовать буст или другую библу, но такой возможности нет. Суть проблемы - есть условная строка, которая разбивается на подстроки согласно регулярке, но эти сами подстроки тоже могут содержать подстроки и так далее.
563 1144057
>>44051
Регулярные выражения, совершенно внезапно, могут матчить только регулярные языки. Это ограничение _частично_ обходится разными реализациями, но только частично. Погугли что такое регулярные языки и why you shouldn't parse html with regex.
564 1144064
>>43964

> http://www.boost.org/doc/libs/1_41_0/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html


> The template argument F is a function type, note that this is not the same thing as a pointer to a function.


Видимо проблема в этом. У меня именно ссылка на функцию. А так я делаю так же как и стандартный std::invoke_result из C++17, (только вместо std::declval<Args>()... надо написать std::forward<Args>(std::declval<Args>)... чтобы он prvalue-ссылки не убирал). И даже если заменить мою самописную проверку на `invoke_result`, он тоже работает точно так же неправильно. А именно: все примитивные типы неявно приводятся друг в дружку, а вот типы классов он определяет нормально.
565 1144065
>>44064

> У меня именно ссылка на функцию.


Точнее указатель.
566 1144140
>>43794
Таки сделал эту хуйню. Кто сделает мне code review? https://pastebin.com/sGCwjXcU

Прикольно писать функции времени компилирования на чистом Си, поскольку фичи С++ не поддерживаются.

TODO: портировать на GCC и CLANG. Сейчас работает только с MSVC.
567 1144143
>>44140
Немного исправленная версия: https://pastebin.com/fx29X2mM
568 1144172
>>44143
Добавил поддержку проверки указателей на функции в агрументах: https://pastebin.com/VuaqADVs

А вот с возвращением указателей на функции бида-бида. Если с простыми функциями ещё можно замутить простую предварительную проверку на SFINAE, то вот при возврате указателя на метод класса только вручную писать проверку. Слишком сложно. И так сойдёт.
569 1144207
>>44172
Одно слово: github
570 1144213
>>44207
Что гитхаб? Выложить туда мою библиотеку рефлексии для бедных? Тогда надо ещё поддержку GCC/CLANG добавить (там нужен макрос __PRETTY_FUNCTION__ вместо __FUNCSIG__ и формат функций/шаблонов чуть другой). Ну и тесты + CI. Я вообще гитхабовские библиотеки не скачиваю, если там нет CI.
571 1144533
>>41858
Конечно нет.
572 1145025
//8===================================3
#include <iostream>

class A
{
public:
int foo(double x) {return 0;}
};

class B: public A
{
public:
int foo(short x) {return 777;}
};

int main()
{
B b;
std::cout << b.foo(1.1) << std::endl;
return 0;
}
//8===================================3

Чому этот код у меня выдаёт 777 ? По идее ведь 1.1 - это double, и потому должен вызваться метод класса А. Или если метод с именем foo() найден внизу иерархии наследования, то под него уже подгонится полученный параметр (ну тип 1.1 урежется до 1)? В джаве не так, там аналогичный код вызвал метод суперкласса.

Есть ли специальное выражение, по которому можно это загуглить подробнее?
573 1145043
>>45025
Вообще http://en.cppreference.com/w/cpp/language/overload_resolution плюс http://en.cppreference.com/w/cpp/language/adl
Конкретно в твоем случае проблема в том что поиск (вообще) происходит по имени, начиная с самого узкого скоупа постепенно его расширяя пока не будет найдено имя. Когда найдено имя, только тогда в текущем скоупе ищется подходящий вариант. Если его нет то поиск прекращается. Тебе нужно или напрямую указывать в каком скоупе искать имя b.A::foo(1.1), или включить функцию суперкласса в скоуп наследуемый класс, добавив using A::foo; где-то среди деклараций методов. Какого хуя так сделано не знаю, может хотели максимально ограничить видимость "по умолчанию" методов классов чтобы не происходило непонятной хуйни с вызовом каких-то странных методов.
image.png27 Кб, 823x342
574 1145304
Что ему нахуй нужно?
inb4 посадить программиста за клавиатуру: ха-ха
575 1145306
>>45304
точку с запятой он ждет, а не запятую
576 1145307
>>45306
Я в глаза ебусь, извините.
577 1145308
>>45307
кстати, твой алгоритм копирования настолько неэффективен, насколько это вообще возможно.
578 1145310
>>45308
Да это для лабораторной, там обязательное условие - использование буферной переменной. Хотя я и в полевых условиях делал бы что то такое же, либо memcpy
579 1145330
>>45310
Может ты задание не правильно понял? Условие какое-то слишком уж тупое.
580 1145333
>>45330
Не не, 5% выполнения за это задание. Суть всей лабораторной - подготовка различных задач под распараллеливание под openMP
581 1145356
>>45333

> распараллеливание


> буферная переменная


Неплохо.
582 1145717
Вечер в хату, подскажите, что он хочет и как это исправить? Пытаюсь третью неделю в кресты с абсолютного нуля, переписал листинг этого говна из книги Лафоре, выдает ошибку ссылаясь на 19 строку, гугол молчит, надежда только на вас, просветлённые
583 1145729
>>45717
Раз уж занимаешься байтоёбством, то используй c_str и memcpy.

http://ru.cppreference.com/w/cpp/string/basic_string/c_str
584 1145748
>>45717
strncpy
585 1145752
Какая IDE самая пиздатая ?
586 1145877
>>45752
Windows - Visual Studio
Linux - Qt
Mac - Xcode / Qt
___
Еще можно глянуть CLion, но мне лень и она на java.
587 1145881
>>45752
Любая, поддерживающая cmake-проекты.
image.png310 Кб, 1920x1080
588 1145960
Как при создании экземпляра класса string сделать так чтобы в нем имелось место для 4 членов без такой хуйни как на пике?
589 1145961
Кто шарит в ImGui
Есть ли ру документация ?
590 1145971
>>45960

>место для четырёх членов


Какое ещё место и для каких членов?
591 1145973
>>45971
Место для четырех символов.
592 1145992
>>45960
buffer.reserve(4);
593 1146278
>>45960
в конструкторе задай
594 1146279
>>45961
программист без знания английского должен писать только на 1С
595 1146740
Че тред на дне?
596 1146896
Что, к вам или в с# или в яву?
597 1146975
>>46896
Все заебись по-маленьку.
598 1146976
>>46975
Ну тогда к вам, нет! к нам! гвахаха
599 1147301
>>46896
в JS-петухам
600 1158401
Отдельный qt-тред есть или всё тут можно поныть?
Тред утонул или удален.
Это копия, сохраненная 31 марта 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски