Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 511 | 18 | 180
Назад Вниз Каталог Обновить

С++ #57 Аноним 03/08/17 Чтв 12:07:57  1036675  
caJKTxBdQc.jpg (25Кб, 416x287)
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/

Прошлый - https://2ch.hk/pr/res/1028033.html
Аноним 03/08/17 Чтв 12:09:43  1036677
Screen Shot 201[...].png (75Кб, 212x250)
С++ это Си с классами.
Аноним 03/08/17 Чтв 12:17:00  1036686
Может запилим свой жаваскрипт с монадами, ленивыми вычислениями и выводом типов?
Аноним 03/08/17 Чтв 12:17:33  1036687
>>1036677
С++ это Go с дженериками и эксепшенами!
Аноним 03/08/17 Чтв 12:22:48  1036688
>>1036677
Не, это другой язык, и с Си совместим через ж.
Аноним 03/08/17 Чтв 12:24:43  1036690
>>1036686
Надо запилить локализованную версию ISO EBNF на русском, сделать на ней конпилятор конпиляторов, и разрабатывать синтаксис уже в EBNF.
Аноним 03/08/17 Чтв 12:27:02  1036693
>>1036690
А чтобы не изобретать велосипед, можно транслировать этот метаязык в LEX/YACC просто. Вот и вротенд. А для бэкэнда - LLVM.
Аноним 03/08/17 Чтв 13:35:33  1036721
>>1036677
с лмбдами!
Аноним 03/08/17 Чтв 14:23:00  1036758
>>1036677
C++ это си с классами от Страуструпа, шаблонами от Степанова, с лямбдами от Черча, со стандартной библиотекой от Плаугера, c метаклассами от Саттера, с программной транзакционной памятью от Найта... вы не заскучали? A то уже новый стандарт подоспел:
https://en.wikipedia.org/wiki/C++20

Там будет еще тысяча новых свистоперделов, чтобы вы НИКОГДА не смогли выучить этот ебланский язык.
Аноним 03/08/17 Чтв 14:34:30  1036765
>>1036758
А еще я сосу хуи

1036758-кун
Аноним 03/08/17 Чтв 14:34:43  1036766
>>1036758
Ура, зато сетевая либа стандартная наконец-то будет! Лет через 20 джаву догонят
Аноним 03/08/17 Чтв 17:31:22  1036993
Нужно распарсить последовательности целых чисел вида "X", "X/Y", "X//Z", "X/Y/Z" при помощи boost spirit.

Пока навелосипедил несколько мелких структур для не полных наборов, и одну общую для полного набора (с конструкторами для инициальзации из не полных наборов)

struct TRIV { int v; };
struct TRIVT { int v; int t; };
struct TRIVN { int v; int n; };
struct TRI
{
int v = 0;
int t = 0;
int n = 0;

TRI() { };
TRI(int V, int T, int N) : v(V), t(T), n(N) { };
TRI(TRIV t) : v(t.v) { };
TRI(TRIVT t) : v(t.v), t(t.t) { };
TRI(TRIVN t) : v(t.v), n(t.n) { };
};

и соответствующие парсеры для считывания этих вариантов.

Идея в том, чтобы получить возможность считывать неоднородные данные, и затем приводить из к определенному виду.

Если гонять парсеры по отдельности, все нормально работает, но когда смешиваю их в одно общее правило, спирит не может привести все к одному виду:

d:\libs\boost\boost\spirit\home\x3\support\traits\move_to.hpp(181): error C2665: 'boost::spirit::x3::traits::detail::move_to': none of the 3 overloads could convert all the argument types
1>d:\libs\boost\boost\spirit\home\x3\support\traits\move_to.hpp(150): note: could be 'void boost::spirit::x3::traits::detail::move_to<TRIV,Dest>(Source &&,Dest &,boost::spirit::x3::traits::variant_attribute)'
1> with
1> [
1> Dest=TRI,
1> Source=TRIV
1> ]

Как это разрешить? Полный текст: https://pastebin.com/2cp5NziH
Аноним 03/08/17 Чтв 17:33:46  1036997
>>1036758
Когда уже мелкомягкие вытащат filesystem из эксперименталки?
Аноним 03/08/17 Чтв 17:49:24  1037009
>>1036993
Два часа работы на перле и 10 дней ебанины на С++. Зато будет работать за 5 мс. Охуительная выгода.
Аноним 03/08/17 Чтв 17:51:38  1037011
>>1037009
На перле импортер моделей не напишешь.
Аноним 03/08/17 Чтв 17:53:49  1037013
>>1037009
В плюсах тоже есть регекс.
Аноним 03/08/17 Чтв 17:58:43  1037016
>>1037013
Медленнее.
Аноним 03/08/17 Чтв 18:05:18  1037021
>>1037009
Зря ты перл упомянул. Местные макакены никогда с ним не работали, но точно знают что он хуже чем js/peton/любой другой язык нейм.
Аноним 03/08/17 Чтв 19:57:48  1037111
>>1037021
Местные макакены, которые с ним работали, ещё точнее знают, что он хуже чем js/peton/любой другой язык нейм.
Аноним 03/08/17 Чтв 21:32:57  1037191
>>1036677
Массивы это указатели
Аноним 03/08/17 Чтв 23:43:14  1037366
>>1037191
Указатели это массивы

трустори, в B или BCPL так было
Аноним 04/08/17 Птн 11:01:57  1037611
>>1037021
Щас бы понтоваться знанием юзлесс некроговна некромамонта в 2017 году. Может еще коболом попонтуешься, или там PL/1 ?
Аноним 04/08/17 Птн 11:06:58  1037616
Чому qt creator не могут научить нормально выводить типы для auto?
Аноним 04/08/17 Птн 11:44:16  1037647
>>1037616
Потому что есть VS и CLion
Аноним 04/08/17 Птн 11:44:34  1037648
>>1036675 (OP)
Что точно делает std::thread::join()? Переустанавливает EIP на первую инструкцию кода потоковой функции? Почему называется join? Почему после выполнения join вызывающий код ждет завершения потока?
Аноним 04/08/17 Птн 11:48:10  1037651
>>1037648
> Почему называется join? Почему после выполнения join вызывающий код ждет завершения потока?
Потому что ждет, когда поток присоединится заджойнится к нему.
Аноним 04/08/17 Птн 12:06:14  1037664
Делаю нечто похожее на скайп, и нужно видео по сети передавать. Чтобы уменьшить трафик хочу передавать сжатое видео. Посоветуйте видео кодеки (желательно опенсорс с LGPL). Для аудио пробовал opus и speex, может есть еще годные кодеки?
Аноним 04/08/17 Птн 12:22:56  1037671
>>1037611
Дурик, перл изучают в универах британии на ай ти факультетах.
Обосрался? Подотрись и уйди молча.
Аноним 04/08/17 Птн 12:37:34  1037674
Сижу на работе пинаю хуй уже неделю без дела (С# ASP.NET веб макакен)

учу кресты

знаю Си

ПОЖЕЛАЙ МНЕ УДАЧИ
ГРУППА КРОВИИИИИИИИИИИИИИ
Аноним 04/08/17 Птн 13:03:18  1037688
>>1037664
какие кодеки епт
берепт - береж и реализуешь какой-нибудь стек протоколов по передаче потокового видео в сетяй tcp/ip
там будут указаны и кодеки и все остальное
Аноним 04/08/17 Птн 14:21:31  1037743
>>1036675 (OP)
В каких случаях возвращать из геттера ссылку, а в каких значение?
Аноним 04/08/17 Птн 15:09:14  1037787
>>1037616
Тому что ты плагин Clang Code Model не включил.
>>1037648
>Переустанавливает EIP на первую инструкцию кода потоковой функции?
Что, блядь? Где в стандарте плюсов есть слова "инструкция" и "EIP"?
>Blocks the current thread until the thread identified by *this finishes its execution.
http://en.cppreference.com/w/cpp/thread/thread/join
>>1037688
Нихуя не понял.
>>1037743
Нахуй тебе геттер, если ты ссылку возвращаешь?
Аноним 04/08/17 Птн 16:04:11  1037856
Как протраверсить дерево без рекурсии?
Аноним 04/08/17 Птн 16:08:51  1037866
>>1037856
Сделай конечный автомат, который либо пишет путь в стек, либо ссылки разворачивает.
Аноним 04/08/17 Птн 18:08:09  1037951
>>1036993
Таки разобрался со спиритом. Даже если оба операнда вариативного парсера возвращают типы, которые могут быть неявно преобразованы друг в друга, он все равно вернет variant<A, B>. Пришлось сделать для него визитор на шаблоне, чтобы он внутри себя все преобразовывал в итоговый тип.
Аноним 04/08/17 Птн 18:34:33  1037968
>>1037647
В клионе можно собирать кутовские проекты?
Аноним 04/08/17 Птн 18:35:13  1037970
>>1037787
>Тому что ты плагин Clang Code Model не включил.
Чому нет из коробки?
Аноним 04/08/17 Птн 18:35:21  1037971
>>1037968
А что ему помешает?
Аноним 04/08/17 Птн 18:37:04  1037973
>>1037971
я хуй знает. qmake вызывать надо
Аноним 04/08/17 Птн 18:39:09  1037976
>>1037787
>Тому что ты плагин Clang Code Model не включил.
Ебать, вот это действительно круто!
Аноним 04/08/17 Птн 19:26:44  1038018
>>1037968
Если на CMake, то все норм будет, иначе - никак. Они пока что даже не собираются нормальную поддержку редактирования CMake скриптов сделать, что уж говорить о других системах сборки (того же make, например, как самой простой и одновременно дурацкой системы сборки). Если подумать, если можно системой сборки сгенерировать проект для CodeBlocks, тогда и подключить CLion к нему плевое дело.
Аноним 04/08/17 Птн 20:54:06  1038067
>>1037664
Реализуй WebRTC, нахуй изобретать что-то.
Аноним 04/08/17 Птн 21:42:31  1038097
В каких случаях возвращаемое значение функции должно быть const?

Вообще, насколько фанатично надо использовать const?
Аноним 04/08/17 Птн 22:09:42  1038120
>>1038097
Ни в каких не надо использовать. Это страуструповый рак. Такое нужно лечить химиотерапией и полуторалитровыми клизмами.
Аноним 04/08/17 Птн 23:27:57  1038158
>>1038097
>В каких случаях возвращаемое значение функции должно быть const?
Только в тех случаях, когда ты возвращаешь класс, который ты ну никак не разрешаешь менять. Тупой вопрос.
Аноним 05/08/17 Суб 06:32:21  1038309
Плюсаны, у меня проблема. Когда я заменяю один файл в проекте другим, одноименным, visual studio не перекомпилирует его. Только если я зайду в файл, что-то поменяю и потом нажму ctrl+s, она увидит, что файл поменялся и перекомпилит его. Почему так происходит, и как настроить так, чтобы она рекомпилила файл в любом случае?
Аноним 05/08/17 Суб 08:57:01  1038315
>>1038309
Время модификации скопированного файла где-то в прошлом.
Аноним 05/08/17 Суб 09:48:45  1038330
>>1038158
а если я хочу вернуть const int?
Аноним 05/08/17 Суб 10:13:02  1038342
>>1038330
Скалярные типы и так передаются по значению, ты не сможешь его изменить, лалка.
другой
Аноним 05/08/17 Суб 11:49:26  1038385
22.PNG (32Кб, 830x444)
asdfasds.PNG (31Кб, 406x880)
1. Почему тип fun перестаёт подходить, есть я захватываю "a" и "b" (или что угодно ещё, даже обычную переменную не выходит)? Вон, "с" с помощью auto создалась и её можно даже передавать в другие функции. Что это за тип такой образуется, что он отличается от типа fun? Я вроде как прочитал главу про лямбды из "Современный и Эффективный С++", но это всё-равно непонятно.

2. Что почитать про разбор текстовых форматов файлов и вообще текста? Постоянно получаются чудовище на несколько сотен строк, примерно как на второй картинке. Можно, конечно переменные подписывать, но код и так очевидный по большей части, просто длиннее будет. Достаточно применение этих однобуквенных в начале указать. Тут для себя файлы с jps-ки запарсить, они изначально все верные, а если туда добавлять ещё проверки на корректность файла, то это же вообще ужас будет.
Аноним 05/08/17 Суб 12:34:43  1038395
>>1038385
Потому что у каждой лямбды уникальный тип. Это во первых, во вторых лямбда - это объект класса, а ты пытаешься приравнять его к указателю на функцию.
Аноним 05/08/17 Суб 12:47:36  1038400
>>1038395
> у каждой лямбды уникальный тип.
Лол. Система типов уровня крестоговна.
Аноним 05/08/17 Суб 13:34:37  1038429
>>1036675 (OP)
Надо ли каждый метод перегружать const и не-const версиями, или достаточно сделать одну const версию?
Аноним 05/08/17 Суб 13:47:02  1038447
>>1038400
>>1038395
Оба пиздят. Тип лямблы в общем случае - std::function<int(huint)>, а >>1038385 пытается привести лямбду к функции. Ясен хуй, когда ничто не захвачено, лямбда - функция.
Аноним 05/08/17 Суб 13:47:43  1038449
>>1038429
Пиздец, можно задать такой вопрос о любой черте языка. Ты охуел?
Аноним 05/08/17 Суб 14:04:34  1038460
>>1038447
>> std::function<int(huint)>
Попизди-ка мне тут. Открой стандарт и там написано, что лямбда представляет собой класс с определенным operator(), ну и еще некоторыми дополнениями, суть которых здесь не особо важна.
Стандартная библиотека лишь позволяет завернуть лямбду в std::function.
Аноним 05/08/17 Суб 14:13:19  1038470
>>1038460
Ты прав. А теперь ответь на исходный вопрос.
Аноним 05/08/17 Суб 14:39:26  1038488
>>1038470
Я вообще не тот тип, которому ты отвечал Я мимокрокодил.
Аноним 05/08/17 Суб 14:42:19  1038490
Как реализовать наследование метода общего класса, который выполняет одни и те же действия для всей иерархии под классов? Как обычный метод или как virtual?
Аноним 05/08/17 Суб 14:48:09  1038493
>>1038490
virtual имеет значение только тогда, когда ты пользуешься полиморфизмом указателей.
Аноним 05/08/17 Суб 14:49:26  1038495
>>1038490
Если планируется его переопределять в подклассах, то виртуал, если нет, то нет, очевидно же.
Аноним 05/08/17 Суб 15:58:11  1038531
>>1038447
>Тип лямблы в общем случае - std::function<int(huint)>
Ебать дебил.
Аноним 05/08/17 Суб 18:09:24  1038584
Есть ли возможность очистить вектор без освобождения памяти? Аналог
auto cap= vector.capacity();
vector.clear();
vector.reserve(cap);

только без деаллоков-аллоков лишних.
Аноним 05/08/17 Суб 18:19:12  1038602
>>1038097
>Вообще, насколько фанатично надо использовать const
Везде. Не слушай долбоебов. Запрещено все, что не разрешено явно - хорошая полиси, помогает освободить от множества головняков на последующих итерациях разработки.
Аноним 05/08/17 Суб 18:29:38  1038614
image.png (22Кб, 926x200)
>>1038584
http://ru.cppreference.com/w/cpp/container/vector/clear
Аноним 05/08/17 Суб 18:47:56  1038640
123456.png (12Кб, 727x184)
>>1038614
>никогда не доверяй референсам на русском языке
Эмпирическое правило опять сработало. Стандартом это не оговорено. Implementation dependent короче.
Аноним 05/08/17 Суб 19:28:29  1038675
>>1038447>>1038395
>std::function<int(huint)>
Благодарю, заработало. Правда, как-то вслепую использовать...
Я просто хотел добавлять в некоторый класс функции, и потом их как из массива использовать. Надеюсь, это нормальное решение, потом почитаю.
Аноним 05/08/17 Суб 19:31:42  1038677
makaki.png (40Кб, 1620x774)
C++ индусы ебанные как дела идут? Богомерзкие пидарасы.


мимо Си-бог
Аноним 05/08/17 Суб 20:03:00  1038690
>>1038602
Да-да, возвращай const-значение. Не забудь помахать ручкой move-конструктору.
Аноним 05/08/17 Суб 20:12:37  1038692
>>1038690
>возвращай const-значение.
Еще забыл конст ссылку. Про откровенное петросянство речи не было.
Аноним 05/08/17 Суб 21:00:50  1038707
Блять, пока полчаса писал sntp-клиент - успел почувствовать себя дауном. А все из-за ебучих Little и Big endian, которые в документации к протоколу не упоминаются.
Аноним 05/08/17 Суб 21:09:38  1038712
>>1038707
В RFC все есть. Вообще это обычная практика в сетевых протоколах, зато моторолобояре довольны.
Аноним 05/08/17 Суб 21:39:12  1038736
>>1038712
Какая-то неочевидная практика. Ну и протокол я реализовывал по Википедии, да
Аноним 05/08/17 Суб 21:47:07  1038738
>>1038309
Пересобирать проект после замены файла пробовал?
Аноним 05/08/17 Суб 22:06:42  1038754
>>1038640
В англоязычной версии написано то же самое и есть ссылка на ответ на стаке. Клир эквивалентен эрейзу от начала до конца, на стаке говорят, что эрейз не может менять капасити. В стандарте не нашёл:
http://eel.is/c++draft/vector#modifiers
>>1038736
>>1038707
Родина дала тебе itons и кучу всего другого.
Аноним 05/08/17 Суб 22:08:22  1038755
>>1038754
Так неочевидно было, что порядок байтов разный будет. Вот и мучился. Теперь буду rfc читать все-таки.
Аноним 05/08/17 Суб 22:09:13  1038756
>>1038754
>В англоязычной версии написано то же самое и есть ссылка на ответ на стаке.
Где нет внятного доказательства, что clear не меняет capacity.
> Клир эквивалентен эрейзу от начала до конца
Это до C++11 так было.
Аноним 06/08/17 Вск 00:31:17  1038822
>>1038385
>Что почитать про разбор текстовых форматов файлов и вообще текста?
boost::spirit. Базарю еще захочешь.
Аноним 06/08/17 Вск 02:13:20  1038848
>>1038677
Хреново. Стандартопетухи все тащят и тащят в стандарт все говно, что найдут вокруг. Прям, как Вован из пасты.
Аноним 06/08/17 Вск 03:15:59  1038866
>>1038848
std::vector<bool> bools;
// ...
bool *b = &bools[5];
Аноним 06/08/17 Вск 05:06:15  1038878
const
Аноним 06/08/17 Вск 05:28:21  1038880
>>1038878
unsigned
Аноним 06/08/17 Вск 08:58:13  1038904
>>1038880
reinterpret_cast
Аноним 06/08/17 Вск 11:44:17  1038942
>>1036675 (OP)
> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Redirect.14.props(46,3): импортированный проект "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.cpp.props" не обнаружен. Проверьте правильность пути в объявлении <Import> и убедитесь в наличии файла на диске.
Как фиксить? Файла-то там нет этого. Даже если подложить из Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets его - та же ошибка.
Аноним 06/08/17 Вск 12:07:45  1038957
>>1038942
А, всё понял.
> The WDK is not yet compatible with Visual Studio 2017.
Заставляют жрать недоделанное говно.
Аноним 06/08/17 Вск 17:36:24  1039148
ананасы, где можно почитать, как работает rtti?
Аноним 06/08/17 Вск 18:25:01  1039190
А как передать произвольное число аргументов в другую функцию функции? Типа, у меня есть функция prn(), которая эти аргументы должна передать дальше в printf или fprintf. Конечно, есть vsprintf специально на этот случай, а в общем случае есть возможность без изменений передать всё это дальше?
Аноним 06/08/17 Вск 18:55:44  1039220
>>1039190
Ну например так:
template<typename ... Args>
void fwd_call(Args ...args) {
some_fn(args...);
}
Аноним 06/08/17 Вск 19:31:50  1039268
>>1039220
А в сишных функциях (без тимплитов) как?
Аноним 06/08/17 Вск 19:55:07  1039293
>>1039268
В си тред пиздуй va_args
Аноним 06/08/17 Вск 20:55:33  1039381
Привет Анон, хочу вкатиться в программирование. Решаю задачки от яндекса и пытаюсь освоить for
https://pastebin.com/A9g93esN
Не могу понять почему у меня count увеличивается даже когда значения a и a[j] не равны. Объясните пожалуйста почему? И как сделать цикл так что бы сверять значения друг с другом
Вот задача что бы понять контекст: Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.
Формат входных данных
В первой строке вводится количество элементов в массиве. Во второй строке вводятся элементы массива.
Формат выходных данных
Выведите ответ на задачу.
Аноним 06/08/17 Вск 20:57:04  1039382
>>1039220
Мм, благодарю.
Аноним 06/08/17 Вск 21:23:02  1039440
>>1039381
Была похожая задача на собеседовании (привести как можно больше способов узнать количество повторений значения).
На векторах сделать можно, но пердолинг выходит, попробуй сделать на std::map или std::unordered_map.
По твоему вопросу - ты не обнуляешь счетчик.
Можно оптимизировать присваивая счетчику сразу 1, а внутренний цикл начинать не с 0, а с j + 1.
Аноним 06/08/17 Вск 21:30:39  1039462
>>1039440
https://stepik.org/lesson/13025/step/14?unit=undefined - эта задача
Идея в том что, если в массиве нету второго такого же элемента, то счетчик будет равен одному (когда его будут сравнивать с самим собой), но у меня почему то этот иф не работает и счетчик увеличивается каждый цикл независимо от значений, почему? А про обнуление это точно, спасибо
Аноним 06/08/17 Вск 22:10:23  1039547
>>1039462
Кстати заметил, на этапе инициализации ты создаешь вектора размера n, а потом пушаешь еще значения. Создавай или пустые вектора или не пушай, а присваивай, обращаясь по индексу (a = temp).
Счетчик, походу, по этому и увеличивается.
Аноним 07/08/17 Пнд 09:28:42  1039854
>>1039381
Я хз как кодировать на Си, но алгоритм такой:
Берем первый элемент X далее пробегаемся по массиву X+1 и делим каждый на X если резуьтат деления 1 без остатка. значит мы нашли повторяющийся элемент.
ну и сообственно от этих данных строим массив.
Если результат деления не 1, то пустое значение, если результат 1, то пишем элемент.
Как то так.
На питоне бы ебанул на СИ хз как
Аноним 07/08/17 Пнд 09:58:51  1039859
>>1039854
Это квадрат, нахуй такое решение. Даже предварительное упорядочивание и проход по упорядоченному массиву будет значительно быстрее.
Аноним 07/08/17 Пнд 10:17:08  1039870
>>1039859
какой нахуй квадрат. ты береш первый элемент массива и делишь все элементы, потом второй и так далее.
Аноним 07/08/17 Пнд 10:55:15  1039886
>>1039870
> ты береш первый элемент массива и делишь все элементы
(n-1) операций,
> потом второй
(n-2) операций.
> и так далее
(n-3)
...
1

Сумму сам найдешь?
Аноним 07/08/17 Пнд 11:09:04  1039896
>>1039886
n(n-1)/2 ~ O(n^2).
Тогда как эту задачу можно решить за O(nlogn).

Кроме того, зачем использовать деление, если можно тупо сравнивать элементы?
Аноним 07/08/17 Пнд 12:45:20  1039954
>>1039896
>nlogn
блеа пиздец весь матан забыл. Братюни подскажите че почитать, чтоб освежить память?
Аноним 07/08/17 Пнд 12:50:59  1039958
>>1039954
Да по алгоритмам и структурам данных что-нибудь стандартное почитай. Тут от матана только логарифм и O-нотация.
Просто гугли "алгоритмы и структуры данных". Там видео, статьи, книги, вики. Что нравится больше, то и изучай.
Аноним 07/08/17 Пнд 13:37:04  1039982
>>1039462
Какой интересный сайт, первый раз такое вижу, 10/10 идея.

Есть что-то такое в несколько раз сложнее? Я с другого языка перекатываюсь, и мне бы стоило попривыкать к стандартной библиотеке. А то всё руки тянуться вручную все массивы на указателях делать и прочее такое.
А тут попробовал для твоей задачи std::unordered_map из поста выше (я никогда ничего такого не использовал — в моём языке любой двухсвязный список вручную нужно было для каждого типа, шаблонов то нет. Максимум, у меня была обёртка вокруг указателей, так что указываешь размер типа и он создаёт для неё этот список. Но при обращении к любому элементу нужно использовать приведения типов. И ещё там куча лишних вызовов функций возникает и куче другого мусора.) и это бесподобно, в три тысячи раз удобнее - решение за минуту пишется, где раньше пришлось бы или насиловать массивы, или копировать откуда-то код для аналога std::map изменяя все типы.
Аноним 07/08/17 Пнд 17:14:03  1040090
Читаю учебник по крестам, пишу мелкие проекты вроде крестиков и ноликов, снейк. Пока не собираюсь(в ближайшие 2 года) искать работу программистом, начинаю учебу, первый курс. Стоит идти изучать фреймворки или лучше сосредоточиться на изучении языка, изучая разные библиотеки и так далее?
Аноним 07/08/17 Пнд 17:44:55  1040123
>>1040090
На крестах не то, чтобы легко работу найти. Или легко, но разгребать какое-нибудь легаси на пару с Delphi.
Если есть желание, то можешь какой-нибудь другой язык учить. Даже если кресты останутся твоим основным языком, изучение языков даёт пощупать другие концепции и подходы, что улучшит твои навыки программирования в целом .
Аноним 07/08/17 Пнд 18:26:51  1040144
>>1040090
Там если этот один стандарт читать и пытаться понять его займет столько времени, что уже новый стандарт выйдет. Касательно работы, есть множество контор, некоторые требуют глубокого знания языка (SFINAE и прочие шаблонные ништяки), в других случаях хватает только поверхностного знания языка (что такое деструкторы, порядок инициализации, время жизни, и др), короче, база, потому что шаблоны, конечно, полезны, но никто подход OOD еще не отменял, поэтому, кроме случаев контейнеров, бывает, обходятся и без них.
Вообще, посмотри на Python, например, он вообще, в целом универсальный, выразительный и простой язык, в дальнейшем его понимание может пригодиться для постройки прототипов (а прототипы зачастую нужны, чтобы проверить, верна ли твоя теория по поводу склеивания паттернов или нет или еще каких), да и с крестами вяжется вполне нормально, так что его преимущества можно будет тоже подтянуть.
Ну а фреймворки - это дело такое, их пиздецки много (если речь идет не о монструозных, наподобие Qt), там уже по интересам, куда пойдешь, может будешь всю жизнь макакой писать GUI для макдака, или, например, уйдешь в сетевое программирование (а там уже придется изучать системные вызовы), так что тут дело неоднозначное.
Аноним 07/08/17 Пнд 20:52:26  1040250
>>1040144
>>1040123
Спасибо за ответы. Я собираюсь идти по пути C++/Java/python. С++ скорее для себя изучаю, как основу программирования. Там где я живу(Кипр) вряд ли есть работа для мидлов и джунов на С++. Тогда продолжу заниматься по учебнику, наверну Effective C++ потом есть книга про 47 задач в С++ и перейду к Джаве, она будет у меня еще в университете.
Аноним 08/08/17 Втр 03:12:50  1040413
Я что-то понять не могу, сколько чисел могут хранить float и double после точки, может кто подсказать?
Аноним 08/08/17 Втр 03:48:47  1040417
>>1040413
Число с плавающей запятой представляется с использованием мантиссы, показателя степени и знака. Это ДВОИЧНОЕ число, скорее всего, ты не сможешь представить его в виде конечной десятичной дроби, поэтому при вычислениях выходит пиздец сколько знаков. Точное значение дает только оригинальное двоичное представление в формате (+/-) M * 2^F.
Аноним 08/08/17 Втр 03:54:32  1040418
Плюсач, я решил написать себе 2d игровой движок. Что мне взять для основы графической системы? В универе рисовал сферы в DirectX, но там у меня были некоторые проблемы с производительностью на древних университетских компьютерах. С нуля написать самому не осилю.
Аноним 08/08/17 Втр 03:58:43  1040421
>>1040417
Пиздец какой-то, пожалуй я пропущу этот момент.
Аноним 08/08/17 Втр 04:01:03  1040422
>>1040413
Сколько реализовано, столько и хранят. float и double - числа в формате IEEE 754.
http://en.cppreference.com/w/cpp/types/numeric_limits
Аноним 08/08/17 Втр 04:27:03  1040428
>>1040413
Пришло время читать 754 стандарт.

Если правильно помню, то для float вроде бы около 26 цифр после запятой максимум. Алсо printf майкрософта не умеет их все напечатать.
Аноним 08/08/17 Втр 05:49:44  1040430
>>1040428
Float 7 значащих, double 15. Число цифр после запятой нельзя предсказать. Ну что же вы, плюсисты!
Аноним 08/08/17 Втр 06:26:52  1040444
>>1040430
> Ну что же вы, плюсисты!
Они плохо разбираются в десятичных числах.
Аноним 08/08/17 Втр 07:28:48  1040457
>>1040413
На практике похуй, сколько там десятичных циферок после запятой (тем более, это сложно определить и зависит от компилятора и от самого числа). Ты для чего такой вопрос задаешь? Какая у тебя задача?
Аноним 08/08/17 Втр 07:30:07  1040458
Подскажите что лучше (или как правильней), в очень очень часто используемом методе (функции члене) у меня используются переменные, так вот у меня вопрос, где эти переменные лучше создавать, в самом методе или перенести их в приватные переменные? Просто если вписать создание переменных в метод, то получится что при каждом заходе в метод эти переменные будут пересоздаваться, а если вписать их в качестве приватных переменных и делать присваивание, то интерфейс класса будет несколько засран.
Аноним 08/08/17 Втр 07:34:22  1040460
>>1040458
Если они используются только этим методом - это его локальные данные, и в классе они на хуй не нужны. Чтобы не пересоздавать - кури мануалы по кейворду static.
Аноним 08/08/17 Втр 07:38:50  1040464
>>1040460
Если я правильно понимаю, то со словом static все экземпляры класса будут разделять эту переменную, мне это не нужно.
Аноним 08/08/17 Втр 07:42:23  1040467
>>1040464
Можно запилить структорой в одно приватное поле.
Аноним 08/08/17 Втр 07:43:42  1040469
>>1040467
Не решение проблемы.
Аноним 08/08/17 Втр 07:45:36  1040470
>>1040464
т.е.

class huias {
private:
//...
struct {
int huint;
std::string huing;
std::vector huector;
} p_myMethodData;
//...
};
Аноним 08/08/17 Втр 07:47:38  1040473
>>1040469
Решения проблемы всего два: ты либо сохраняешь данные в объекте, либо не сохраняешь. Сохранение в отдельной структуре просто минимизирует засерание интерфейса.
Аноним 08/08/17 Втр 07:49:19  1040474
>>1040469
И, потом, как ты их инициализируешь? Как узнаешь, что они не инициализированные? Что возвращает метод?
Аноним 08/08/17 Втр 11:20:19  1040534
#define BOOL(param, cliopt) \
s += sprintf(s, " %s", (param) ? cliopt : "no-"cliopt);
ошибка: невозможно найти оператор строкового литерала «operator""cliopt» с аргументами «const char [4]», «long unsigned int»
Я не шарю в cpp, мне только скомпилировать прогу, msys2 ругается.
Аноним 08/08/17 Втр 11:26:41  1040535
Решил тут изучать этот язык и тут же столкнулся с проблемой. В книге приведена программа
while (std::cin >> value)
{
a+=value;
}
cout <<a;
Но у меня эта программа не работает. После ввода чисел ничего не происходит. Почему так?
Алсо, сейчас вроде уже c++20 выходит, а учебник по 11 версии, это сильно плохо?
Аноним 08/08/17 Втр 11:37:58  1040547
>>1040535
Вcе работает:
http://ideone.com/hpDEUh
Аноним 08/08/17 Втр 11:40:07  1040548
>>1040535
C++11 считается хипсторским новшеством, которое до конца ещё не все компиляторы поддерживают. Т.е., даже на C++17 писать ещё рано.
Аноним 08/08/17 Втр 11:42:49  1040552
>>1040547
Если добавить букву в конце то и у меня работает, просто в книжке про это написано не было, просто ввод чисел и заебись, вот я и подумал, что сделал что то не так
Аноним 08/08/17 Втр 11:46:48  1040554
>>1040548
Маня, везде уже С++14, кроме несчастных людей, с поддержкой WinXP и прочим некроговном некромамонта.
Аноним 08/08/17 Втр 11:52:28  1040559
>>1040554
Везде это где? MSVC только с 17 более менее начала стандарт поддерживать, gcc с 5 (учитывая что актуальная для RHEL версия - 4.8.5).
Аноним 08/08/17 Втр 12:00:03  1040567
>>1040559
Я скажу по другому - единственная контора, где был C++98, это чуваки, делающие что-то для военки под WinXP. Во всех остальных конторах, о которых я знаю - минимум С++14. В том же Яндексе - Шланг 4.0. У меня в конторе - чуваки балуются с g++7, хотя в продакшене 5.4 (которая умеет в 14). На прошлом месте работы я писал в 2015 студии, которая умела в практически весь 14. И везде так. Самое сложно было лет 5 назад уйти с говнокомпиляторов на что-то модерновое, с поддержкой 11. А сейчас это уже проще.
Аноним 08/08/17 Втр 12:03:25  1040574
>>1040567
Во всех более менее крупных конторах тем не менее 11 это предел мечтания, опять же потому что энтерпрайзные линуксы держат маааксимум 138-139 ABI. Соответственно остается ubuntu, но там денег нет как таковых чтобы под нее продукты делать в 2к17.

В Яндексе возможно, эти жополазы всегда славились любовью к бете альфы последнего гцц в продакшене.

MSVC15 поддерживает 14 стандарт на пол шишечки. https://msdn.microsoft.com/en-us/library/hh567368.aspx
Аноним 08/08/17 Втр 12:49:41  1040604
>>1040418
OpenGL
Аноним 08/08/17 Втр 13:42:43  1040621
class.PNG (26Кб, 909x409)
main.PNG (9Кб, 424x231)
Товарищи эксперты, разъясните зеленому. Имеется такой говно-класс (не кидайтесь тапками, он специально такой говенный); собственно, я хотел разобраться с forwarding references. Для этой цели имеется не менее говенная функция func(). В итоге, все вроде бы работает так, как надо, но одного я не могу понять: почему _s сохраняет свое значение при вызове конструктора, принимающего std::string&& _s ? Здесь же, по сути, в момент вызова s(_s) должен вызываться перемещающий конструктор, ибо _s имеет тип std::string&&, но _s сохраняет свое значение.
Если кто-нибудь объяснит тупому, буду благодарен
Аноним 08/08/17 Втр 13:43:34  1040622
output.PNG (9Кб, 846x553)
>>1040621
забыл вывод
Аноним 08/08/17 Втр 13:58:35  1040635
>>1040604
А может быть ты знаешь? Я не очень хорошо в этом разбираюсь, может быть что-то очевидное пропустил.
Есть DirectDraw. Если выводить двухмерную графику через него, то даже на древнем ноутбучном целероне без видеокарты оно выдавало 60 фпс, даже если там в два слоя экран зарисовать. Если я просто вывожу что-то размером с экран на том же ноутбуке через openGL, то выше 40 фпс мне не оторваться, даже если отключить все линейные интерполяции и корректность перспективного преобразования поставить в минимум. Там же все эти матрицы преобразования и прочий мусор считаются для каждого пикселя, никаких оптимизаций от 2d оно не использует.
Сейчас эта проблема ушла в прошлое, конечно, но всё-равно, пустое opengl-окно загружает ядро процессора где-то на четверть, когда полноэкранная directdraw-программа где-то на 2-3% (да и не пустая тоже, если посмотреть на древние dd-игры).
Есть glRasterPos/glDrawPixels которые решают эту проблему, но там вроде как только масштабирование и простейшие фильтры на цвета есть, а я совершенно точно видел в играх плавные повороты в 2d. И новые версии opengl в общем-то вовсе не содержат эти glDrawPixels. Как быть? Эту dd-производительность можно вытащить не используя gl-контекст версии 1.1?
Аноним 08/08/17 Втр 14:10:56  1040643
>>1040418
в опенгл рисуй с ортогональной матрицей трансформации. А вообще - забей на древние универские компы, в которых стоит железо, на которое насрать вообще всем. Если надо что-то показывать - спизди любой ноутбук с коре2дуо, там уже опенгл 3.х работает
Аноним 08/08/17 Втр 14:55:18  1040668
>>1040534
А что конкретно этот макрос должен делать? Похоже на какую-то отладочную фигню. Можно попробовать просто выпилить его тело, или заменить на 's+="foobar"'
Аноним 08/08/17 Втр 14:57:27  1040671
>>1040559
C L I O N
L
I
O
N
Он буквально только пару фич 17го стандарта не умеет.
Аноним 08/08/17 Втр 15:06:37  1040678
>>1040621
>Foo(std::string&& _s) :s(std::forward(_s))

У _s тип rvalue-ссылки, но само по себе _s - это lvalue-значение (к нему можно обратиться по имени, потыкать что-то, поменять). Получается & && => &.
Аноним 08/08/17 Втр 15:07:22  1040680
>>1040671
Пять гигабайт памяти для хелловорлда - это норма!
Аноним 08/08/17 Втр 15:08:24  1040681
>>1040635
DirectDraw сами майки давно закопали, сейчас ЛЮБОЕ 2d на самом деле 3d, без матрицы искажения перспективы.
Тормозит, потому что пишешь через легаси, на огле не имеет смысл писать если его версия старше 3.0 (нужны свежие драйверы видюхи, и может не взлететь на совсем некроговне). Учи пайплайны и шейдеры, чтобы не быть батхертом, и пиздуй в огл-тред /gd.
Не плохой старт можно освоить через opengl-tutorial.org
Аноним 08/08/17 Втр 15:10:15  1040684
>>1040680
Ты ебанутый крестовый код в интерпретаторе гонять? Конпеляй нормально.
Аноним 08/08/17 Втр 16:02:24  1040725
сразу прошу прощения за нуфаговопрос, но в связи с тем что не могу сформулировать запрос гуглу пишу сюда.

есть функция с тремя аргументами вида:
someClass::func (int a, bool b = false, int c = -1);

Как видно, "b" и "c" имеют дефолтные значения.
Можно ли как-то сделать так, чтобы третьему аргументу (с) надо было обязательно присваивать значение при вызове функции в том случае, если явно задается второй (b)? Помимо перегрузки, конечно.

Суть в том, что мне нужно, чтобы аргумент "с" обязательно был задан, только когда b = true, для случая, когда b=false, значение "с" просто не используется.
Аноним 08/08/17 Втр 16:07:47  1040728
>>1040678
Большое спасибо
Аноним 08/08/17 Втр 16:18:21  1040735
>>1040725
А зачем тебе тогда b? Сделай две перегрузки, первую только с параметром a, а вторую с a и с. Общий функционал вынеси в отдельный метод. Если не хочешь светить его, можешь объявить в анонимном пространстве имен внутри сорца.
Аноним 08/08/17 Втр 16:34:00  1040754
image.png (12Кб, 410x114)
>>1040681
>сейчас ЛЮБОЕ 2d на самом деле 3d
Ой ли? Почему тогда Age of Empires II 2000 года всё ещё задействует ядро максимум на 2-3%? Тогда как ремейк AoE II HD (сделанный уже как 3d для совместимости с win7 и старше) ядро полностью загружает, при том, что скриншоты почти 1 в 1 совпадают? Ясно конечно, что они намутили с двойной буферизацией и из-за ожидания буфера там ядро полностью загружается даже пустой сценой. Но даже если это исправить в своём коде - меньше 25% ядра ну никак не выходит загружать (если выводить хоть какое-то изображение на весь экран в "3d режиме" с матрицами).
>Тормозит, потому что что пишешь через легаси, на огле не имеет смысл писать если его версия старше 3.0
Я знаю как использовать новые версии гл. Почему не имеет смысла, объясни пожалуйста? Создавая древний 1.1 контекст мне всё-равно доступен весь функционал 3.0+ через расширения без потери производительности и с сохранением древних функций.
Я сейчас переделал одну небольшую хрень с 1.1 на 3.0+, загнал свои glBegin/glEnd в VAO и всё такое. Разницы - никакой вообще, только появилось много лишних строк для этих массивов вершин и шейдеров-заглушек. Ради чего мне использовать 3.0+ сейчас? Я не собираюсь писать под телефоны на GL ES, и мне есть чем заняться, кроме как писать обёртку вокруг вершинных массивов (для того чтоб получить удобный аналог glBegin/glEnd на 3.0+). Имхо, это всё-таки удобно, когда нужно три треугольника для мелкой детали интерфейса нарисовать, чем каждую точку хранить в массиве или буфере.
Аноним 08/08/17 Втр 16:35:01  1040755
>>1040430
>>1040428
>сли правильно помню, то для float вроде бы около 26 цифр после запятой максимум.
>Float 7 значащих, double 15.
В каком стандарте так написано?
>>1040457
>тем более, это сложно определить и зависит от компилятора и от самого числа
http://en.cppreference.com/w/cpp/types/numeric_limits
Единственное, о чём там не сказано - это denormalised-числа.
>>1040534
У тебя cliopt не определён. Когда он определён, у тебя будут соединены две строки. Когда он не определён, будет такая шняга, как эта (компилятор ищет user-defined literals).
Нужно больше кода, тогда подскажу. Олсо:
> the \ character must be the last character on the line.
>>1040552
operator>> объекта std::istream возвращает другой std::istream. std::istream преобразуется в bool (как того требует использование выражения в скобках около while/if) следующим образом:
http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool (снизу табличка)
>>1040548
>которое до конца ещё не все компиляторы поддерживают.
ГЦЦ и кланг поддерживают, а Студии всегда насрать на это.
>>1040559
>учитывая что актуальная для RHEL версия - 4.8.5).
https://gcc.gnu.org/gcc-4.8/cxx0x_status.html
С++11 там есть.
>>1040621
Выбирается идеально подходящий оверлод конструктора - принимающий ссылка на конст-строку, никакого мува там быть не может, аргумент-то:
1) конст
2) лвалью, то есть для него будет вызван деструктор в другом месте программы, и будет пиздец
Даже если бы ты сделал не const-ссылку, то никакого мува там бы не было по причине 2, там было бы копирование. Мув применяется только для рвалью, а передать лвалью в качестве рвалью-ссылки без std::move() ты не можешь.
>>1040635
>Есть DirectDraw.
Это же, типа, рисование во фреймбуфер процессором? Попробуй так же делать в ОпенГЛ.
https://open.gl/framebuffers
Про ДиректДрав что-то знаю, про 3Д ничего не знаю.
>я совершенно точно видел в играх плавные повороты в 2d
Это всё вычисления на процессоре.
>>1040671
Клион - это не компилятор.
>>1040684
Жир - часть рациона.
>>1040725
>Можно ли как-то сделать так, чтобы третьему аргументу (с) надо было обязательно присваивать значение при вызове функции в том случае, если явно задается второй (b)? Помимо перегрузки, конечно.
Нет.
Но если тебе прям очень сильно хочется выебнуться, то ты делаешь следующее:
http://coliru.stacked-crooked.com/a/e453ba6921447a67
Я лишь не смог защитить функцию от передачи в неё строки.
Аноним 08/08/17 Втр 16:37:05  1040757
>>1040725
Прямо так, нельзя. Было предложение в стандарт, чтобы ввести пустые аргументы через зяпятые (типа как for. Foo(fuck, , you), но не взлетело.
Аноним 08/08/17 Втр 16:43:46  1040758
>>1040755
Ну, под клионом я и его бекенд подразумевал, он может и в нативный код с оптимизациями.
Аноним 08/08/17 Втр 16:47:42  1040763
>>1040754
1) кривой порт, той игры, например?
2) с пустым окном конечно разницы не будет. Попробуй на легаси реализовать отложенное освещение, например.
3) нужно не обертки делать, а думать над архитектурой рендерера
Аноним 08/08/17 Втр 16:54:12  1040769
>>1040758
Ты путаешь IDE и компилятор, перестань делать это.
Аноним 08/08/17 Втр 17:16:04  1040785
>>1040769
Но клион это не ide (или я с чем-то путаю)
Аноним 08/08/17 Втр 17:18:16  1040786
>>1040785
Блин, точно, я clang имел ввиду
Аноним 08/08/17 Втр 17:23:04  1040790
>>1040785
Ну да, клион - это make-файлы, gcc - это ide, а grub - компилятор, ты все правильно понял.
Аноним 08/08/17 Втр 17:25:59  1040793
>>1040790
Я же ниже пофиксился
Аноним 08/08/17 Втр 17:30:41  1040799
>>1040763
2) Почему бы и нет, попробую на днях. Почту, телеграмм? Куда написать о результатах, если тебе интересно?
Аноним 08/08/17 Втр 18:42:07  1040838
>>1040799
Почему бы не в этот тред?
Аноним 08/08/17 Втр 18:57:29  1040846
>>1040621
>Если кто-нибудь объяснит тупому, буду благодарен
Ты, как и многие ньюфаги, путаешь типы с категориями значений.
В s(_s), _s это lvalue с типом std::string. lvalue не биндится к rvalue-ссылкам, поэтому перемещающий конструктор вызван быть не может, т.к. у него параметр — rvalue-ссылка.
Если написать s(std::move(_s)), то перемещающий конструктор будет вызван, т.к. std::move(_s) это xvalue типа std::string.
Аноним 08/08/17 Втр 19:01:37  1040847
>>1040559
>учитывая что актуальная для RHEL версия - 4.8.5
В RHEL ставится devtoolset-6 с gcc 6.2.1
Аноним 08/08/17 Втр 19:25:23  1040859
>>1040678
>>Foo(std::string&& _s) :s(std::forward(_s))
Foo(std::string&& _s) :s(std::move(_s))
Аноним 08/08/17 Втр 19:53:55  1040892
>>1040859
Обе работают, но forward преобразует в ссылку, соответствующую типу, таким образом предпочтительнее в таких случаях.
Аноним 08/08/17 Втр 20:28:44  1040938
>>1040859
Большое спасибо
Голова кругом весь день с этого
Аноним 08/08/17 Втр 20:39:50  1040948
>>1040892
Мейерс считает, что std::move предпочтительнее. Извени.
Аноним 08/08/17 Втр 20:45:08  1040954
>>1040892
>но forward преобразует в ссылку, соответствующую типу
Нихуя не понял.
Аноним 08/08/17 Втр 21:34:10  1040987
SDL2 подходит для реализации игры, где в основном на экране менюшки и статичная картинка,или надо чего попроще/посложнее?
Аноним 08/08/17 Втр 21:34:41  1040988
>>1040755
>то есть для него будет вызван деструктор в другом месте программы, и будет пиздец
Какую-то хуйню я написал, могу я сказать после чтения доков.
Аноним 08/08/17 Втр 21:58:11  1041004
>>1039547
Подредактировал, но теперь, когда в массиве есть повторяющиеся значения он добавляет в новый массив 0. Откуда он берется не понимаю. Не можешь подсказать откуда он появляется и как от него избавиться?
>>1039440
>попробуй сделать на std::map или std::unordered_map.
Такие штуки я пока еще не проходил))
Аноним 08/08/17 Втр 22:11:55  1041019
>>1041004
Я у мамы сишник, но вопреки всему такое решал весьма неоптимально (2^n грубо округляя). Если оптимизации не пытаться делать, то задача простая
Аноним 08/08/17 Втр 22:14:03  1041024
>>1040755
>С++11 там есть.
Речь за 14 шла.
Аноним 08/08/17 Втр 22:14:32  1041026
>>1040847
Пока админ не ебанутый - не ставится.
Аноним 08/08/17 Втр 22:15:15  1041027
>>1041026
Дебил.
Аноним 08/08/17 Втр 22:16:01  1041028
>>1041027
Да, тоже вариант. Но нормальный админ на это не пойдет.
Аноним 08/08/17 Втр 22:17:07  1041030
>>1041028
Почему?
Аноним 08/08/17 Втр 22:22:42  1041033
>>1041030
Потому что на не-девелоперском RHEL'e за добавление rhscl расширений велика вероятность получить дроп лицензии, стоит, которая, на секунду, не мало даже для небольшого 16-сокетного сервера.

http://www.linuxcenter.ru/shop/distros/linux-distros/Red_Hat_Enterprise_Linux_for_IBM_POWER_Premium_16_sockets_Up_to_120_LPARs_with_Smart_Management_3_Years/
Аноним 08/08/17 Втр 22:24:12  1041034
>>1041033
А зачем на не-девелоперском RHEL'е беспокоиться о версии gcc?
Аноним 08/08/17 Втр 22:24:57  1041035
>>1041034
А как ты будешь на нем деплоится?
Аноним 08/08/17 Втр 22:43:00  1041042
>>1041035
>деплоится
Если я правильно понял твоё хуесосовское наречие, ты говоришь о запуске.
Для запуска важна версия libstdc++, а не gcc.
Аноним 08/08/17 Втр 22:44:02  1041043
>>1040954
lvalue-ссылку преобразует в lvalue-значение, rvalue-ссылку преобразует в rvalue-значение.
В крестах кроме rvalue-lvalue-ссылок есть ещё аналогичная таксономия значений, которая принимает участие во всей этой мишуре с rvalue-lvalue дичью.
Сам я всю таксономию тоже слабо осознаю.

>https://www.justsoftwaresolutions.co.uk/cplusplus/core-c++-lvalues-and-rvalues.html
>Finally, a named object declared with an rvalue reference (declared with &&) is also an lvalue. This is probably the most confusing of the rules, if for no other reason than that it is called an rvalue reference. The name is just there to indicate that it can bind to an rvalue (see later); once you've declared a variable and given it a name it's an lvalue. This is most commonly encountered in function parameters.
>>1040948
Может Мейерс и прав.
Аноним 08/08/17 Втр 22:44:03  1041044
>>1041042
Ебать ты гений, а откуда ты высрешь под рхелом нужную версию libcxx?
Аноним 08/08/17 Втр 22:46:21  1041046
>>1041044
https://stackoverflow.com/a/15602073
> 2) Statically linking libstdc++ would work around the problem, but you don't need to, because that's what the Red Hat Developer Toolset (devtoolset) does for you anyway. The whole point of devtoolset is that it allows you to use a newer GCC and newer libstdc++ but without creating any run-time dependencies on the newer libstdc++ library. The compiled executables only need the system version of libstdc++.so that is always present on RHEL/CentOS, even systems without devtoolset installed.
Аноним 08/08/17 Втр 22:47:45  1041047
>>1041046
Збс, ты решил задачу для laba1, теперь слинкуй статически все зависимости чтобы не было ABI-конфликтов.
Аноним 08/08/17 Втр 22:49:32  1041049
>>1041047
-D_GLIBCXX_USE_CXX11_ABI=0
Аноним 08/08/17 Втр 22:50:44  1041050
>>1041043
>Сам я всю таксономию тоже слабо осознаю.
Там всё очень просто. Как только осознаешь, что у выражений есть 2 свойства: тип и категория значения.
Аноним 08/08/17 Втр 22:56:18  1041052
>>1041049
Ну и пройдя полный цикл ты таки сам родил что придется отказаться от нового ABI. Браво.
Аноним 08/08/17 Втр 23:10:13  1041058
>>1041019
А можешь пояснить откуда в ауте нули берутся
Например я ввожу :
5
1 2 3 2 3
И мне вместо того что бы выдать просто 1, выдает 1 0 0 0 0
Откуда эти 0 берутся и как их пофиксить?
Аноним 08/08/17 Втр 23:22:49  1041062
>>1041004
>Подредактировал
Код показывай.
Но наперёд могу предположить что вектор с результатом у тебя сразу на n элементов, ты не можешь знать сколько их будет.
Аноним 08/08/17 Втр 23:42:11  1041073
1502224924130.png (98Кб, 480x854)
1502224924259.png (39Кб, 480x854)
>>1041058
Хуй его знает, вот тебе мое всратое рабоче-крестьянское решение. В ТЗ сказано тупо вывести уникальные элементы, а не копировать их в отдельный массив.
Аноним 08/08/17 Втр 23:48:09  1041077
>>1041062
отклеилась ссылка, я и не заметил https://pastebin.com/gsMnzzRC
Аноним 09/08/17 Срд 00:01:00  1041080
>>1041077
> for (int i = 0; i < n; i++)
в цикле, в котором ты выводишь элементы вектора b, условие продолжения цикла неверное.

Правильно так:
for (int i = 0; i < b.size(); i++)

Или так:
for (const auto& i: b)

мимо другойанон
Аноним 09/08/17 Срд 00:11:09  1041086
>>1036675 (OP)
Есть файл с данными вида:

header число
type число
type число
type число

Как из него выделить все числа и обработать их соответствующим образом, как указано в префиксе? Паттерн state machine и регэксы?
Аноним 09/08/17 Срд 00:40:51  1041098
>>1041086
ifstream + operator >> Wow
Аноним 09/08/17 Срд 00:46:10  1041102
>>1041077
Этот >>1041080 правильно сказал. В итоге ведь в векторе b может быть [0..n] элементов.
Аноним 09/08/17 Срд 02:01:20  1041124
>>1041080
>>1041102
Спасибо большое аноны!
Аноним 09/08/17 Срд 04:14:36  1041154
>>1041052
Ты что-то пытался кукарекать про установку devtoolset для деплоя... Короче, обтекай молча.
Аноним 09/08/17 Срд 10:23:04  1041198
Двач, подскажи, мне нужно что-бы было как в классе только без класса, пишу в заголовочном файле глобальные переменные, функции должны менять значения этих переменных, только у меня происходит "multiple definition", я знаю про extern и перенос определения переменных в исходный файл. У меня вопрос, это единственный способ обхода multiple definition и возможность работы по описанному мною способу? Как вообще в C это делали?
Аноним 09/08/17 Срд 11:14:44  1041220
>>1041198
Надо делать структуры и передавать функциям поинтер на них. Никаких глобальных переменных, они хуёвые.

struct huiuct {
int huint;
char huiar;
} huiuct_t, *phuiuct_t;

bool huiunc(phuiuct_t object, int param, int huiam) {
if (!object) {
return true;
}
return false;
}
Аноним 09/08/17 Срд 11:25:56  1041225
>>1041220
> typedef struct huiuct {
Фикс.
Аноним 09/08/17 Срд 11:26:31  1041226
>>1041198
В хедерах перед объявлениями добавь extern (без определений!), в исходниках сами определения.

// fuck.h
extern long long YRMOM;

// fuck.c
#include "fuck.h"
YRMOM = GetYrMom();

// somewhereelse.h
#include "fuck.h"
void fuckYrMom()
{
. short yrDick;
. PutIn(yrDick, YRMOM);
}

И да, в зависимости от архитектуры программы, это может быть очень не хорошим решением.
Аноним 09/08/17 Срд 13:03:27  1041280
>>1041198
В хедере объявляешь переменные "extern". Для каждого хедера с глобалами/статиками делаешь .c-файл, в которой ты пишешь то же самое, но без extern.
Аноним 09/08/17 Срд 21:17:03  1041596
А возможно ли записать класс в файл в бинарном виде, как структуру в Си?
Аноним 09/08/17 Срд 21:37:47  1041610
>>1041596
можно, нахуя?
что с указателями делать?
Аноним 09/08/17 Срд 21:39:54  1041612
>>1041610
А как мне собственно попроще сохранить на диске все данные, которые располагаются в различных экземплярах классов ( или как правильно называть?). Мой байтоебский мозг ничего лучше, чем напрямую скинуть байтики, не придумал.
Аноним 09/08/17 Срд 21:41:36  1041613
>>1041612
гугли сериализация с++
что с указателями?
что с не ПОД-типами типа строк, мап, векторов?
Аноним 09/08/17 Срд 21:42:36  1041614
>>1041613
я к тому, что руками придется писать то, что нужно, это тебе не жаба.
Аноним 09/08/17 Срд 23:35:27  1041666
В каком языке самое каноничное ооп? Я думаю на с++, а вы что скажете?
Аноним 09/08/17 Срд 23:50:10  1041671
>>1041666
Smalltalk
Аноним 10/08/17 Чтв 00:56:49  1041686
>>1041596
Если класс trivial (т.е. все данные в нём интегральны) - сохранение класса на диск путём копированием из памяти будет правильным.
Аноним 10/08/17 Чтв 02:34:15  1041704
>>1041666
Eiffel.
Аноним 10/08/17 Чтв 02:37:34  1041705
Есть std::string. Можно ли из него как-то по быстрому вырезать кусок в духе:

std::string s = "......";
auto it1 = s.begin() + pos1;
auto it2 = s.begin() + pos2;
it1 = it2;

?
Аноним 10/08/17 Чтв 02:45:03  1041706
>>1041705
http://en.cppreference.com/w/cpp/string/basic_string/substr
>it1 = it2;
Чозанах?
Аноним 10/08/17 Чтв 02:57:10  1041710
>>1041705
>по быстрому вырезать кусок
стринг_вью?
Аноним 10/08/17 Чтв 09:35:47  1041778
Посоны, тяжело ли вкатиться в джуна с вышкой?
И как обстоят дела с работой на С/С++ за рубежом.
Аноним 10/08/17 Чтв 09:47:38  1041781
>>1041778
В госконтору легко.
Аноним 10/08/17 Чтв 09:50:40  1041784
>>1041686
да ты что, серьёзно?
а потом на другой архитектуре прочитаешь?
а если собрать с другими опциями выравнивания?
нубяра, уходи, велосипедаст.
Аноним 10/08/17 Чтв 09:53:41  1041788
>>1041778
зарубеж - украина, бульбостан?
нормально.
Европа - нормально.
СШП - нормально.
Аноним 10/08/17 Чтв 09:57:50  1041791
>>1041781
Нет, только не в туда. Лучше заняться гомопроституцией, чем в госконтору.
>>1041788
>зарубеж - украина, бульбостан?
Ну это на случай, если в высокодуховной начнется инфернальный пиздец
>Европа - нормально.
СШП - нормально.
А здесь можно поподробнее?
Аноним 10/08/17 Чтв 10:34:12  1041803
>>1041784
Прочитай вопрос ОПа, уёбок.
>как структуру в Си?
Если тебе не нравится fwrite, то напиши об этом автору вопроса а не мне, рептилоид.
Аноним 10/08/17 Чтв 10:59:13  1041817
Есть контейнер, содержащий некоторые тривиальные структуры (например вектор троек даблов, или двусторонняя очередь пар интов). И есть библиотечная функция в Си-стиле (не умеет в итераторы, и прочие ништяки), которая принимает указатель на массив с типом элементов этих структур.
Как сделать по уму, чтобы данные из крестовых контейнеров попали в эту функцию?
Пока не вижу альтернативы впиливанию буфера из std::array, заполнению его итераторами из контейнера, передаче через c_ptr в ту функцию, и выпиливанию этого буфера.
Аноним 10/08/17 Чтв 11:11:41  1041822
>>1041817
1. C std::vector всё просто, берешь поинтер на первый элемент и передаешь его: &huector.front(). Или, если у тебя проект >= С++11, то там даже есть специальный метод для получения ссылку на массив сырых данных: huektor.data()

2. Списки-хуиски надо сначала преобразовать в векторы-хуекторы, затем см. п. 1.
Аноним 10/08/17 Чтв 12:26:35  1041875
Привет, хочу вкатиться в кодинг.
С чего начать, с Си или С++?
Читал что лучше с Си, потому что С++ это типо расширенная версия с классами.
Аноним 10/08/17 Чтв 12:28:59  1041877
>>1041875
Тебя обманули. C++ не требует знаний С и его можно учить независимо.
Аноним 10/08/17 Чтв 12:41:15  1041884
>>1041875

Учи С конечно же. Сеплэплас это язык для индусо-макак.

Вон одна уже пишет что даже Си знать не надо. Пердолить Страуструпские говноабстракции
Аноним 10/08/17 Чтв 12:42:06  1041885
>>1041875
что угодно кроме крестов
Аноним 10/08/17 Чтв 13:06:42  1041891
WinSock2 и WS2tcpip.h какие плюсы и минусы?
Аноним 10/08/17 Чтв 13:31:30  1041901
Можете ответить ТВЕРДО и ЧЕТКО, умрут ли кресты в ближайшие 10-25 лет?
Аноним 10/08/17 Чтв 13:38:26  1041912
image.png (77Кб, 1028x742)
Какое же говно эти .h файлы, как люди этим вообще пользуются столько лет?

Выходит, я не могу просто описать наличие типа в .h, а в .cpp уже полностью раскрыть функциональность.
А если таки сделать в .h полное описание структуры, то:
Можно определить метод прямо в структуре или же можно объявить его в структуре, а определить в другом .cpp файле. То есть, варианта определить метод после структуры в .h нет.
Ещё хуже ситуация со статическими методами, их вообще можно только внутри структуры определять.
Аналогично с функциями, inline-функции определять прямо в .h (иначе они будут вовсе и не inline на самом деле, если я правильно понял это всё), а реальные функции в любом случае определять в .cpp, объявлять в .h. Даже если две функции с точки зрения логики программы делают что-то схожее, но одна из них inline, то описать их рядом нет возможности.

Не знаю, какую-нибудь простую идею модульности нельзя внедрить за столько лет? Типа, в каждом файле две части. В первой объявлены все глобальные переменные, функции и структуры для использования из других модулей. Во второй части структуры и функции использующиеся только внутри этого модуля и код для всего из первой части - для inline-функций, для не inline-функций, для статических методов, чтоб всё было однообразно и легко читалось. Так как пары объявлений-определений будут всегда строго в одном файле, всяким компоновщикам-линковщикам не придётся ругаться на множественные определения в разных единицах трансляции и прочие искусственные проблемы. В началах первой и второй части указываются другие востребованные для объявлений или определений внешние модули.
Можно даже обёртку вокруг текущего с++ сделать, которая будет засовывать все определения методов прямо в структуры, распиливать определения inline и не-inline функций в .h и .cpp файл - а для программистов всё будет выглядеть красиво и в одном месте.
Аноним 10/08/17 Чтв 13:43:48  1041916
>>1041912
> inline
Лел, G++ вообще игнорирует эту байду и инлайнит, что ему захочется, а что не захочется - не инлайнит, вне зависимости от того, пишешь ты inline или нет.
Аноним 10/08/17 Чтв 13:47:55  1041919
>>1041901
Твердо и четко отвечаю - нет.
Аноним 10/08/17 Чтв 13:49:20  1041923
>>1041891
Нинужно будет через 4 года, когда asio впилят в стандарт.
Аноним 10/08/17 Чтв 13:57:55  1041930
>>1041919
Спасибо, убежал учить Си
Аноним 10/08/17 Чтв 14:16:06  1041943
>>1041901
определить смерть не забудь
Аноним 10/08/17 Чтв 14:29:33  1041948
>>1041916
inline не совсем для встраивания функций придуман на самом деле. В крестах это к ODR, а компилятор и без inline может функцию сделать встроенной. Для этих дел есть __forceinline (MSVC) и __attribute__((always_inline)) (GCC, ...)
Аноним 10/08/17 Чтв 14:58:30  1041956
>>1041919
>>1041788
>>1041781
охуенный рекрутинг проводишь
ну, жди, уебок, когда тебя сменит молодое мясо на твоей и так не сильно оплачиваемой работке по пилению какого-нибудь говна на крестах
Аноним 10/08/17 Чтв 15:01:06  1041958
>>1041956
Но если кресты с твоей точки зрения умирают, что к чему столько ненависти? У тебя же конкурентов меньше, одни профиты.
Аноним 10/08/17 Чтв 15:24:21  1041973
>>1041958
а сколько ненависти у пяти крыс в жестяном ведре когда им кидают краюху хлеба на всех?
Аноним 10/08/17 Чтв 15:27:36  1041975
>>1041973
Пока сюда не залетают хейтеры типа тебя, тут довольно лампово.
Аноним 10/08/17 Чтв 17:23:55  1042026
>>1041975
блядь, ты еще и тупой
это не оскорбление, это факт
Аноним 10/08/17 Чтв 18:16:17  1042065
>>1041875
Начни с хаскеля.
Аноним 10/08/17 Чтв 19:08:26  1042088
>>1041912
>Не знаю, какую-нибудь простую идею модульности нельзя внедрить за столько лет?
Тем, кто привык, по-большому счёту до фени. Остальным не до фени - доля плюсов сокращается.
Аноним 10/08/17 Чтв 20:00:13  1042114
>>1042026
Ты рвешься ровном месте, это просто факт. Хотя может для тебя это и оскорбление.
Аноним 10/08/17 Чтв 20:59:09  1042147
Попцаны, как считаете, стоит она того или нет? http://www.ozon.ru/context/detail/id/31924296/
Аноним 10/08/17 Чтв 21:21:09  1042164
Нужно реализовать некие события, которые могут происходить, а могут и не происходить, в зависимости от условий, приоритета, если событий несколько, и подобное. Так вот, как бы все это попроще реализовать, чтобы было возможно увеличивать количество событий без залезания в код? На ум приходит только взять готовый или написать свой скриптовый движок.
Аноним 10/08/17 Чтв 21:35:37  1042172
>>1041956
>В госконтору легко
>рекрутинг
Ебать ты.
Аноним 11/08/17 Птн 00:56:20  1042265
>>1041912
>То есть, варианта определить метод после структуры в .h нет.
Есть.
Аноним 11/08/17 Птн 00:58:23  1042266
>>1041916
>> inline
>Лел, G++ вообще игнорирует эту байду и инлайнит, что ему захочется, а что не захочется - не инлайнит, вне зависимости от того, пишешь ты inline или нет.
Говорят, что это зависит от уровня оптимизаций. До -O3 он инлайнит (или нет) только inline-функции, а не-inline функции никогда не инлайнит. При -O3 может инлайнить любые.
Аноним 11/08/17 Птн 01:12:34  1042274
>>1042147
Стоит, но можно же так скачать
Аноним 11/08/17 Птн 01:27:00  1042283
>>1042265
Как же? Я нее могу нагуглить ничего.

Единственное что могу придумать - обернуть через "#ifdef opr_metod" определение метода в .h , и в одном из .cpp файлов перед #include прописать "#define opr_metod". Но это костыль ещё более кривой и толстый...
Аноним 11/08/17 Птн 02:03:51  1042293
>>1042283
>Как же?
inline
Аноним 11/08/17 Птн 02:13:03  1042297
>>1036675 (OP)
Ребята, не думали что компилятор может перехватывать ваши данные и кроме компиляции отправлять их кому следует?
Все ищут вирусы не там где нужно, а на обычный компилятор вряд ли кто то подумает.
Как вам идея?
Аноним 11/08/17 Птн 03:09:24  1042302
>>1042297
>Как вам идея?
Куда шапочку из фольги выслать?
Аноним 11/08/17 Птн 03:38:36  1042309
Сап.
Помогите, пожалуйста, разобраться с одной вещью.
Меня напрягает необходимость объявления fout в 15 строке
и 31.Можно ли как-то это объявить в одном месте?
Такая же история и с переменными(29,30 строчки). Возможно ли их куда-то поставить в ОДНО место?Для повышения читабельности кода и его структуризации.
Заранее благодарю.
http://ideone.com/ZWkBrv
Аноним 11/08/17 Птн 04:34:06  1042314
>>1042309
В 31 fout не требуется, ты же её вообще не используешь.
>Такая же история и с переменными(29,30 строчки). Возможно ли их куда-то поставить в ОДНО место?
Мм? Ты о чём? Они же и так в одном месте - на соседних строчках. Технически, можно написать в одну строчку, но читаемость от этого не повыситься.
Очень непонятно спрашиваешь, я даже приблизительно не могу предположить что ты имеешь ввиду под "одним" местом. Какой-нибудь пример, как это могло бы выглядеть. Может быть в каком-то другом языке было так, как ты имеешь ввиду?
Самое читабельное, что могу тут придумать - разместить красивый комментарий. Но эдак далеко не уплывёшь.
Писал бы хоть уровень знаний. Складывается впечатление, что ты не слышал даже про глобальные переменные и упоминая их не совсем ясно, то ли это будет оскорблением и тебе покажется, что тебя за дурака держат, то ли ты в самом деле не знаешь о них.
Может объявить один раз в файле глобально fout (и все остальные переменные) вне функций на 9..10 строчке (перед ними придётся прописать строчку "class MainProgramCore;", чтоб можно было объявить переменную objMainProgramCore) и потом использовать всюду, как cin/cout. Не делай этого.

Аноним 11/08/17 Птн 04:37:05  1042316
>>1042314
>прописать строчку "class MainProgramCore;"
Наврал, это не так работает.
Аноним 11/08/17 Птн 06:05:19  1042328
>>1042164
хуясе ты ТЗ описал. Давай-ка поконкретнее.

>>1042297
т.е. винда отправляет - похуй, android отправляет - похуй, хром отправляет - похуй, подозрение на компилятор - не похуй?? Ты ведь можешь поглядеть в сетевой активности, что там куда и чего отправляет, и убедится.

>>1042314
fout объявленный на 31 строке не используется дальше, разве компилятор не уведомляет тебя об этом?
Аноним 11/08/17 Птн 09:25:45  1042349
Двач, я тупой, может кто подсказать куда ведёт эта строка? Я уже два часа ищу и не могу найти. https://github.com/glfw/glfw/blob/213dd2d0d6201a1e17dacce2ff35bdc8dd14e309/src/x11_window.c#L2439
Аноним 11/08/17 Птн 10:01:07  1042368
Какие подводные в этой вакансии?

https://rostov.hh.ru/vacancy/22245394?query=C%2B%2B
Аноним 11/08/17 Птн 10:43:43  1042419
>>1042368
подозреваю, что будет очень долгий испытательный срок в конце которого ВЫ НАМ НЕ ПОДХОДИТЕ
Аноним 11/08/17 Птн 11:29:49  1042447
>>1042349
Задай вопрос так, чтобы я его понял - помогуж
Аноним 11/08/17 Птн 11:37:23  1042449
>>1042447
Не знаю что там может быть не понятного, я привёл ссылку которая указывает на строку исходного кода которая выглядит подобным образом - "_glfw.x11.xi.available", так вот мне не понятно, где вообще находятся эти "x11" и "xi"? Я слабовато понимаю в исходных кодах и вообще имею мало опыта в программировании, у меня не получилось найти эти элементы в исходных кодах, может быть вы подскажите?
Аноним 11/08/17 Птн 12:24:31  1042468
>>1042449
>_glfw.x11.xi.available
Обычно такие вещи с передней нижней чертой обозначают кишки библиотеки, которые клиентам видеть не надо.
Собственно зачем ты туда лезешь? Возникает какая-то конкретная ошибка?
Аноним 11/08/17 Птн 12:34:10  1042471
>>1042468
Ничего кроме вопроса на мой вопрос я и не ожидал. Мне нужно разобраться как функция работает на нижнем уровне.
Аноним 11/08/17 Птн 12:45:05  1042476
>>1042471
Ты на линуксах? Эта штука явно откуда-то из xinput достает доступны ли устройства ввода.
Если работаешь в ide, разберись как у неё работает поиск определения (в visual studio это Go to defenition)
Аноним 11/08/17 Птн 12:46:36  1042477
>>1042476
Да, это мысль поставить ide.
Аноним 11/08/17 Птн 13:02:44  1042487
>>1042328
>fout объявленный на 31 строке не используется дальше, разве компилятор не уведомляет тебя об этом?
Нет, не уведомляет. Спасибо.
>>1042316
Я просто хочу понять этот принцип("разделение обязанностей" через функции).
>>1042314
Вот, понял, когда засыпал думал как раз про глобальные переменные. Сейчас изучу материал, спасибо.
В одно место имелось ввиду объявить один раз в коде и дать объяснение по поводу их назначения. Сейчас я понял то, как это реализовать. Спасибо. Если можешь, ответь на вопрос выше!
Аноним 11/08/17 Птн 13:04:44  1042489
Можно ли на Qt написать функцию, отправляющую POST-запрос по опроделенному IP и порту и возвращающую нихуя?

Везде в примерах какие-то сложные классы, клиенты...
Аноним 11/08/17 Птн 13:08:38  1042493
>>1042489
Можно.
Аноним 11/08/17 Птн 13:15:28  1042498
>>1042314
27-30 строчка. Получился "блок", в котором я объявляю переменные. Я правильно всё понял?
http://ideone.com/iL54Ev
Аноним 11/08/17 Птн 13:20:25  1042500
>>1042493
Ой, спасибо. А я-то думал нельзя.


Где есть пример?
Аноним 11/08/17 Птн 13:43:21  1042513
>>1042500
QNetworkAccessManager *huenager = QNetworkAccessManager ();

QNetworkRequest huequest(QUrl("http://huesite.ru));
QByteArray huiarray;
huiarray.append("param=Hello&");
huiarray.append("huiam=world");

huenager>post(huequest, huiarray);
Аноним 11/08/17 Птн 13:45:01  1042514
>>1042513
> QNetworkAccessManager *huenager = new QNetworkAccessManager();
> QNetworkRequest huequest(QUrl("http://huesite.ru"));
Фиксики.
Аноним 11/08/17 Птн 13:49:02  1042519
>>1042513
> huenager->post(huequest, huiarray);
Ещё фикс.
Аноним 11/08/17 Птн 14:01:08  1042531
>>1042498
Да, так сделать можно. Зачем оно только тебе?
А вот правильно это или нет, это как посмотреть. С одной стороны всё работает и с этой точки зрения это верно.
А с другой у тебя может быть переменная требующая явной инициализации. Например, тебе внутри функции нужно изображение. Но в первых строчках функции размер изображения ты ещё не знаешь. Если изображение не умеет менять размер (а даже если и умеет, зачем лишний раз грузить машину изменением размера?), то тебе придётся объявлять переменную не в самом начале, хочешь ты того, или нет.
"for (int i = 0; i < number; i++) " тебя же не мешает, насколько я понял. Доводи до абсурда тогда уж - напиши "int i" в начале, а цикл поменяй на "for (i = 0; i < number; i++) ", лол. Или даже объяви i как глобальную переменную первой строчкой кода до начала любых функций, тогда тебе одного объявления хватит на всю программу. Только будут проблемы с рекурсией, вложенными циклами или многопоточностью. Ну да этого пока что нет, верно?
Аноним 11/08/17 Птн 14:11:20  1042541
Как искать удаленку на С/С++
Только не говорите, что ее нет
Аноним 11/08/17 Птн 14:28:36  1042548
>>1042541
нужно обладать конкретными скиллами, кресты тут будут только инструмент
например, быть способным написать бота, что работает в обход gameguard
или быть способным в течении нескольких часов написать рабочий эксплойт на предоставленную 0day уязвимость что не будет валится на каждый чих и по быстрому интегрировать его в предоставленный эксплойт пак или что еще
или же пытаться устроится на toptal, crossover и прочее, но тут надо быть монстром с 10-15 годами опыта в офисе и тереть на инлише более-менее свободно
в ЛЮБОМ случае все это требует просто невьебенных скиллов, вкатывальщикам в 2к17 лучше сразу обоссать самим себя, так будет быстрее и эффективней
Аноним 11/08/17 Птн 14:43:14  1042560
>>1042531
Понял, спасибо. Мне просто было интересно конкретно про ту ситуацию, когда одна переменная используется несколько раз в коде(=глобальная). Офк есть ситуация, когда переменная нужна только в рамках одной функции(=локальная), и её нет смысла объявлять в том блоке.
У меня появился небольшой вопрос.
Смотри, допустим, что у меня формат записи в текстовой файл такой:
Name:Price$ (/n ).
Идея такая: я делаю счётчик проданных книг( получается, что я просто считаю кол-во строк через
[code]iout.getline(str, 1024, '\n'); [/code]
Теперь я хочу сделать счёт по полученным деньгам(они стоят в текстовом файле через ":" после имени). Подскажи, пожалуйста, как запилить такое, чтобы считывалось только ПОСЛЕ ":" и до "$"?
Я понял принцип работы getline, но не могу найти нужную функцию для реализации задуманного.
Если знаешь, подскажи, пожалуйста. (ещё лучше будет, если сможешь подсказать где можно подробней прочитать про работы с файлами ввода/вывода в C++, читал на каком-то русском сайте, но очень мало информации про то, что нужно. Только в общих чертах)

Общий код, чтобы было понятно: http://ideone.com/6VPl4Q (37-39)
Аноним 11/08/17 Птн 15:44:44  1042587
image.png (34Кб, 806x339)
>>1042560
Я тебе не подскажу функцию которая прям сделает всё за тебя (гугли функцию поиска подстроки), очень плохо разбираюсь в этих стандартных функциях. Что мешает сделать такую простую штуку вручную, тебе же только какое-то двоеточие найти?
У тебя же есть str на каждой итерации. Вот и добавь там функцию на три строки (перемещаю u, пока не дойду до двоеточия. Потом прыгаю ещё на символ вперёд и считываю число. atoi - из строки извлекает число, то немногое стандартное, что я помню.).
Можно конечно вручную вырезать именно кусок строки до "$", но я думаю цена там в любом случае в числом представлении и atoi будет достаточно.
Аноним 11/08/17 Птн 16:21:04  1042602
>>1042560
Вот тебе регекспы.
http://ideone.com/qhJSHJ
Аноним 11/08/17 Птн 17:20:53  1042631
>>1042602
>>1042587
Понял, спасибо большое за помощь
Аноним 11/08/17 Птн 22:46:34  1042865
>>1042449
>Я слабовато понимаю в исходных кодах
Вот пиздец. Ладно, рассказываю.

_glfw.x11.xi.available - это член available класса (или структуры) xi класса x11 класса _glfw. Найти эти классы та можешь либо текстовым поиском в том же репозитории (если только с форматированием кода не намудрили):
_glfw;
это конец объявления или
_glfw =
это инициализация
и так далее с другими классами.
>>1042477
Попробуй, но ты же опять придёшь сюда и будешь никакующие вопросы задавать.
Аноним 12/08/17 Суб 09:39:26  1042986
>>1042541
Удалёнка есть, но её хуй найдёшь и нужно иметь нехуёвые скилы
Аноним 12/08/17 Суб 09:44:19  1042989
>>1042986
Удаленка на C/C++ как суслик

https://www.youtube.com/watch?v=ihZyUBaG_8Y
Аноним 12/08/17 Суб 09:46:30  1042991
Cтоит ли читать C++ Core Guidelines?
Аноним 12/08/17 Суб 10:42:28  1043016
>>1042991
С учётом их скромного объёма и мелкой структурированности - стоит.
Аноним 12/08/17 Суб 15:31:34  1043159
Ананасы, порой наблюдаю такую хуйню:
struct StructName {
/type/ operator() (/arguments/)
{
//...
return /something/
}
};
Оно бывает шаблоном и constexpr. И у меня вопрос, в чём отличие от простой функции?
Аноним 12/08/17 Суб 15:32:09  1043160
>>1043159
блядь, забыл про звёздочки, которые проебались
Аноним 12/08/17 Суб 15:35:44  1043163
2017-08-1219-34[...].png (10Кб, 548x283)
>>1043159
>>1043160
Например, вот такое вот. Почему нельзя использовать просто функцию?
Аноним 12/08/17 Суб 15:39:53  1043166
>>1043163
>functor
Ояебу
Аноним 12/08/17 Суб 15:55:56  1043178
>>1043163
http://en.cppreference.com/w/cpp/language/constexpr
Аноним 12/08/17 Суб 16:00:53  1043181
>>1043163
Потому что для функций недоступна, например, частичная специализация шаблона, а для класса со статической функцией - доступна.
Аноним 12/08/17 Суб 16:02:56  1043182
>>1043163
constexpr дает подсказку компилятору, что значение выражения можно подсчитать во время компиляции. А так как у тебя тут шаблон, то:
>> A constexpr function must satisfy the following requirements:
>> ...
>> there exists at least one set of argument values such that an invocation of the function could be an evaluated subexpression of a core constant expression (for constructors, use in a constant initializer is sufficient) (since C++14). No diagnostic is required for a violation of this bullet.

То есть возможно существование значений параметров шаблона, при которых выражение бы могло быть помечено constexpr. Так так в теле метода не создается нелитеральных типов (например std::string/vector и т.д., но, к примеру std::unique_ptr - это литеральный тип) тогда, предположительно, ничего не мешает таким значениям быть.

std::less используется в качестве шаблонного параметра для std::map или std::set, к примеру, чтобы упорядочивать ключи в деревьях. Более того std::less имеет constexpr конструктор, поэтому создание экземплятора компаратора имеет нулевую сложность (фактически, он не создается, поскольку нет виртуальных методов, наследуемых классов), а вызов operator(), скорее всего, заинлайнится, потому что он представлен оберткой для другого метода.
Аноним 12/08/17 Суб 16:04:14  1043183
>>1043181
>> Потому что для функций недоступна, например, частичная специализация шаблона, а для класса со статической функцией - доступна.
operator() не статический и статическим быть не может
функции могут быть частично специализированы, а шаблонные структуры и классы - нет
Аноним 12/08/17 Суб 16:08:33  1043187
>>1036766
Как будто это сейчас представляет сколь-либо значимую проблему.
Аноним 12/08/17 Суб 16:52:30  1043203
24-2.PNG (45Кб, 861x800)
24-1.PNG (40Кб, 833x655)
Помогите немного с классами и конструкторами, мне кажется я не понимаю чего-то совсем очевидного.

Есть член типа Bitmap. При инициализации необходимо указать его размер, который в момент инициализации становится известен не сразу.

Хотелось бы написать примерно как на первой картинке. Это немного искусственная ситуация, но суть в том, что сначала выполняется какой-то код (чтение размера из файла) и только потом становится известен размер. Но в таком случае оно выдаёт ошибку (мол нужно после двоеточия указать инициализацию как "img(char fname):bmp{size,size}{..}".
Но даже если написать так, оно упадёт с ошибкой, так как до вызова GdiplusStartup() использовать Bitmap нельзя вообще. Как и удалять его в деструкторе после вызова GdiplusShutdown(). Можно как-то явно указать в какой момент в конструкторе вызывает конструктор для bmp и то же самое для деструкторов? (если явно вызвать деструктор bmp.~Bitmap(), то ошибки компиляции нет, но деструктор суммарно вызывается два раза - второй раз автоматически)

Приходит в голову только решение с указателем со второй картинке. Но это как-то неэстетично. Мне не нужен этот указатель и его возможности. Лишняя переменная и лишний раз мучаю менеджер памяти.
Аноним 12/08/17 Суб 17:50:00  1043234
Все поля класса, конструируются до вызова конструктора, а разрушаются после того, как выполнится деструктор может быть это не совсем верно, ананасы, поправьте, если я не прав. Ты можешь вместо инициализации по умолчанию инициализировать объект нужными тебе данными (мол нужно после двоеточия указать инициализацию как "img(char fname):bmp{size,size}{..}"
>Но даже если написать так, оно упадёт с ошибкой, так как до вызова GdiplusStartup() использовать Bitmap нельзя вообще.
Ну и? Значит надо вызвать эту функцию перед созданием объекта класса img, а функцию GdiplusShutdown() после удаления этого объекта.

>Приходит в голову только решение с указателем со второй картинке. Но это как-то неэстетично. Мне не нужен этот указатель и его возможности. Лишняя переменная и лишний раз мучаю менеджер памяти.
И в каком месте это лишняя переменная?

И вообще, твой код нихуя не правильный. Нехуй вызывать функцию для инициализации чего-либо gdi в твоём случае в конструкторе. Если ты создашь 10 объектов img, ты 10 раз инициализируешь эту библиотеку, что, как мне кажется, не есть верно. Точно также, уничтожив один объект img, ты сломаешь все остальные.
Так что убирай их нахуй из конструктора и деструктора
Аноним 12/08/17 Суб 17:54:45  1043235
Либо это должен быть ебучий singleton, тогда это можно обыграть.
Аноним 12/08/17 Суб 18:00:16  1043237
>Но это как-то неэстетично
Тоже мне, блядь, эстет нашёлся
Аноним 12/08/17 Суб 18:43:21  1043256
>>1036675 (OP)
Скажите, если имеется определение глобальной функции в программе, то область памяти для нее выделяется заранее или когда происходит вызов данной функции, к примеру, из main?
Аноним 12/08/17 Суб 18:56:37  1043259
>>1043256
Ты лучше скажи, зачем тебе это знание.
Аноним 12/08/17 Суб 19:12:09  1043264
>>1043256
Это не лисп, это компилируемый язык, для любой функции есть:
- место хранения в образе
- место хранения в адресном пространстве программы для статических переменных
- место в стеке
Как ты мог догадаться, из всего этого что-то выделяется в начале выполнения, а что-то - в момент вызова. Догадайся.
Аноним 12/08/17 Суб 21:15:23  1043326
>>1043183
>функции могут быть частично специализированы, а шаблонные структуры и классы - нет
Просто иди на хуй.
Аноним 12/08/17 Суб 21:21:47  1043328
>>1043264
>для любой функции есть
>место в стеке
Что, для каждой функции отводится своё место в стеке?
Аноним 12/08/17 Суб 22:02:22  1043338
>Значит надо вызвать эту функцию перед созданием объекта класса img, а функцию GdiplusShutdown() после удаления этого объекта.
Эта функция инициализирует gdi+. До неё любая попытка создать Bitmap (он тоже относится к gdi+) и вообще использовать любую функцию gdi+ на сработает.

>И в каком месте это лишняя переменная?
Заместо непосредственно одного объекта Bitmap на стеке у меня один Bitmap в динамической памяти, один указатель на стеке и ещё лишняя запись про Bitmap в менеджере памяти. Не считая всего того, что порождает Bitmap внутри себя.

>ты сломаешь все остальные.
Написал же, что пример немного искусственный. Оно не так работает, остальные не ломаются на деле. Но да, по хорошему нужно статическую переменную сделать, где будет количество живых Bitmap и так далее.

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

Хрен с ним, нет альтернативы двоеточию - будут планировать всё так, чтоб и не возникали такие потребности.
Аноним 12/08/17 Суб 22:06:23  1043342
1469261184ghhhj[...].jpg (24Кб, 680x401)
>>1043183
Аноним 12/08/17 Суб 22:07:16  1043344
>>1043328
Если она не заинлайнена или ещё какой понос - да, на каждый вызов требуется некоторое количество памяти. У функции нет своего места в стеке, у ВЫЗОВА функции есть своё место в стеке.
Аноним 12/08/17 Суб 22:16:53  1043353
>>1043326
В самом деле, затупил. Спасибо, что ткнул носом.
Аноним 12/08/17 Суб 23:28:22  1043441
>>1043183
Что такое ЧАСТИЧНАЯ специализация? Часть аргумент шаблона определена, а другая - нет?
Аноним 12/08/17 Суб 23:46:13  1043455
Ананасы, пришло время потрогать Qt, вопрос такой: стоит ли читать Шлее?
Аноним 13/08/17 Вск 00:04:15  1043458
>>1043259
Честно говоря, я так чувствую себя в плане программирования более увереннее. Вот например знаешь как выглядит схема массива изнутри при определении и я себе это представляю, мне так проще. Также и с функциями для меня
Аноним 13/08/17 Вск 01:09:12  1043482
>>1043441
Да.
Аноним 13/08/17 Вск 01:10:08  1043484
>>1043441
Или даже все не определены, но у них более специализированная форма. Например, вместо T std::vector<T>
Аноним 13/08/17 Вск 01:53:54  1043498
>>1038736
>Ну и протокол я реализовывал по Википедии, да
@ Один долбаёб как смог объяснил на пальцах суть rfc в википедии
@ Домохозяйка из Рязани, исправляя орфографические и стилистические ошибки в статье, дополнительно извернула смысл
@ Третий долбаёб по этой статье реализует протокол
Аноним 13/08/17 Вск 11:03:17  1043571
>>1043498
@
Заработало.
Аноним 13/08/17 Вск 11:29:29  1043580
Есть набор файлов в директории, из них некоторые файлы имеют определенный формат имен. Как мне обойти эту директорию и обработать только файлы, удовлетворяющие этому формату имен?
Аноним 13/08/17 Вск 11:31:03  1043581
>>1043580
Меня обоссут, но в винапи поиск по шаблону есть вроде как. Если не форточки - не знаю
Аноним 13/08/17 Вск 11:39:32  1043584
Я вам вкусняшек принес https://www.youtube.com/watch?v=TGWXHAPwwAU&list=PLD_I_XGUw2VO3lmSoW4glYylHPS2dAHhg
Аноним 13/08/17 Вск 11:42:44  1043586
>>1043581
Так-то filesystem подвезли, нахуй винапи
Аноним 13/08/17 Вск 11:45:52  1043589
>>1043580
http://man7.org/linux/man-pages/man3/readdir.3.html
Для *nix ов прокатит, как в шиндус хуй знает. Вообще, можешь воспользоваться boost::filesystem
Аноним 13/08/17 Вск 11:48:50  1043590
>>1043586
Хуй знает, в моей версии MinGW не подвезли.
Аноним 13/08/17 Вск 11:51:19  1043593
>>1043590
Оно уже даже в последней студии есть, люль.
Иначе тащи boost::filesystem — то же самое, в другом неймсепейсе.
Аноним 13/08/17 Вск 11:52:41  1043596
>>1043593
Ага. и поебись со сборкой буста, если до этого его не собирал
Аноним 13/08/17 Вск 12:00:51  1043602
>>1043580
http://pubs.opengroup.org/onlinepubs/7908799/xsh/glob.html
Аноним 13/08/17 Вск 12:01:17  1043603
>>1043596
Спермогоспода должны страдать.
Аноним 13/08/17 Вск 12:02:11  1043604
>>1043603
Ну, написать дрова на свой ноут для линукса все-таки сложнее,чем собрать буст.
Аноним 13/08/17 Вск 12:03:14  1043605
>>1043604
Покупающие ноут с ноунейм китайским хламом вместо железа должны страдать.
Аноним 13/08/17 Вск 12:03:58  1043606
>>1043605
Acer, конечно, хлам, но за те деньги ничего лучше было не взять.
Аноним 13/08/17 Вск 12:05:15  1043607
>>1043606
Небось ещё глянцевый экран, который годится разве что в качестве зеркала.
Аноним 13/08/17 Вск 12:11:24  1043613
>>1043593
>>1043593
>>1043602
А сделать портабельно и без буста?
Аноним 13/08/17 Вск 12:12:20  1043614
>>1043613
>портабельно
POSIX — Portable Operating System Interface
Аноним 13/08/17 Вск 12:33:32  1043627
>>1043613
Без буста и последнего стандарта — портабельно никак от слова совсем.
Аноним 13/08/17 Вск 13:01:18  1043651
>>1043613
дзен заключается в том что "сделать портабельно" - это значит захуярить кривой порт на винду с линукса
взять тот же pidgin или qtorrent, парадоксальная ситуация: абсолютное большинство пользователей на винде, но изначально это напердолено под линукс
и так с любым так называемым "кроссплатформенным софтом"
Аноним 13/08/17 Вск 13:55:49  1043690
Анон, такой вопрос.
Есть абстрактный класс сущности. От него наследуются другие сущности (например, предмет, какая-то область на карте, противник, сам класс игрока делаю игру и тд).
При старте читается файл карты в котором сущностей для уровня: тип, имя если есть положение на карте и тд.
Например:
type item_health
origin 32 64
Так вот, тип внутри игры представлен строкой, можно ли как-то избежать кода вида
if( str == "item_health" ) { ent = new Item(); } ??
Аноним 13/08/17 Вск 14:35:18  1043715
1. Как ответить на вопрос "что происходит в вижуал студии после нажатия F5"?
2. Что почитать о системе типов в C++?
3. Чем отличается перегруженный оператор от функции?
Аноним 13/08/17 Вск 14:36:34  1043716
>>1043690
Ассоциативный массив.
Аноним 13/08/17 Вск 14:45:52  1043722
>>1043614
>glob.h
Заинклудил в студии и получил ошибку, потому что хедер не найден. Если это не часть библиотеки C++, нахуй надо.
Аноним 13/08/17 Вск 15:31:54  1043756
Какое определения типа в C++? Уебища в стандарте пишут, что в языке все имеет тип, но само определение типа не дают.
Аноним 13/08/17 Вск 15:40:26  1043759
Что за убого дается понятие типа в стандарте: "типы описывают объекты". А кроссовки - это когда ты бегаешь по траве, но отсюда мы никак не можем понять, что такое кроссовки.
Аноним 13/08/17 Вск 15:46:32  1043764
>>1043716
Алсо если не читать просто стринговый тип, а юзать сущности объектов на карте, то в абстрактном классе сущности можно сделать абстрактный метод получения нового инстанса конкретной сущности, который реализуют все наследники. Тогда тоже не придется ебашиться с кучей ифов.
Аноним 13/08/17 Вск 15:49:56  1043766
>>1043764
>Тогда тоже не придется ебашиться с кучей ифов
Про рефакторинг и замену условий полиморфизмом слышал?
Аноним 13/08/17 Вск 16:53:16  1043807
>>1043766
Долбоеб, я как раз такое и расписал.
Аноним 13/08/17 Вск 17:53:08  1043871
>>1043766
Подробнее.
Мимонуб
Аноним 13/08/17 Вск 18:50:34  1043938
Есть файлы, в которых записаны десятичные цифры, двоичные, и числа, записанные словами (например, nine). Мне нужно их отсортировать. Как написать обобщенный алгоритм, который отсортирует числа в каждом файле? Как рассматривать все эти записи? Как числа или строки?
Аноним 13/08/17 Вск 19:12:35  1043955
>>1043938
>> Как рассматривать все эти записи?
>> Как числа
Очевидно же

>> Есть файлы, в которых записаны десятичные цифры, двоичные, и числа, записанные словами (например, nine).
По идее, если бинарное представления числа имеет какой-то префикс, например 0b, тогда там все очень просто: проверяешь префикс и определяешь метод для парсинга числа, заносишь число либо во временное хранилище либо, к примеру, в мульти-множество или хэш-контейнер.
Аноним 13/08/17 Вск 19:19:29  1043958
>>1043955
>По идее, если бинарное представления числа имеет какой-то префикс, например 0b
Не имеет. Три файлы содержат строки типа 0100, 432, twenty.
Аноним 13/08/17 Вск 19:28:01  1043967
>>1043938
Их нужно строками сматчить к числу, по маске, а потом уже сортируй. Но как ты например отличишь 10 в десятичной от 10 в двоичной - не ясно. Если как в твоем примере тут >>1043958 абсолютно у всех двоичных чисел в файле старший разряд - нулевой бит, то тогда все просто.
Аноним 13/08/17 Вск 19:31:06  1043972
>>1037674
Пашел нахуй, макакен
Аноним 13/08/17 Вск 19:32:35  1043973
Я очень плох в кодинге на Си++, еще и мыслю в стиле обычной сишки, поэтому прошу помощи. Как можно примерно сконструировать архитектуру интерфейса для недоигры в стиле Кризиса в Кемле? У меня выходит лишь нагромождение костылей. Из внешнего используется только SFML.
Аноним 13/08/17 Вск 19:33:01  1043974
>>1038692
Проиграл
Аноним 13/08/17 Вск 21:17:09  1044075
>>1039982
>Какой интересный сайт, первый раз такое вижу, 10/10 идея.
У меня для тебя http://www.codeabbey.com/
Аноним 14/08/17 Пнд 00:03:20  1044160
>>1043613
Буст - это и есть портабельно. Если доступа к ФС нету в языке, ничто тру портабельное с использованием доступа к ФС написано быть не может, расслабь булки.
>>1043590
>в моей версии MinGW не подвезли.
Стандарты переключать не умеешь? Посочувствовать твоему безультернативному использованию допотопной версии GCC?
>>1043756
Все свойства объекта (реально все) определяются через его тип и размазаны по стандарту. Уёбище - это ты. Есть куча других недосказанностей в стандарте, про которые ты не спрашиваешь.
>>1043871
Лол. -> >>1043764
>>1043938
>Как написать обобщенный алгоритм, который отсортирует числа в каждом файле?
Напиши operator>> для того типа, в который это всё будет помещаться, в котором ты будешь делать выбор представления числа в зависимости от того, какие символы ты получаешь. Сортировать строки ты будешь точно так же, как и считывать в числа, так что хранить в строках нахуй не надо.
>>1043958
>Не имеет.
Что значит не имеет? Если тебе дают числа, из которых надо выбрать двоичные просто по наитию, шли таких людей нахуй.
Аноним 14/08/17 Пнд 00:07:50  1044164
>>1044160
>так что хранить в строках нахуй не надо.
Точнее, хранить в строках нужно только для сохранения исходного написания числа.
Аноним 14/08/17 Пнд 00:18:33  1044174
>>1044160
Ну его нахуй ваше ООП, оно блять для академиков. Пойду дальше на Сишке предолиться.
Аноним 14/08/17 Пнд 00:28:09  1044176
Вопрос на мильёон инкриментов! Кто-нибудь здесь понимает кишки и детали реализации Qt5? Вопрос в том, как устроена событийная модель и модель потоков? Как QCoreApplication взаимодействует с QEventLoop? Как устроен QSignalSpy?

Проблема в том, что приходится дружить Google Tests & Mocks с Qt мордой и кое-каким промежуточным слоем. Хочется сделать малой кровью и кое0что вынести для себя.
Аноним 14/08/17 Пнд 00:41:26  1044182
>>1043722
>Если это не часть библиотеки C++, нахуй надо.
Шапку читал?
> "Как мне сделать Х на чистых крестах без библиотек" идут на хуй
Аноним 14/08/17 Пнд 01:38:24  1044196
>>1044176
Посмотри исходники по диагонали, многое поймёшь.
Аноним 14/08/17 Пнд 08:37:02  1044263
>>1036675 (OP)
Хачу вкотиться в кресты, есть ли учебник по типу теория - упражнение
Аноним 14/08/17 Пнд 11:12:24  1044359
изучаю С++, что ещё надо изучать для тупого устройства на работу
Аноним 14/08/17 Пнд 11:24:58  1044366
>>1044263
c++ за 21 день. Хачу типа тебя пойдет.
Аноним 14/08/17 Пнд 11:25:57  1044368
>>1044359
Изучить вакансии в твоей досягаемости и что они требуют?
Аноним 14/08/17 Пнд 11:31:46  1044370
>>1044366
гляну, спс
Аноним 14/08/17 Пнд 11:32:48  1044371
>>1044368
В смысле смежные языки какие?
Аноним 14/08/17 Пнд 12:02:01  1044390
>>1044359
для "тупого устройства на работу" изучать с++ крайне не рекомендуется
Аноним 14/08/17 Пнд 12:05:35  1044391
>>1044359
>изучаю С++
С++ джуны нахуй никому не нужны. Даже в НИИ батрачить за доширак только по блату возьмут.
Аноним 14/08/17 Пнд 12:20:00  1044394
Салам всем правильным. Есть локальная сеть. Как узнать мак-адрес удалённого компа в данной сети с помощью сокетов? Ну или на крайняк с помощью asio?
Аноним 14/08/17 Пнд 12:55:33  1044410
>>1044371
в смысле есть ли вообще спрос на кресты
Аноним 14/08/17 Пнд 13:23:45  1044419
>>1044394
На винде есть способ для WinSock. Можно загуглить.
Аноним 14/08/17 Пнд 13:50:51  1044427
>>1044410
с каждым годом количество вакансий сокращается
те это не обвал, но систематическое уменьшение
по крайней мере в россии так
в сша если судить по форумам где русскоязычные кодеры отписываются, такая же ситуация
тут, кажется какая проблема: в крестах нету стандартизированного abi, следствием чего невозможно организовывать динамическую горячую загрузку-выгрузку классов, невозможно без геморроя пробрасывать иключения через динамически подгружаемые библиотеки, крестовые шаблоны отличаются от дженериков в ява и шарпе, но эти же дженерики также позволяют грузить-выгружать классы, как следствие всего этого на крестах не построить сложные энтерпрайз системы, которые по сути и основаны на возможности сделать программу-конструктор из плагинов
(а то что было сделано, было основано на сишном abi, поверх которого зачастую сооружались либо самописные компонентные системы, либо пользовались чем то готовым типа com или gtk, НО ведь это возврат в каменный век, тогда сразу же становится на границе динамически загружаемых модулей отказыватся от всех вкусностей крестов, и возвращатся к си, по сути)
была надежда на веб-сервисы, типа думали что будут писать относительно независимые компонены системы, которые общаются через эти самые протоколы веб-сервисов, тогда уже похуй на чем писать, и тупо думали что кресты зайдут
НО как раз именно что и похуй, и теперь и веб-сервисы тоже предпочитают реализовывать на чем-нибудь более легком, например, на каком-нибудь варианте серверного ява-скрипта, потому что оказалось что производительности достаточно, а важнее скорость запила фич и наличие обезьян готовых это кодить на рынке
крестам пиздец, это они становятся нишевым инструментом, например, неплохо заходят в игрострое, потому что позволяют сочетать нативное быстродействие с возможностями ооп (тк игры по большому счету это моделирование, а опп как раз и подходит для задач моделирования, симуляции чего-то)
Аноним 14/08/17 Пнд 13:57:22  1044428
Ncurses
[code lang="c++"]
initscr();
//refresh();
Wlog = newwin(LINES / 5, COLS, 4 LINES / 5, 0);
box(Wlog, 0, 0);
wrefresh(Wlog);
[/code]

Глаза протер, а так и не увидел в документации, почему без refresh()
до newwin()* не отрисовываются границы. Что я делал не так?
Аноним 14/08/17 Пнд 13:59:18  1044430
>>1044428
meh, разметка
Аноним 14/08/17 Пнд 14:25:28  1044441
>>1044419
>Можно загуглить
Нашёл только как свой мак-адресс узнать
Аноним 14/08/17 Пнд 14:35:35  1044446
>>1044427
Надо это в шапку закинуть, чтобы ньюфаги не бежали учить кресты.
Аноним 14/08/17 Пнд 14:41:14  1044454
>>1044427
>потому что позволяют сочетать нативное быстродействие с возможностями ооп
В играх почти без ООП пишут, там сишка с чуть подсахаренная шаблонами:
https://youtu.be/rX0ItVEVjHc?t=1h23m50s
Аноним 14/08/17 Пнд 14:42:27  1044455
>>1044446
>чтобы ньюфаги не бежали учить кресты
Они из-за игр в основном учат. Хотят игры делать.
Аноним 14/08/17 Пнд 14:43:15  1044457
>>1044394
Можешь на указанный ip отправить сообщение и потом посмотреть arp-таблицу, чтение из некоторых файлов позволяет на никсах посмотреть ее https://codereview.stackexchange.com/questions/58097/parsing-arp-cache-in-c . В принципе, можно захватить вывод программы arp.
Аноним 14/08/17 Пнд 15:04:05  1044463
>>1044457
А есть что-то похожее на winsock? Если да, кинь ссылку на MSDN.
Аноним 14/08/17 Пнд 15:37:07  1044477
>>1044463
Тебе нужно создать UDP сокет и послать, просто послать пакет на рандомный порт узла назначения, после этого твоя таблица гарантированно будет иметь MAC адрес назначения (хотя он может уже находиться в кэше ARP'а), потому что такова суть IP, нужно сначала получить MAC и потом только отправлять пакет с указанным адресом и маком в хэдере Ethernet. Здесь тебе и понадобится винсок.
Потом делаешь что-то вроде такого:
https://stackoverflow.com/questions/14147138/capture-output-of-spawned-process-to-string
То есть вызываешь arp и перехватываешь вывод приложения, и затем уже, как тебе нравится (регекспом или посимвольным считыванием) определяешь необходимый тебе MAC для адреса.
На никсах это делается очень быстро, даже если бы мне пришлось получить вывод от ARP, но тут какой-то пиздос.
Возможно, есть какой-то системный сокет, который позволяет общаться с ядром и запросить ARP таблицу без этих изъебств, но тут я не помощник даже.
Аноним 14/08/17 Пнд 15:40:21  1044479
>>1044477
Кстати, вот ту в пару тычком мышкой нашел https://msdn.microsoft.com/en-us/library/windows/desktop/aa366398(v=vs.85).aspx
Похоже, все делается в один вызов, так что удачи. Винсок не нужен даже.
Аноним 14/08/17 Пнд 15:41:31  1044480
>>1044477
Архитектура мне ясна. Просто как запросить эту самую ARP-таблицу на винсоке?
Аноним 14/08/17 Пнд 15:43:18  1044482
>>1044479
Спасибо. Добра тебе
Аноним 14/08/17 Пнд 16:28:32  1044508
>>1044454
в играх часто требуется реализовывать полиморфное поведение при реализации взаимодействия предметов, персонажей и мира
чтобы ручками vtable не эмулировать по старинке, гораздо проще воспользоватся виртуальными функциями в крестах
Аноним 14/08/17 Пнд 16:31:34  1044509
>>1044463
>погугли за меня
Аноним 14/08/17 Пнд 16:33:04  1044511
>>1044196
Ну так я и начал с просмотра сорцов, но чёт не выдержал. Вот сейчас выяснил, что QEventLoop должен быть запущен в каждом потоке и процесс сигнализации в этом контексте не совсем тривиален.

Проблема в том, что не оч правильно завязывать на конкретную реализацию, как в случае файлами с суффиксом _p.h.

Сейчас не ясна другая деталь. Как вкладываются QEventLoop'ы? Как вложенный цикл сообщений понимает, что он должен обрабатывать событие, а не другой?
Аноним 14/08/17 Пнд 17:09:58  1044522
>>1044508
>гораздо проще воспользоватся виртуальными функциями в крестах
Не проще и тормознее. Там почти все без ООП делают, гугли "data oriented design", и видео посмотри с Эктоном >>1044454.
Аноним 14/08/17 Пнд 17:44:57  1044535
>>1044511
>int QEventLoop::exec(ProcessEventsFlags flags = AllEvents)
http://doc.qt.io/qt-5/qeventloop.html

>Как вкладываются QEventLoop'ы?
КутыВиджетс - однопоточная хуйня, пока ты сам ручками на треды не разделишь, всё происходит в одном треде. Когда ты делаешь exec() евентлупа - всё замирает, и выполняется этот эвентлуп.

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

http://doc.qt.io/qt-5/eventsandfilters.html

Такая же жопа в винапи: всё в одном треде, и пока ручками треды не сделаешь, ничто не поменяется.
Аноним 14/08/17 Пнд 19:45:17  1044574
У меня есть проприетарная легаси библиотека на крестах без документации. Я начал потихоньку в ней разбираться и писать документацию.

Но чтобы отслеживать свою скорость мне нужно узнать сколько там еще говна надо разобрать.

Мне нужна программа, чтобы умела считать число C++ классов в файле, число функций в классе. Посоветуйте что-нибудь.
Аноним 14/08/17 Пнд 20:00:03  1044579
>>1044522
иди нахуй, ничего я гуглить не буду
"тормознее" блядь
Аноним 14/08/17 Пнд 20:00:20  1044580
>>1044574
IDA PRO
Аноним 14/08/17 Пнд 20:10:16  1044584
Хорошая шутеечк[...].webm (1061Кб, 270x360, 00:00:16)
>>1044580
Аноним 14/08/17 Пнд 20:15:17  1044591
>>1044584
Ну функции она посчитает, а классы никто никогда уже не узнает
Аноним 14/08/17 Пнд 20:19:23  1044592
>>1044591
У меня есть исходники.
Аноним 14/08/17 Пнд 20:21:14  1044595
>>1044592
Тогда считай вручную, хули как лох
Аноним 14/08/17 Пнд 20:21:25  1044596
>>1044427
Как боженька смолвил
Аноним 14/08/17 Пнд 21:01:23  1044602
>>1044535
>Такая же жопа в винапи
Писал на этом по малолетке. Вообще концепция event loop шире. Сейчас есть в любом довольно универсальном языке от петна до f#. А вот в плюсах нативного нет? Я так понимаю в новых выпусках(стандартах) появится? Корутины ведь тоже на event loop завязаны? Есть какие-нибудь фундаментальные основы, оч заебало читать маны и исходники, чтобы по крупицам собрать общую картину.

> Когда ты делаешь exec() евентлупа - всё замирает, и выполняется этот эвентлуп.
С этим ок. Есть main thread c loop'ом, который создан QCoreApplication, затем тут же я создаю новый QEventLoop. Так вот вопрос: кто будет обрабатывать мои сигналы? Тот же вопрос, но, если я соеденю слот QEventLoop::quit() с каким-нибудь сигналом?
Аноним 14/08/17 Пнд 23:30:11  1044683
>>1044579
>"тормознее" блядь
Ты думаешь, что виртуальный вызов бесплатный? Что классы по 20 килобайт с нехуевой цепочкой наследований бесплатные? Что дереференс указателя ничего не стоит? За ООП приходится платить.
Аноним 15/08/17 Втр 00:13:00  1044698
>>1044602
Сорян, боюсь наврать, а погружаться в это сейчас не хочу. Попробуй книгу найти. Можешь проверить предположение: обрабатывает только те эвенты новый луп, которые заданы флагом, который я упомянул, а остальные дропаются (т.е., никогда не буду накоплены движения мышкой, например).

http://doc.qt.io/qt-5/threads-qobject.html#per-thread-event-loop - попробуй ещё это, я понял чуть больше после прочтения.
Аноним 15/08/17 Втр 04:09:19  1044740
>>1044683
Мне кажется, что в игровом мире не так много объектов, чтобы высасывать столько производительности, скорее, это проблема физического контекста, то, действительно, может откусить очень и очень весомый кусок процессорного времени. За ее пределами не будет такого абсолютного выигрыша в производительности.
Аноним 15/08/17 Втр 12:52:19  1044828
Ребята, неординраный вопрос имееца.
Мы знаем что си код компилится в машиный код
А можно ли машиный код скомпилить в сишный?
Есть ли приблуды для этово? Если написать что то такое то взлетит?
Аноним 15/08/17 Втр 12:54:23  1044830
>>1044828
> си код компилится в машиный код
Нет.
Аноним 15/08/17 Втр 13:17:17  1044837
>>1044828
Конечно взлетит.
Аноним 15/08/17 Втр 13:38:44  1044851
>>1044828
>си код компилится в машиный код
ида и подобные ему инструменты умеют и "восстанавливать" машкод в сишный, но делают хуево
реверсеры чаще всего дизассемблированный код анализируют
Аноним 15/08/17 Втр 13:45:59  1044854
>>1044830
Вкатываешся братан?
Аноним 15/08/17 Втр 14:12:44  1044865
>>1044854
да щас наверное все компиляторы, не только шланг в промежуточное представление сначала перегоняют код
так что ж он прав
Аноним 15/08/17 Втр 14:15:29  1044868
>>1044854
Ага, 12й год уже. C компилится обычно в ассемблер, реже в roc. Если бы он компилился в машинное коды то ты бы имел необходимость на каждой машине перекомпилировать свое поделие заново.
Аноним 15/08/17 Втр 14:44:25  1044875
>>1044868
Разве код, написанный на языке ассемблера, не отображается в машинный код 1 к 1?
Аноним 15/08/17 Втр 14:45:25  1044876
>>1044868
>C компилится обычно в ассемблер
с каким же дном сижу на одной борде ))
Аноним 15/08/17 Втр 14:59:51  1044882
>>1044875
Нет, схуяли?
Аноним 15/08/17 Втр 15:05:34  1044885
>>1044876
Не ссы, курсу к третьему тебе и про это расскажут.
Аноним 15/08/17 Втр 15:11:38  1044887
>>1044885
ты, сука, дебил, правда 12 лет хуячишь кодером и с серьезным лицом тут вещаешь что си в ассемблер компилится?
да иди ты нахуй, лол
Аноним 15/08/17 Втр 15:53:38  1044906
>>1044885
Без оптимизаций возможно, но чтобы провернуть все механизмы, которые есть в современных кококомпиляторах нужно строить AST или что-то еще в этом роде.
Аноним 15/08/17 Втр 16:14:22  1044931
>>1044906
Ты о чем? Оптимизации на всех уровнях компиляции задействованы, что в RTL построении, что в AST.

>>1044887
Хуясе ты порвался. Ну давай, тащи свой чудо компилятор компилирующий C напрямую в объектный код. Естественно не очередной ToyMachine который тебе Марьванна задала до пятницы.
Аноним 15/08/17 Втр 16:22:20  1044939
>>1044882
Насколько я знаю, это так. Сам факт возможности перевести команду ассемблера вручную в двоичный код это символизирует.
Аноним 15/08/17 Втр 16:26:46  1044944
>>1044931
Не думаю, что у лексера есть какие-то другие задачи, чем высрать кучку токенов по требованию. Парсер разбирает входные токены и строит семантическое дерево, потому что даже с постоянным захватом токенов еще не вполне понятно, что с ними нужно делать. А с этим деревом хоть ебать, хоть сохранять, хоть завернуть ... все, что угодно можно делать.
Не могу понять что за RTL такой, был бы признателен, если бы ты скинул хоть какую-то инфу.
Аноним 15/08/17 Втр 16:28:38  1044945
>>1044944
А ну действительно, вспомнил про препроцессор. Лексер с парсером тоже участвуют, стало быть.
Аноним 15/08/17 Втр 16:38:56  1044952
>>1044944
RTL - это регистровый псевдоязык.

https://en.wikipedia.org/wiki/Register_transfer_language

Как он участвует в оптимизации:
https://gcc.gnu.org/onlinedocs/gccint/RTL-passes.html
Аноним 15/08/17 Втр 17:13:34  1044971
Крестач, а есть где англоязычный форум по крестам, где разрешено было бы создавать темы не по конкретным вопросам (как на SO), а более общие, и где было бы интересно посидеть почитать что-нибудь полезное.

>>1044454
Послушал я этого Эктона и только отчасти с ним согласен. Естественно, любая программа занимается только трансформацией разного рода данных. Естественно, если мы заранее знаем, с какими типами данных нам придётся работать, и какое железо будет всё это обрабатывать, то городить лишние абстракции нет необходимости. Но штука в том, что на суперкомпьютерах, серверах, рабочих станциях, десктопах, планшетах и смартфонах РАЗНОЕ ЖЕЛЕЗО (в т. ч. внутри класса устройств), которое работает под РАЗНЫМИ ОПЕРАЦИОННЫМИ СИСТЕМАМИ, и далеко не всегда данные можно представить какой-то структурой фиксированного размера или массивом структур. Поэтому многое из того, что этот мужик там говорил про data-oriented design неприменимо даже при разработке только под какую-то одну ОС. Про кросс-платформенную разработку вообще молчу.
Какие-то дебильные куски кода там пытался разбирать с точки зрения работы с кешем. Давайте теперь все сядем и при написании любой тулзы, приложения или движка будем думать о том, что там и как работает с кешем на хуевой туче устройств.
Вообще этот Эктон какой-то балабол зашоренный - сидит со своей консолью, в которой железо годами не меняется, и ничего вокруг не видит и не хочет видеть. Ему там пара чуваков задавали хорошие вопросы:
1. Как они избегают дублирования кода (они не используют шаблоны), который должен одинаково обрабатывать разные типы данных?
Ответил, что, мол, люди изобретают вещи (подразумевая, бесполезные вещи), приводящие к дублированию кода, а потом изобретают вещи, помогающие решать проблему дублирования кода. И вообще, обработка шаблонов в C++ - это просто обработка текста посредственным текстовым обработчиком (не такой уж он и посредственный, т. к. позволяет, всё-таки, надёжно обеспечить type-safety), и что там, где разумно использовать шаблоны, лучше ГЕНЕРИТЬ КОД СПЕЦИАЛЬНОЙ ТУЛЗОЙ, которая с этим справится лучше компилятора.
Ну и кто скажет, что он не дебил после этого.
2. Есть программа, и заранее неизвестно, под каким железом и осью эта программа будет работать. Где тут место для data-oriented design?
Ответил, что предъява о том, что характеристики железа могут быть заранее неизвестны - это всё НИПРАВДА. Что всегда нужно думать о том, под какое железо ты пишешь программу, и что портабельность в общем смысле недостижима и для дураков.
3. Вот написали они движок под железо PS3, а потом бац и его надо переписывать под PS4. И, поскольку железо совершенно разное, то старый движок оказывается почти бесполезным, т. к. у ких там везде используются определённые структуры данных под железо PS3. И не показывает ли это, что весь этот data-oriented design себя не оправдывает?
Ничего конкретного не ответил. Нёс какую-то херню.

Нахер таких дебилов-болтунов, короче.
Аноним 15/08/17 Втр 17:17:27  1044974
>>1044971
>> англоязычный форум по крестам
https://translate.google.com/translate?hl=en&sl=ru&tl=en&u=https%3A%2F%2F2ch.hk%2Fpr%2Fres%2F1036675.html
Аноним 15/08/17 Втр 17:53:53  1044994
>>1044828
>А можно ли машиный код скомпилить в сишный?
Абсолютно точно можно - каждую инструкцию можно портабельно переписать на C. Вопрос лишь в одном - нахуя? Олсо - компиляция - это ещё и линковка, т.е. сборка объектных файлов в один. Зачем делать то же самое с экзешником в обратную сторону? Наверное, ты говоришь о симуляции или трансляции.
>>1044851
Не, это не то, они пытаются оптимизировать и сделать код читаемым. Просто сделать трансляцию в C - запросто.
>>1044865>>1044854
Начнём с того, что компилировать машинный код нельзя по определению компиляции, так что вопрос изначально дебильный. С другой стороны, структура процесса компиляции во время обратной трансляции не имеет вообще никакого значения.
Аноним 15/08/17 Втр 18:36:33  1045014
>>1044931
блядь, все компляторы сейчас компилят в промежуточное представление, но на выходе в исполняемом файле будет машкод под конкретную архитектуру
и, да
>12й год уже [кодинга]
>C компилится обычно в ассемблер
просто напиши сколько зарабатываешь, чтобы мне окончательно жопу разорвало
ты пишешь полную чушь, просто пиздец
Аноним 15/08/17 Втр 18:37:56  1045015
>>1044994
ой, все
как можно пороть хуйню с серьезным лицом? это прокатывает вообще?
Аноним 15/08/17 Втр 19:05:16  1045027
>>1045015
Такое ощущение что какой то синиор из силиконовой долины вкинул вопрос и сам же толстит на него отвечая.
Аноним 15/08/17 Втр 19:53:08  1045046
>>1045014
Будет байтовый ассемблер. Открой экзешник в hiew и посмотри, прежде чем кукарекать.
мимо
Аноним 15/08/17 Втр 19:59:33  1045049
>>1045046
>байтовый ассемблер
какой нахуй "байтовый ассемблер"
ты троллишь что ли? это такая тонкота что ли?
ассемблеры - это семейство языков программирования, компилируемых в машинный код, такие же яп как и си, и с++, и паскаль семейства, и вообще любая хуйня что может генерировать машкод, вплодь до некоторый реализаций лиспа
Аноним 15/08/17 Втр 20:07:09  1045055
Sega CEO before[...].jpg (123Кб, 730x620)
Когда уже концепты будут? Я их уже лет джвадцать жду, если не больше.
Аноним 15/08/17 Втр 20:07:33  1045056
>>1045055
Чё это такое, расскажи вкратце
Аноним 15/08/17 Втр 20:09:45  1045057
>>1045014
Примеры то охуительного компилятора кроме силанга в режиме анализа будут с промежуточным представлением?
Аноним 15/08/17 Втр 20:13:23  1045060
>>1045056
Если просто - позволяет ограничивать параметры темплейтов без хаков вида enable_if и SFINAE.

https://stackoverflow.com/questions/15669592/what-are-the-differences-between-concepts-and-template-constraints
Аноним 15/08/17 Втр 20:19:54  1045064
>>1045057
и gcc и майкрософтофский компилер тоже используют промежуточное представление
да все используют
фишка llvm была же не в том что они первые сделали это, а в том что предоставили легкодоступное программное api на доступ к ir (intermediate representation)
и наверное мне здесь стоит прекращать просветительские посты, тк судя по постам, сегодня дурной контингент в этом треде
один только специалист с 12ти летним стажем упорно доказывающий что сишка компилится в ассемблер чего стоит
> Если бы он компилился в машинное коды то ты бы имел необходимость на каждой машине перекомпилировать свое поделие заново.
а вот от этого вообще на смех пробивает
Аноним 15/08/17 Втр 20:31:14  1045072
>>1045064
Долго еще будешь продолжать троллинг тупостью?
Вот тебе линк для альтернативно одаренных:
http://cs-fundamentals.com/c-programming/how-to-compile-c-program-using-gcc.php

Где ты здесь видишь свое промежуточное представление?

Аноним 15/08/17 Втр 20:54:53  1045082
>>1045072
нет, блядь, это ты необразованное уебище
в gcc целое семейство промежуточных представлений, с той же ссаной википедии
the historical Register Transfer Language (RTL)
the tree language GENERIC
the SSA-based GIMPLE.
Standard Portable Intermediate Representation SPIR/SPIR-V
LLVM Intermediate Representation
HSA Intermediate Layer
другое дело что к ним нет общедоступных программных апи, как у шланга поверх llvm
Аноним 15/08/17 Втр 21:01:45  1045084
>>1045082
> с той же ссаной википедии
Попробуй почитать что-то сложнее, базарю, заходит. Возможно даже начнешь трансформацию во что-то разумное.

>the historical Register Transfer Language (RTL)
>the tree language GENERIC
>the SSA-based GIMPLE.
Вот эти три хуевины нужны для преобразования препроцессированного кода в ассемблер.

>Standard Portable Intermediate Representation SPIR/SPIR-V
Это низкоуровневое представление для трансляции в GPU/CPU команды которое использует OpenCL/Vulkan и другие подобные стандарты.

>LLVM Intermediate Representation
Ну, я думаю даже такая тупая макака как ты слышала что это.

>HSA
Надстройка над ассемблером для серверных GPU.

Как все это тобою высранное относится к компиляции си, лол? Ты всегда когда обсираешься начинаешь кидать все до чего дотянешься из википедии?
Аноним 15/08/17 Втр 21:07:27  1045085
>>1045084
>Ну, я думаю даже такая тупая макака как ты слышала что это.
То есть LLVM не относится к компиляции Си? То есть это не промежуточное представление? Или что вы хотели этим сказать?
Аноним 15/08/17 Втр 21:08:39  1045087
>>1045085
У LLVM в процессе компиляции есть еще один дополнительный шаг, которого нет у других компиляторов, если на пальцах.
Аноним 15/08/17 Втр 21:36:15  1045094
>>1045084
>препроцессированного кода в ассемблер.
>в ассемблер
просто скажи мне, сучка, что ты троллишь
иначе нельзя быть таким упоротым
Аноним 15/08/17 Втр 21:37:57  1045096
>>1045087
КАКОГО ТАМ "ШАГА" НЕТ?
llvm, блядь, это ir с публичным программным api, что и отличает его от предшественников
Аноним 15/08/17 Втр 21:42:24  1045098
>>1045096
Нет, его отличает от предшественников четкое деление на бекенд и фронтенд. Посередине есть маняпредставления для перебрасывания кода между языками, но это отдельный разговор. Входы и выходы у всех компиляторов примерно одинаковые.
Аноним 15/08/17 Втр 21:43:35  1045099
>>1045094
Давай, еще раз запусти шутейку со своим "промежуточным" представлением. Чую к следующему треду ты и виртуальную си-машину родишь со своим форком джаваскрипта.
Аноним 15/08/17 Втр 22:00:24  1045102
>>1045099
>Не знать элементарных вещей
Скажи, ты только вкатываешься?
Аноним 15/08/17 Втр 22:05:57  1045103
>>1045099
>си компилируется в ассемблер
>12 кодинга
иди нахуй
Аноним 15/08/17 Втр 22:09:35  1045104
Что если запилить прогу которая компилит с++ код в асемблер? и наоборот асм в с++? Думаете взлетит?
Аноним 15/08/17 Втр 22:11:22  1045105
>>1045049
Маша, иди читай про опкоды ассемблера и не позорься.
Аноним 15/08/17 Втр 22:20:49  1045106
>>1045105
>си компилируется в ассемблер
Аноним 15/08/17 Втр 22:25:37  1045109
Этот тред достиг какого-то нового уровня. Я ваще не понимаю, что происходит.
Аноним 15/08/17 Втр 22:27:44  1045110
Расскажите ньюфагу, как компилируется си?
Аноним 15/08/17 Втр 22:31:10  1045112
>>1045106
Ничего кроме ассемблера твоя кора дуба не может исполнить напрямую.
Аноним 15/08/17 Втр 22:32:59  1045113
>>1045109
Подтягиваемся к стандарту самих плюсов
Аноним 15/08/17 Втр 22:33:25  1045114
>>1045112
Си->cisc ассемблер->risc ассемблер, который выполняется напрямую
Аноним 15/08/17 Втр 22:34:51  1045115
>>1045112
>Ничего кроме ассемблера твоя кора дуба не может исполнить напрямую.
блядь, ты пробиваешь дно, или все же троллишь?
Аноним 15/08/17 Втр 22:36:06  1045116
>>1045115
Ты чо дебил?
Во что может компилироваться си, как не в асм? В какой-то другой язык? Асм же и выполняется на процессоре напрямую, без трансляций
Аноним 15/08/17 Втр 22:36:23  1045117
на проце исполняется бинарный машинный код, никакого ассемблера там нет
Аноним 15/08/17 Втр 22:36:40  1045118
>>1045116
в машкод
уебище
Аноним 15/08/17 Втр 22:37:07  1045119
>>1045114
Какой ещё риск на x86? Выполняется ровно то что тебе конпилятор высрет.
Аноним 15/08/17 Втр 22:38:39  1045121
>>1045118
Манюша, я тебе ещё раз повторяю, открой любой бинарник в дизассемблере и прекрати обсирать портки.
Аноним 15/08/17 Втр 22:39:17  1045122
>>1045118
машкод и есть асм, ебать ты тупой
каждая асм мнемоническая инструкция равносильна одной машинной команде
Аноним 15/08/17 Втр 22:41:08  1045123
>>1045121
Асссемблер это мнемоническая запись машкода, если забыть про макросы.
Аноним 15/08/17 Втр 22:42:28  1045124
>>1045119
Читай, быдло
https://stackoverflow.com/questions/5806589/why-does-intel-hide-internal-risc-core-in-their-processors
Аноним 15/08/17 Втр 22:45:36  1045125
>>1045124
Каким боком внутренние костыли штеуда к софтверной части?
Аноним 15/08/17 Втр 22:47:30  1045127
>>1045125
Компилятор высирает cisc код, который все равно еще транслируется в risc код.
Аноним 15/08/17 Втр 22:49:31  1045128
>>1045127
Но это уже в железе и зависит от процессора. Принимает он именно классический 86 бинарник.
Аноним 15/08/17 Втр 22:54:00  1045130
>>1045114
cisc ассемблер->risc ассемблер
Я бы не сказал, что микрокод это risc ассемблер.
Аноним 15/08/17 Втр 23:40:15  1045147
Что именно происходит во второй строке и как объяснить оказавшееся в p значение?

char array = "1111";
int
p = (int*)array;
Аноним 15/08/17 Втр 23:43:44  1045149
>>1045147
Мама, чому я дебил.
[code lang=c++]
char array = "1111";
int
p = (int*)array;
[/code]
Аноним 15/08/17 Втр 23:45:10  1045150
>>1045123
Позволь чуть добавить: это мнемоническая запись обернутая в метаданные, но так оно и есть.
Аноним 15/08/17 Втр 23:48:42  1045151
>>1045147
В инт запихивается ( а точнее пишется ворнинг/еррор) значение указателя (адрес).
Аноним 16/08/17 Срд 00:17:03  1045157
>>1045151
А значение по этому адресу - 825307441. Почему?
Аноним 16/08/17 Срд 00:31:23  1045159
>>1045121
"дизассемблер" поэтому и называется дизассемблером что "восстанавливает" с той или иной степенью успешности машкод в тексты ассеблера
я повторюсь, ты троллишь так?
Аноним 16/08/17 Срд 00:52:13  1045165
>>1045159
И чем же по твоему являются машинные коды? Или ты у нас убежденный фортранщик?
Аноним 16/08/17 Срд 02:44:29  1045182
>>1045159
>с той или иной степенью успешности
Для x86 степень успешности составляет 100% ибо у инструкций ассемблера и опкодов имеется соответствие 1 к 1.
мимоаллигатор
Аноним 16/08/17 Срд 02:57:02  1045184
>>1036758
Просто не нужно выучивать язык до корки. Зачем знать о специфических вещах, которые используют разве что всякие MPL программеры. С++ крут своей моделью памяти, а не сахарком.
Аноним 16/08/17 Срд 02:59:51  1045186
>>1045184
>MPL программеры
Кто?
Аноним 16/08/17 Срд 07:51:11  1045215
>>1045186
meta
Аноним 16/08/17 Срд 09:27:34  1045231
>>1044974
А ты хорош
Аноним 16/08/17 Срд 09:53:06  1045236
>>1045122
>машкод и есть асм
Нет, конечно. Ассемблер - текстовый язык, который транслируется в машинный код. При этом транслятор ассемблера делает еще дохуя работы вроде сборки бинарника, размещения ресурсов, проставления всех адресов для джампов.
Аноним 16/08/17 Срд 09:55:38  1045237
>>1045157
>Почему?
Потому что это адресс, по которому лежит твоя строка (или половина байтов адреса, если компилируешь под х64).
Аноним 16/08/17 Срд 09:57:29  1045239
>>1045165
>И чем же по твоему являются машинные коды?
Машинные коды - последовательность байт, программа на ассемблере - текстовый файл. Ты эту разницу способен осознать?
Аноним 16/08/17 Срд 10:09:21  1045241
>>1045182
>100% ибо у инструкций ассемблера и опкодов имеется соответствие 1 к 1
Ну и какому опкоду соответствует строчка jmp pizdatvoeymamki? Какому из этих девяти http://x86.renejeschke.de/html/file_module_x86_id_147.html, например?
Аноним 16/08/17 Срд 10:20:44  1045245
>>1045182
>ибо у инструкций ассемблера и опкодов имеется соответствие 1 к 1.
Про псевдоинструкции слышал? В х86 тоже есть.
Аноним 16/08/17 Срд 12:24:46  1045298
>>1045239
Т.е. байтовый ассемблер (с метаданными на регистры) - это уже не ассемблер, это МАГИЯ
Аноним 16/08/17 Срд 12:35:46  1045302
>>1045165
инструкция ассемблера это строка
например
>mov eax ebx
ее машинный код, это всего два байта
>0x66 0xA1
Аноним 16/08/17 Срд 12:38:04  1045303
>>1045165
И алсо, у множества архитектур, есть валидные недокументированные опкоды, которые ты никогда не выразишь на языке ассемблера, но при этом они вполне себе могут быть исполненны процессором.
Аноним 16/08/17 Срд 12:45:05  1045307
>>1045302
>>0x66 0xA1
три байта
0x66 0x89 0xD8
fixed
Аноним 16/08/17 Срд 12:48:10  1045309
>>1045302
Т.е. от смены представления меняется семантика языка. Понятно. Очень оригинально.

>>1045303
Ага и микрокод инженеры пишут руками, как диды завещали. Походу ты просто немножко устарел, лет так на 30.
Аноним 16/08/17 Срд 13:15:12  1045319
>>1045298
Суть ассемблера не в тексте, а в том, что он собирает программу, то есть вместо меток проставляет адреса переходов, вместо имени ресурса ставит его адрес и т.д. То есть если ты пишешь в машкодах и какая-то функция поменяла расположение, то надо пройтись по всему бинарнику, и поменять адрес на новый. Ассемблер делает это автоматически.
Аноним 16/08/17 Срд 13:24:42  1045328
>>1045319
Это здорово что у тебя есть половина понимая работы ассемблера. Ну да не суть, оригинальный вопрос был - во что компилируется си, если я правильно понимаю. Вот он как раз компилируется в то, что ты называешь текстовым ассемблером, а затем в зависимости от бекенда или насмом или гасом ассемблируется в "бинарные волшебные строки".
Аноним 16/08/17 Срд 13:32:56  1045331
>>1045328
>Вот он как раз компилируется в то, что ты называешь текстовым ассемблером
Правильный ответ - си компилируется в объектные файлы. Никаких текстовых ассемблеров и бинарных строк.
Аноним 16/08/17 Срд 13:34:56  1045332
>>1045331
Компилятор си использует для этого сторонний ассемблер. Был DragonEgg который пытался собирать сразу бинарники из сей минуя rtl и ассемблер, но получалась хуита. Иди читай документацию, если не веришь тому что тебе говорят.
Аноним 16/08/17 Срд 13:38:29  1045335
>>1045332
>Компилятор си использует для этого сторонний ассемблер
Да какая разница что он использует, и какое у него промежуточное представление? Компилятор принимает на вход текстовый файл и выдает объектный. Результат работы компилятора си - объектный файл. Си компилируется в объектные файлы. Точка.
Аноним 16/08/17 Срд 13:39:35  1045336
>>1045335
Буду теперь на собеседованиях это спрашивать, чтобы дебилы сразу отсекались.
Аноним 16/08/17 Срд 13:44:24  1045340
>>1045336
Мамка набирает конкурентов на борщи?
Аноним 16/08/17 Срд 13:45:33  1045342
>>1045335
>Си компилируется в объектные файлы.
Ага, джаваскрипт тоже компилируется в исполняемые файлы, ну браузер же он исполняемый.
Dmitry 16/08/17 Срд 13:49:06  1045343
Вас не смущает что в c++ никогда небыло и не будет
- Стабильного ABI
- Нормального синтаксиса
- Нормальной производительности
- Нормальной масштабируемости
- Нормальных тимлидов
- Нормальных компиляторов
Аноним 16/08/17 Срд 13:49:50  1045345
>>1045343
А зачем все это?
Аноним 16/08/17 Срд 13:49:53  1045346
>>1045343
Нет.
Dmitry 16/08/17 Срд 13:51:57  1045348
>>1045345
Чтобы не стать умственным инвалидом на дно-должности мидла а то и джуна.
Чтобы не быть ограниченым одним языком и нихуя не уметь.
Аноним 16/08/17 Срд 13:55:14  1045350
Посоны, подскажите прием, как реализовать грамотное закрытие программы, в случае ошибки.
Есть несколько подсистем, которые держат какие-то ресурсы, и освобождают их при вызове деструкторов. Обычно при удачном завершении main().
Но где-нибудь в другом месте может случится ошибка, после которой желательно все бросить, и заняться освобождением ресурсов.
Аноним 16/08/17 Срд 13:57:08  1045353
>>1045348
Как вот это все
>- Стабильного ABI
>- Нормального синтаксиса
>- Нормальной производительности
>- Нормальной масштабируемости
>- Нормальных тимлидов
>- Нормальных компиляторов

Связано с вот этим вот:
>Чтобы не стать умственным инвалидом на дно-должности мидла а то и джуна.
>Чтобы не быть ограниченым одним языком и нихуя не уметь.

Или ты из инвалидов, которые умеют одну джаву или шарп, и идут выебываться на кресты?
Аноним 16/08/17 Срд 14:01:30  1045356
>>1045348
Ну хорошо, мысль твоя ясна, кто твоя мать тоже. Что сам предлагаешь? На чем нативные аппликухи писать?
Аноним 16/08/17 Срд 14:22:10  1045368
>>1045356
go для сервисов и нетворкинга.
C для системщины, игр, графики.
Аноним 16/08/17 Срд 14:23:04  1045369
>>1045350
exit(ERROR_CODE)
Аноним 16/08/17 Срд 14:23:59  1045371
>>1045368
>go
Мде, насчет мамаши я явно не ошибся.
Аноним 16/08/17 Срд 14:26:34  1045372
>>1045368
>C для системщины
Итак.

>игр, графики
Было, не взлетело.

>go для сервисов и нетворкинга
go не может ни в первое ни во второе. Даже его создатели скоро его дропнут, новые проекты все на питоне (который он должен был убить, лол)
Аноним 16/08/17 Срд 14:34:00  1045373
>>1045372
Маняоправдания.
Аноним 16/08/17 Срд 14:43:23  1045378
>>1045369
На stack overfow говорят что это хреновый подход.
Аноним 16/08/17 Срд 14:45:33  1045380
>>1045373
Безосновательный вскукарек. Поясняешь за плюсы своего goвна относительно крестов, и тогда, так и быть, сможешь уйти их треда с обоссаной лишь головой.
Аноним 16/08/17 Срд 16:02:47  1045408
https://github.com/cplusplus/draft/blob/master/papers/n4688.md
Читанул я на досуге, значит, что там принимают... Сетевая библиотека, рейнджи, концепты, параллелизм, и еще какое-то говно, которое возможно добавится в список ебанутых вопросов на собеседованиях. Среди этого всего самое полезное это концепты, а остальное лишь библотэки, которые к тому же УЖЕ ЕСТЬ. Так вот нахуя пихать то, что есть, и никому нахуй не упрется, разве что каким-то хипстерам, которые "STL - One Love". Где моя сериализация, суки?! СТАТИЧЕСКАЯ ебать вас в рот, никто не просит динамическую сериализацию, блять, предложения давно висят, сука, а они только BYTE ORDER высрали!!!!1!111
Вилли, убирай добрый кнут, доставай жестокий кнут!
Аноним 16/08/17 Срд 16:06:22  1045412
ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html
ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html
ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html
ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html
Аноним 16/08/17 Срд 16:06:35  1045413
>>1045408
Главное рефлекшон завезут. Ну и модули неплохо бы.
Аноним 16/08/17 Срд 16:30:58  1045430
>>1045413
не увидел там рефлексию, или все же есть
Аноним 16/08/17 Срд 18:30:02  1045484
>>1045343
>- Нормальных тимлидов
А я кто тогда?
Аноним 17/08/17 Чтв 14:51:02  1045870
>>1045408
Найс порвался.
Аноним 17/08/17 Чтв 14:51:53  1045872
>>1045343
>Вас не смущает
Нет.
Аноним 17/08/17 Чтв 20:33:42  1045969
>>1045343
Дык, все кроме аби есть.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 511 | 18 | 180
Назад Вверх Каталог Обновить

Топ тредов
Избранное