Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/Прошлый - https://2ch.hk/pr/res/961839.htmlТеги: кресты, cpp
Лул до сих пор мою шапку юзаютПора бы туда ситхов запилить
Подписался.
Как вернуть массив символов из функции без использования указателей и контейнеров? Например: char array[100] = function();
>>970952std::array<char, 100>
>>970952auto func() {char arr[100]; return arr;}Компилировать с -std=c++14
>>970974Все равно возвращает адрес локальной переменной. "warning: address of local variable 'array' returned" "incompatible types in assignment of 'char*' to 'char[2]"
>>970952Никак, функция возвращает скалярное значение либо ничего. Она тебе должна 100 символов пихнуть в стек? Наркоман.
>>970997Каждому лектору - в жопу по вектору.
>>970816 (OP)Куда делся ОП-стихописец?
>>970952neekaque
>>970952Кекchar (&GetArr())[100]{ static char arr[100] = "Use std::array"; return arr;}void main(){ char (&arr)[100] = GetArr(); // or auto& arr = GetArr();}
>>970952char f(size_t n) {string s=.......return s[n];}int main() {int N=...string res;for(auto i=0; i<N; i++) {res += f(i);}return 0;}
>>971019А там точно не надо && или &&& может быть?
>>971019Да, также забыл упомянуть, что не хочется использовать static и const хуету в функциях. Поэтому просто решил в качестве аргумента функции передавать массив, куда будет записана строка.
>>970974массив упрощается до указателя, и ты возвращаешь указатель на удаленную область. U N D E F I N E D B E H A V I O R
>>970952Возвращай char[900001] и используй только столько, склько нужно, очевидно же.
>>971103Зеленый?
>>971107Этот тот уёбок, которому надо вернуть массив без указателей, зелёный. А я всего лишь контраллирую.
>>970952Ссылка на память в таких массивах константная, её нельзя переопределить. если вдруг до сих пор не понятно было
>>970974 >>971107http://ideone.com/lYnRfd
>>971111А там нельзя эту вашу парашу с && заебенить чтобы не было копирования лишнего и память прям в стеке вызывающего выделилась?
>>971113Можно. Там не надо её реализовывать для данной задачи. Компилятор протаскивает значение функции, дублировать не приходится.http://ideone.com/jhnypk
>>971116Вау круто оптимизации 2017 год!А в каких случаях нужно ее явно указывать? Ведь зачем-то ее придумали.
>>971120Ну да. Гугли конструктор перемещения.
https://www.youtube.com/watch?v=qvDtRu68eaIбамп Богиней
>>971128Да что тут говорить. Пока модули и reflection не введут - нечего даже начинать пердуны старые, нашли что вводить в C++17, говноеды. "Си с классами" ковыряйте - и будет вам.
Чем отличается gnu c++ от других?
>>971140отлеилось
>>971144Про язык C слышал?
>>971144А?
>>971147Ну и? я просто начинающий аутист и мне нужно сделать задачку
>>971150C и C++ - разные языки.
Как сделать codeblocks запускать откомпиленные исполняемые файлы не через cb_console_runner?
>>971154Вас там заставляют этой мочой пользоваться?
>>971153Ну я знаю. Но что обозначает приставка GNU?
>>971158Гугли.
>>971155А чем он плох?
>>971164Плох тем, что есть альтернативы намного лучше.
>>971168И под линуксом? Например? Чем лучше?
>>971161Я даун. Буду учить.
>>971170Лучше объективно. Пользуйся кодблоком своим, если тебе норм.Из альтернатив Eclipse, CLion, NetBeans.
>>971176>Лучше объективноНу что значит "объективно"? Мне интересно узнать, что я упускаю не пользуясь вышеперечисленными IDE.
>>971186Я не в силах объяснить, поскольку не помню, чем плох codeblocks.
>>971190А примерно так можешь почувствовать вспомнить?
>>971186Ими вообще никто не пользуется, и они никому нахуй не нужны. Под LOONIXом у тебя либо qtcreator, либо CLion, как меньше и зол джаваговна. А вообще, с божественной студией ничему не сравнится
>>971221Нет. Повторю ещё раз - я не какой-то сектант, мне никто не платил, чтобы IDE двигать. Если тебе норм - пользуюся кодблоком.
>>971224Школьник, уймись.
>>971244Но я не школьник
>>971247> не умеет в -тся -ться > тащится от студии...> ДА Я НЕ ШКОЛЬНИК!11
>>971251ты, поди, по ВИМУ угараешь? Есть такой подвид мудаков из каменного века, которые не любят студи.
>>971258>>971244
>>971258>которые не любят студи.школотрон не палицо
С или С++?
>>971276Яблоки или груши?
>>971277Есть два стула, на одном тайпдефы точёные, на другом - кресты дрочёные.
>>971276java
Аноны, вопрос из интереса. Как сейчас с написанием зловредов? Действительно ли генераторы вирусов уже заменяют собой вирусомейкера? Слышал от сис админа одной крупной компании, что эпоха зловредов написанных человеком прошла, скоро ии с нейросетью будут сами писать зловреды, превосходящие любой написанный человеком
>>971288Хуй знает.
>>971291Не знает.
>>971227Ну ладно
здаровча!вопрос серьезный. вот объявили class APA{ тут всякие паблики, приваты} APA;что означает APA?
>>970816 (OP)здаровча!вопрос серьезный. вот объявили class APA{ тут всякие паблики, приваты} (звездочка)APA;что означает (звездочка)APA?
>>971397Сразу объявляется переменная-указатель на этот класс.
Аноны, поясните в чем разница между operator new и new как ключевое слово. Сам вопрос возник из-за этой статьи:https://habrahabr.ru/post/185662/Правильно ли я понял, что сначала вызывается оператор new, потом вызывается new как ключевое слово, который размещает объект в памяти, а уже потом вызывается конструктор. Алсо, как происходит это самое размещение объекта в памяти?
>>971432Вопрос туда же: зачем оператор new принимает параметр size, ведь мы же знаем размер объекта, для которого вызывается этот оператор
>>971435тому что new Yoba() это шорткат для (Yoba*)::operator new(sizeof(Yoba))
>>971439конструктор потелялся после оператора new
>>971439So? Мы то вызывает оператор new который внутри Yoba, а раз так, то мы можем просто внутри оператора использовать тот же самый sizeof:class Yoba {void operator new() {return malloc(sizeof(Yoba));//или вообще return malloc(sizeof(this));}};у меня просто Java головного мозга
>>971158В зависимости от того, насколько автор программы идиот: либо компилятор GCC, либо -std=gnu++11.
>To convert an std::istream into a boolean, the compiler calls a member function called std::istream::operator void(). This returns a void pointer, which is in turn converted to a boolean (NULL becomes false, any other pointer becomes true). So in this case the compiler generates a call to std::cin.operator void(), just as if you had casted it explicitly such as (void) std::cin.Конверсия в буль через птр... КТО ЭТО ПРИДУМАЛ?
[code]class A{};
>>971447>return malloc(sizeof(this))Макакина вакаба сожрала твои звёздочки. Нельзя так людей пугать.Оператор нью это чисто выделение памяти. new T (ака new expression) это оператор new + конструктор T.Аллоцировать можешь как тебе нравится - хочешь маллоком, хочешь на своём линейном буффере с блекджеком и шлюхами.
struct A : vector<int> {};struct B { A a;};OKstruct A;struct B { A a;};struct A : vector<int> {};Иди нахуйПоясните
>>971482А конверсия ptr в буль это типо по человечески?
>>971500В первом случае кнопилятор сумел вычислить размер структуры А и поэтому сумел запихнуть его в объект Б.Во втором случае компилятор не ебет, какой размер у структуры А во время объявления структуры Б. Компилятор лишь знает, что ты мамкой поклялся объявить когда-нить структуру А. Если поменяешь на указатель во втором случае - сработает.
>>971504Спасибо
>>971501Не очень, но к простоте выражения if(data) привыкаешь. Меня больше позабавило operator voidЗВЁЗДОЧКА.
>>971432>вызывается new как ключевое слово>ключевое слово>вызываетсяОткуда вы лезете?> https://habrahabr.ru/post/185662/А, с хабрапараши. Вернись на парашу.
Если есть две функцииvoid test(Int x)void test(int x)Компилятор ведь обосрётся если на его платформе sizeof(Int)==sizeof(int)? Нужно писать #if sizeof(Int)==sizeof(int) для второй функции?
>>971535>Компилятор ведь обосрётся если на его платформе sizeof(Int)==sizeof(int)? Обязательно обосрётся.
>>971535Точнее != во втором случае
>>971535>>971537Про что несёт?
>>971538Я хочу сделать так#define INT long longvoid test(INT)#if sizeof(int) != sizeof(INT)void test(int)#endif
>>971539А зачем?
>>971540Чтобы не нужно было писать INT(x) при вызове функции, та функция что принимает int это как хелпер для автоматического каста в больший тип, но интересно что будет если окажется что это одинаковые типы для компилятора
>>971541int и long long это всегда разные типы для компилятора.
>>971482Раньше по другому было нельзя. Гугли по safe bool idiom насчет того, почему просто operator bool не работает. Теперь-же есть explicit operator bool, и проблемы отпадают.
>>971535Скорее ты обосрёшься от полного отсутствия знаний.
>>971499>Оператор нью это чисто выделение памяти. new T (ака new expression) это оператор new + конструктор T.Т.е. в любой записи по типу Foo *f = new Foo(); new является ключевым словом, которое уже вызывает оператор и конструктор по умолчанию?
>>971560А ещё убеждается, что при исключении в конструкторе память освобождается.
>>971432В статье есть ссылки на стандарт, открой и почитай.
>>971432В частности читни 3.7.4
Возможно в райнтайме создать С функцию чтобы передать адрес как колбек? Например создать std::function и конвертировать
>>972016По-человечески опиши проблему
>>972016Но вот, что я нашёл:http://stackoverflow.com/questions/11016078/is-it-possible-to-create-a-function-dynamically-during-runtime-in-c
>>972024atexit([](){}), что не понятно? atexit принимает указатель на функцию, которая должна быть прописана в бинарнике. А std::function можно создать динамически, но как конвертировать её в С-функцию - не понятно.
>>972255> конвертировать её в С-функциюstd::function::target же
>>972261http://ideone.com/ljYpUtСегфолтится. Проблема очевидно в разименовании указателя, который возвращает target(), но если убрать звёздочку - не компилится. Тип в <> неправильно написал?
>>972278А, только что прочитал, что target() может вернуть nullptr и сразу же забыл об этом и не проверил результат. Вопрос почему target() не работает ещё открыт.
>>971397class Human {int health;std::string name;} person1;или тоже самоеclass Human {int health;std::string name;};Human person1;
>>972287мог и указатель объявить. (звездочка)person1
Ананасы, у меня вопрос по культе QtИмеется необходимость создавать message box`ы. Использую для этих целей QMessageBox::warning(...). И интересно мне вот что - можно ли как-нибудь запретить создание message box`а, если другой message box уже показан?
>>972255>А std::function можно создать динамическиДело в том, что уже это нельзя. Единственная форма "создания" функций в плюсах - это тимплейты, а они должны быть инстанциированы во время компиляции. Ты никак не вызовешь тимплейт так, чтобы во время компиляции компилятор это не заметил - в программе будут только те функции, сигнатуры котоорых используются.Если ты хочешь скомпилировать исходный код - это уже другое: >>972026>>972261Нет. Target не может сделать функцию из функтора (коим является лямбда), это невозможно.>>972278Ты въебал себе в ногу. C++ не сверяет типы. Правильное использование: http://en.cppreference.com/w/cpp/utility/functional/function/target>>972293>И интересно мне вот что - можно ли как-нибудь запретить создание message box`а, если другой message box уже показан?Сделай свой класс/функцию, только который ты используешь и который разрешает только один инстанс (либо не даёт сконструировать объект, либо спинится в конструкторе, пока не разрушится предыдущий кумесагбокс, либо, если это функция, функция спинится в ожидании завершения других функций).
И ещё идея: ты можешь сбацать простенький интерпретатор, и динамические функции твои - это интерпретатор+программа. И даже в этом случае ты не сможешь сделать С-функцию: интерпретатор у тебя один, а в указателе ссылку на программу не передашь.И если вдруг ты пойдёшь по пути компилирования на лету, то тебе придётся платформозависимо что-то вызывать - LoadLibrary, например. Ни один другой язык программирования не может сбацать тебе экспортные C-функции без компилирования в dynamic library и подгрузки оной, на одна ОС не даст этого сделать.
Вот объявление этого вашего target() в STL GCC: template<typename _Functor> _Functor target() noexcept; /// @overload template<typename _Functor> const _Functor target() const noexcept;И никаких тебе С-функций. Почему плюсы дают тебе выстрелить себе в ногу - неизвестно. Можешь поизучать реализацию, она вся в файле functional твоего компилятора.
>>972297Нужно чтобы пользователь библиотеки мог передать лямбду вместо того чтобы каждый раз прописывать статическую функцию и передавать её адрес. А мне эту лямбду нужно завернуть в другую (то есть нужен захват [&]) и поставить конечную лямбду как колбек, atexit для примера.
>>972301Ну или хотя бы даже пускай прописывает статическую функцию в С-стиле, только я всё равно не могу обернуть её в другую функцию.Например как хотелось быvoid yoba(std::function<void(int)> callback){int x = 10;std::atexit( [=] () { callback(x); } );}или хотя бы такstatic void callback(int x) {} // всё как в С, никаких лямбдint x = 10;std::atexit( [=] () { callback(x); } );
>>972301Нахуя? Чем тебя указатель на функцию или std::function не устроил?https://ideone.com/tPjaoY
>>972313Нужно взаимодействовать с Си, очевидно же
>>972315https://ideone.com/tPjaoY
>>972301>поставить конечную лямбду как колбекЛямбда - копируемый объект (код в образе + память в объекте), функция - это кусок кода по некоторому фиксированному адресу и кусок памяти по некоторому фиксированному адресу.Если тебе очень приспичит, ты можешь сделать функцию-обёртку, которая будет принимать либо все лямбды (код должен быть доступен пользователю), либо лямбды только одного типа (но зато их можно будет складывать в список).Функцию эту регистрируешь атекситом и наслаждаешься костылём.https://ideone.com/lep9aVМожешь завести стек и складывать в него все зарегенные колбеки.
>>972301>А мне эту лямбду нужно завернуть в другую (то есть нужен захват [&]) и поставить конечную лямбду как колбек, atexit для примера.Забудь. atexit() принимает указатели на функции. Лямбда с нетривиальным захватом не превращается в указатель на функцию.
Как этот вижуал студио установить-то, помогите пожалуйста!Скачал 15 версию, запускаю - и программа ни на что не реагирует, просто нажимаю на любые кнопки - не реагирует, и звук такой противный виндосовский. как ошибка какая-то
>>972334Тот самый момент, когда ты настолько профнепригоден, что даже студию поставить не можешь
>>972334Пора отращивать прыщи.
>>972343>>972341Установил, и теперь вот такая проблема, на пике.Это пиздец. У меня задание - сделать простой текстовый квест на условиях. Я его сделал, пытаюсь компилировать - и такая хуйня.При создании проекта выбирал консольное приложение, пустой проект. НИкаких библиотек не ставил.http://stackoverflow.com/questions/1775865/preventing-console-window-from-closing-on-visual-studio-c-c-console-applicatioНагуглил это - не помогло. Гуглил что неправильно проект создал - не помогло. Помогите пожалуйста, умоляю, может есть какая другая IDE с поддержкой кириллицы?
>>972350QtCreator.>и такая хуйня.Саемшит, брув. Запускаю порграмму, возвращаюсь в студию, а там эта хуйня висит. По-моему так и не поправил.https://forums.xamarin.com/discussion/89755/how-to-make-visual-studio-not-to-rebuild-project-on-re-run - одинокий гребецhttp://stackoverflow.com/questions/2646858/visual-studio-2010-isnt-building-before-a-run-when-there-are-code-changes - а вот это может помочь. Вспоминаю это.
Объясните мне, что значит "open for input"? А если я не укажи ни аут, ни ин, то что будет?В реализации уже подглядел (там хитро), а где это в стандарте найти?
>>972386Нашёл.
>>972350Попробуй ангуляр там, или питон. Очевидно, что кресты это не твое.
>>972393Конкретно эта ошибка - один из многочисленных багов в студии. Студия - это не кресты, это студия.
>>972399>>972393Так я знаю.В общем в десятый раз все переустановил, ошибка не пропала - но код заработал. >>972366Благодарю, качаю.
>>972399в чем баг конкретно?
Бенчмарк говорит что моя либа говно. Красивые лямбды function<Scalar(Scalar)> с захватом чего угодно и управлением стеком за экраном дают прирост производительности всего 30% (в сравнении с обычным скриптом), а если просто на Си сделать stack[0] = factorial( stack[0] ) - прирост производительности 970%
>>972403В том, что в какой-то момент студия начинает предлагать пересобрать проект после каждого запуска, и при этом ничего не клмпилирует и не линкует, только один файлик какой-то обновляет. Читай ссылку на СО, там у людей в точности то же.>>972407Ты не смог, но ты пытался. Попробуй -O3. Команды матчишь мапом? Есть перфект хэш, вроде: даёшь набор ключей, и он минимизирует линейный поиск по вёдрам.Оу, и ещё: http://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio . Если ты из входа читаешь, это важно.И -funroll-loops попробуй.
>>972424>сли ты из входа читаешь, это важно.А, стоп, у тебя там цикл же. Не, неважно.
>>972350Это такая шутка? Ты не можешь просто нажать да?
>>972407std::function это типа shared_ptr: почти всегда (за исключением размера лямбды ≤ 1-2 sizeof(void*)) динамическое выделение памяти и подсчёт ссылок.
Здарова, куканы.Подскажите, пожалуйста, хорошую (не обязательно популярную) библиотеку для работы с асинхронным IO (файловые операции и сетевые сокеты обязательно), можно даже на Цэ.
>>972424Коллбеки лежат в четырёх unordered_map<string, function> и в зависимости от контекста вызова и количества аргументов выбирается одна из мап и вызываеется функция _callbacks.find(name).second(arg)Такие названия функций из-за того что шаблоны и перегрузка функций не работают с function<void(...)> и function<...(void)>На 3 создание функции, эквивалетное sub sub_name { ... }Работает со скоростью света, но как оказалось обернуть function ни во что нельзя, и чтобы пользоваться этим нужно лезть в самые внутренности интерпретатора, которые никто кроме меня не понимает>>972430И как быть, может указатели на std::function хранить?
>>972488Какая же ебанная лапша.Прости Господи.
>>972488>И как быть, может указатели на std::function хранить?Чтобы ещё из-за одного уровня indirection больше тормозило?
Помогите найти ошибку http://ideone.com/Ez0l8f пожалуйста. Лаба до затра горит.
>>972528https://github.com/sosachbot/cppthreadhat/wiki#Памятка-нюфагу
>>972528>Java
>>972474Очевидный boost::asio (годные гайды ищи сам, их вроде не существует)
>>972528У тебя там delete[] в деструкторе вызывается для обычных указателей, не на динамическую память. Конечно же ошибка
почему в gcc 6.3.0 не завезли std::quick_exit ? error: 'quick_exit' is not a member of 'std'
>>972706https://wandbox.org/permlink/Ry0dfudgKLmYOvpQ
>>971128ЧТО ЕТО ЗА НАХУЙ?! У меня кровь из глаз полилась. Это бложик фемо-спортсменки-программистки на ютубе? WTF?!
>>972656либо nullptr пусть пишет
>>971128теребонькнул
>>972528Надеюсь на то, что уже сгорела.
>>972656Там не только в этом проблема. :3
>>972656Скажем так, delete[] и должен вызываться для обычных указателей - указатели, с которыми работает delete[], ничем не отличаются от указателей, с коротыми работает delete.
>>972904Кроме......
Кто-нибудь может сказать, если для работы требуется opengl версии 2, а у меня 4.5, работать не будет? Они не совместимы?
>>972968Можете не отвечать, если кому пригодитсяhttp://www.prog.org.ru/index.php?topic=27216.msg196943#msg196943
>>971008Бамп
Помогите разобраться с gtkmm, хотелось бы книжек или гайдов где всё подробно расписано, гуглил, не нашёл.
У меня программа крашится на выходе, причем иногда она крашится, а иногда, блеать, завершается с кодом 0. Я все деструкторы проверил, вроде память не течет. Что могло пойти не так? Если что, у меня Qt-объекты.
>>973310Падает из-за Segmentation Fault. Как его найти-то теперь?
>>973315valgrind
>>973317Я на шиндошс пишу
>>973318Это же Qt, скомпилится где угодно.
>>973318Вот какая-то петушня есть http://www.drmemory.org/
>>973318Gflags
Как грамотно запретить создание второго объекта класса при соответсвующем дефайне?Yoba::Yoba(){_id = _lastid++;#ifndef MULTIPLICITYif(_id > 0)throw ...#endif}как-то не очень выглядит по-моему, но ничего другого в голову не приходит
>>973339> Как грамотно запретить создание второго объекта класса при соответсвующем дефайне?Синглтон?
>>973315>Как его найти-то теперь?Дебуг билд и GDB.>>973318Можешь взгромоздить любую линукс-ОС и скомпилировать там.
>>973341Бочку?
>>973339Городить дефайны внутри конструкторов крайне грязно и выдаёт плохой вкус к коду.Лучше напиши отдельный синглтон-класс и отдельный просто-класс. Дефайном определяй тип класса.Как-то так://defines.hpp#ifdef MULTIPLICITY#define Yoba MultiYoba#else#define Yoba SingleYoba#endif//main.cppYoba* yoba = new Yoba();Т.е. в коде создание класса будет чистым, без мусора, а весь мусор будет скрыт в отдельный файл.
>>973466Блядь, за полчаса даже никто не обосрал меня за то, что я использовал дефайны вместо тайпдефов? Цепепетред, ты меня разочаровал.
>>973466MultiYoba это неплохая идея кстати. Я через #ifndef просто прятал ряд методов которые не нужны в однопоточном приложении, а можно же просто наследовать в класс Multi и добавить эти методы туда.
>>973500Только используй тайпдефы, а не дефайны, так надёжнее.
>>973503Да тут препроцессор вообще не нужен. Можно просто сделать вродеclass MultiYoba : public YobaMultiYoba::test(){pthread_set_context();Yoba::test();}а базовый класс вообще не трогать
>>973339const bool MULTIPLICITY=true;Yoba::Yoba(){_id = _lastid++;if(MULTIPLICITY && _id > 0)throw ...}Чо сложного-то?
>>973528Но компиляция, -DMULTIPLICITY там..
>>973532Так бы и сказал. С какого фига то, что может навредить программе, управляется из компилятора, кстати?
>>973536Так же все делают? Единственное, что мне не понравилось - это когда библиотека собирается с одними дефайнами, которые меняют код, а приложение, с котором линкуется библиотека, компилирует заголовки библиотеки с другими дефайнами - никаких ошибок компиляции нет, только сегфолты в рантайме.
>>973500Не проще использовать подходящий паттерн?стратегию, например?
>>973543>Так же все делают?Ни разу не видел такого. Всё то, от чего зависит корректность программы, должно быть в программе.Иногда пишут объфвления констант перед инклудом, чтобы в инклуде была нужная константа - эта практика лучше.
>>973581Все паттерны - это рантайм. Зачем ему лишний оверхед?
>>973339Ну используй фабрику или фабричный метод, например:class Yoba {public: static std::unique_ptr<Yoba> create();private: Yoba();};std::unique_ptr<Yoba> Yoba::create() {#ifndef MULTIPLE_INSTANCES return std::unique_ptr<Yoba>(new Yoba());#else static std::atomic<bool> instanceExists(false); bool expectedExists = false; if (instanceExists.compare_exchange_strong(expectedExists, true, std::memory_order_acq_rel, std::memory_order_seq_cst)) { return std::unique_ptr<Yoba>(new Yoba()); }#endif}
Можете закидать меня ссаными тряпками. Как подключить spdlog к своему проекту? Я хочу, чтоб эта хуёвина лежала в исходниках моего проекта. Скопировал я её к себе, подключил header, пытаюсь собрать, а visual studio мне такая: "пошёл ка ты нахуй" говорит test\test\spdlog\spdlog.h(12): fatal error C1083: Не удается открыть файл включение: spdlog/tweakme.h: No such file or directory хотя этот файлик в скопированной папке лежит. Я явно что-то делаю не так. Ткните мордой, что именно
>>973896Тебе нужно прописать пути включений файлов, смотри в настройках препроцессора, если я не ошибаюсь. Если это к тому же не header-only библиотека, тогда тебе нужно в путях поиска линковщика добавить путь к библиотеке (самому .lib файлу) и добавить в список линкуемых библиотек ее (соотвественно my_static_lib.lib)
>>973900Это header-only library.Как-то ебануто выглядит прописывать в путях включения путь к проектуЕсли пути включения прописать всё заебись работает
>>973901Хм, а относительные пути не поддерживаются? По идее должны, но тут точно ничего сказать не могу.
>>973896ООООООООО, слушай, я догадался.https://github.com/gabime/spdlog/blob/master/include/spdlog/spdlog.hВключение в угловых скобках. Это допустимо только тогда, когда хеадер в папках поиска. Когда ты добавляешь пути инклудов, ты расширяешь жтот список, и всё работает.Если ты этого не сделал, то если инклуд находится в папке "проекта" в папке H и хочет включиьт инклуд из отй же папки, то в нём должно быть не#include "H/fuck.h" - это означает "H/H/fuck.h", так как это путь относительно этого инклуда, а#include "fuck.h".
Как сделать статический блок в const функции?virtual string to_string() const{if(!_loaded) { // нельзя менять поля в const_loaded = true;load()}...}
>>974127mutable
Сап сиплюсач. Ты - последняя надежда. Нигде не смог найти инфы как это сделать и вообще можно ли так. Нужно в один датагрид визуалка 2010 засунуть 2 и более таблиц, чтобы они отображались как одна посредством связей как в ацессах, при нажатии на какую-то строку. Пробовал через запросы, указывал несколько таблиц, заполнял коллекции - либо отображалась одна таблица, либо совсем ломалось. Возможно ли такое и как это сделать?
>>974192Попробуй загуглить "c++ forms datagridview несколько таблиц", там вроде достаточно ссылок с возможными решениями.Сам я не помогу - не шарю.
>>974205Дак в том-то и дело, что все уже прогуглено. Из подобного выдает все онли для шарпа. Пытался переписать код от шарпа - не смог, одни ошибки.
>>974211Если ты всё же хочешь получить какую-то помощь, нужно дать больше информации. В формах ты шарящего вряд ли тут найдёшь. Если не боишься, можешь проект кинуть, наработки, что пытался делать.
>>974127Не понял, объясни.
>>974053Я остановился на том, что прописал путь во включения.
>>974276Метод to_string должен один раз подгрузить ресурсы при том что он const.Поле mutable bool _loaded вроде работает
>>974360Не забудь про thread safety.
Вкатился в кресты, полёт нормальный. До этого полтора года страдал хуйнёй на пистоне. Учу тут http://www.learncpp.com/Стоит добавить в шапку этот сайт, как по мне.
кто - нибудь реально на крестах работает из всего треда?
>>974538Не думаю. Что бы на них работать нужно быть оче жестким спецом, а как для хобби кресты самое то, я щитаю.
>>974538работаю крестовым сеньором-помидором, но сижу, в основном, в ридонли.
Тупой первак итт. Если у меня в вордовском доке таблица, и мне нужно считывание строки, при чем в некоторых ячейках много строк. Если я сделаю такstring S; while ( getline(in,S)) { }У меня будет считываться строка таблицы или строка ячейки?
>>974572Ты бинарную кашу считаешь, а не строки и таблицы.
>>974538пишу под эмбедед на плюсахтред чуть менее, чем полностью состоит из легко-прогугливаемых вопросов от школьников и вкатывальщиков. поэтому r-only
>>974572Открой текстовым редактором вроде Notepad++ и посмотри, что ты читаешь.Тебе может помочь OLE Automation ебучий кошмар, нирикамендую или какая-нибудь либа примеров не знаю
>>974572> Если у меня в вордовском доке таблица, и мне нужно считывание строки,Binary office formats specification.XML office formats specification.
Горения жепы тредВся суть плюсов: std::string str = "Hello"; const char* str_c = str.c_str(); printf("%s\n", str_c); str += "Dude"; printf("%s\n", str_c);Такой Оохуенный const, что второй раз будет напечатано HelloDude. Ебучий язык
>>974642Вы морально не готовы к крестам.http://stackoverflow.com/questions/2156305/double-const-declaration
>>974643Я в курсах про константный указатель на не константные данные, и не константный указатель на константные данные. Просто нахуй у меня бомбит от этого ебанутого дизайна, ебучие байтоебы, лучше бы константные строки сделали с другим модификатором.
>>974642Соответственно, еще такой вопрос:Если я хочу написать свой класс исключения, который наследуется от std::runtime_error, но содержит еще дополнительную информацию - номер строки, имя файла, имя функции и тд. Я определяю конструктор так:BaseException(const char msg, int line, const char file, const char function) : std::runtime_error(msg), m_line(line), m_file(file), m_function(function), m_exceptionType("BaseException") {}Пока все ок, но я еще хочу написать свою функцию what(); которая вернет одну const char которая является конкатенацией std::runtime_error::what() и моих полей(m_function, m_file и тд). Как это сделать? Если я просто создам строку внутри функции и верну s.c_srt() то у меня будет хуйня, т.к. объект на стеке и после выхода он наебнется. Получается, единственный варик - создавать еще одно дополнительное поле в классе моего исключения?
>>974642Написал хуйню, ничерта не понимая - виноват язык. Следущий
>>974657да
Сап, анон. Есть задача, которая подразумевает считывание чисел из файла. Если создавать буфер и ifstream'ом туда пихать, а затем засовывать в массив, то все работает хорошо. Если же использовать fgets, считывая по символу и формируя строку с числом, которая потом вновь оказывается в массиве – программа ломается на одном из тестов (содержание тестов неизвестно). Есть предположения/мысли, что я мог не учесть, забыть и так далее? Считывание на известных тестах работает правильно.
>>974664если есть вариант считать даблы из файла каким-нибудь еще более быстрым способом, то будет вообще здорово.
>>974657А если захочешь соединять поля во what(), придётся делать ещё одно поле, потому что результат контатации строк тоже где-то надо хранить
>>974664Щас я вселюсь в птичку, и узнаю, что там внутри этих тестов и твоего кода.Ну серьезно, телепаты в отпуске.
>>974669>>974664https://pastebin.com/DZETEjgn
>>974668>А если захочешь соединять поля во what(), придётся делать ещё одно поле, потому что результат контатации строк тоже где-то надо хранитьТак на пике же не так?или это такой тонкий подъеб?
Хочу создать аллокатор с 2 шаблонными параметрами, при этом второй параметр зависит от первого. Пишу:template<typename T, void f(T)> myallocator: public std::allocator<T>И вот, по ходу дела нарываюсь на rebind:template<typename Tp1> struct rebind{typedef myallocator<Tp1,(???)> other;}И что это, ебать? Затребовали создать то же самое, но с другим названием параметра шаблона, заебись! Ну так а мне что ставить на месте (???) ?При создании объекта как 2 аргумент шаблона передаётся указатель на функцию void f(T). В rebind в typedef вроде как должна использоваться void f(Tp1). Но хуй там, мы уже передали в параметр шаблона void f(T).Получается, требование создания rebind в таком виде делает невозможным использование нонтайп параметров, зависимых от тайп параметров, без этой херни нихуя не работает.Что за долбаебы писали STL?|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
>>974642The pointer obtained from c_str() may be invalidated by: - Passing a non-const reference to the string to any standard library function, or - Calling non-const member functions on the string, excluding operator[], at(), front(), back(), begin(), rbegin(), end() and rend().Что тебе непонятно?
>>974670Почему читается по два байта за раз из потока?
>>974686>Что за долбаебы писали STLПричем тут шаблоны и стл? Стл писал математик из мгу, поэтому они такие и хуевые. А по шаблонам есть книги Александреску и Вундервурда где на 1к+ страниц все подробно разъяснено почему так, а не иначе. После прочтения, сможешь запускать программы на этапе компиляции, ибо шаблоны полны по тьюрингу
>>974691> После прочтения, сможешь запускать программы на этапе компиляции, ибо шаблоны полны по тьюрингуБрайнфук тоже полон. Только на нём не напишешь нихуя полезного. Как и на шаблонах.
>>974691>по тьюрингуПо фрейду маня.
>>974690Буфферизация такая ;)
>>974693Нахуя что-то писать, если нечего сказать по делу. Лишь бы спиздануть хуйню какую-то.
>>974690потому что вторым символом всегда кладется нулевой, или это не так работает?
>>974691При том, что в STL посрать негде, везде напиханы ебучие шаблоны, и уж если они их использовали, то обязаны были сделать все юзер френдли. Эти уебки блять пишут СТАНДАРТНУЮ библиотеку, а не васянский высер (тогда я бы понял), при этом обоссываясь на каждом шагу и говнокодя гнилые костыли которые разваливаются к хуям при первом пуке
>>974686http://en.cppreference.com/w/cpp/memory/memory_resource
>>974699Ты о чем? У тебя в файле чего изначально записано то?
>>974696Оно не юзабельно, еще что сказать?Зачем на этапе компиляции исполнять, ты поехавший? Вместо динамического бинарника 8кб тащить С++ тулчейн - охуеть
>>974704в файле обычные даблы в формате 1.2342, судя по тем тестам, которые у меня есть. В каждой строке n штук, строк также n.Мне нужно сделать NxN матрицу из них. Длину одного числа я не знаю заранее (может быть 1.0, а может 121.77).Есть вариант с ifstream, но хотелось бы чего-нибудь побыстрее.
>>974705>Зачем на этапе компиляции исполнятьПотому что можносовсем отупели со своими байтами, уже в сарказм не могут. То, что так можно делать, как бе намекает, что шаблоны - кривой высер
>>974709Чем числа в строке разделены, пробелами?Если да, то читаешь строку из файлаstd::string buf;std::getline(stream, buf);Инициализируешь этой строкой строковый потокstd::stringstream ss{buf}Читаешь из строкового буфера числаwhile (!ss.eof()){float i;ss >> i;}
>>974711да, пробелами. Мне нужен максимально быстрый вариант, собственно поэтому пришел сюда. Этот самый быстрый или есть еще круче?
>>974716>или есть еще кручеобычный scanf же быстрееhttp://stackoverflow.com/questions/1042110/using-scanf-in-c-programs-is-faster-than-using-cin
>>974720с fscanf выполняется 12.953 секунд в лучшем случае, с stringstream слишком долго выходит.Пока что лучший результат получается с ifstream с записью в буфер – 12.713, а потом преобразованием с помощью stod. Это граница или можно еще лучше?
>>974642твой c_str вообще может указывать на незанятую память, так как приконкатенации возможен реаллок.
>>974720Бабка надвое скказала. Изначально cin/cout/cerr не буферизуются вообще, так как авторы стандарта предполагали возможность использовать iostream вместе с stdio.h.Но у поциента не cin, у него считывание из файла, и там такой инхронизации нет. Прочитай свой ответ до конца.
Хочу разобраться с передачей объекта по стеку вызов и в каких случаях нужно писать return std::move().http://cpp.sh/5ao2f - что за магия тут происходит? Получается делать return std::move() бесмысленно потому что это поведение по умолчанию?
>>974786Точнее даже круче, потому что объект просто создаётся в main.
Решил Branch Prediction протестировать. Сравнил производительность версии с богомерзкими if'ами и няшными указателями на функции. Получилось вот что:https://pastebin.com/7iawqUSxUnbranched-версия обычно быстрее на 5-10%, хотя в некоторых случаях Branched-версия вырывается вперёд. Кто может пояснить, почему так? В каких случаях лучше использовать какую версию?
>>974786То что у тебя происходит называется RVO и оно более эффективно так как полностью исключается вызов move-конструктора. Стандарт напрямую разрешает компилятору такие оптимизации, даже если move-конструктор имеет сайдэффекты (и такая оптимизация поломает твою программу). В стандарте это упоминается как copy elision (более широкий случай который кроме move-конструктора покрывает еще и copy-конструктор). Если ты нормальный парень и твои move-конструкторы не имеют сайдэффектов, то писать return std::move() нет смысла - просто возвращаешь значение и компилятор или оптимизирует с помощью RVO или вызовет move-конструктор. Использование return std::move() может принудительно вызвать конструктор (если его вызов необходим ради сайдэффектов), но тут наверное от компилятора зависит. Я не думаю что есть что-то что запрещает хитрожопому компилятору просто проигнорировать вызов std::move() в таком случае, хотя хуй знает на самом деле.
>>974786Заебали с платиновыми вопросами. На SO объяснили всё уже 100 раз.
>>974840Посмотрел ассемблерный листинг. Branched-версия генерирует cmp+jbe, Unbranched-версия - cmova и call по QWORD PTR. Кто может пояснить по хардкору за подобное? Говорят, cmov* многократно быстрее, но есть ли где-нибудь полное разжёвывание по полочкам?
>>974843Я пока посмотрел на SO, там говорят что надо везде писать return value. Сделал так у себя и посмотрел что с конструкторами происходит. Обнаружилось что если сделать такreturn create_object().modify();то вызывается конструктор копирования, а если такObject result = create_object();result.modify();return result;то вызывается только стандартный конструктор и только один раз (внутри create_object). Вторая конструкция правильная.modify() возвращает *this если не понятно
>>974668>>974657Аноны, помогите. Если просто добавить в класс еще одно поле, то энивей его надо инициализировать в конструкторе, т.к. what() имеет модификатор const и модифицировать строку я уже не могу. Офк можно просто создать свой метод, а не юзать what(), но можно ли как-то канонически написать свое исключение?
>>974886Например добавь const поле в класс, а в what() сделай не const ссылку на него (что-то типа std::string& s = const_cast<std::string&>(this->message);) и через эту ссылку измени.
Ананасы, где можно почитать, как работает RTTI?
И так, TODOшки подходят к нулю и 175 тестов стабильно проходятся параллельно в нескольких тредах, можно выкатывать версию 0.0.1. https://github.com/theanonym/libyoba-perlВсего ушло около 3 недель и 2500 строк, осталось ещё добавить интеграцию с некоторыми модулями вроде AnyEvent, добавить поддержку событий для лучшей связи с интерпретатором
>>974969Заебись название
>>974957А что там читать-то?Если какая-то абстракция предусматривает явное указание начала и конца работы с ней (выделение/освобождение памяти, открытие/закрытие файла или сокета, монопольный захват/освобождение устройства), то вызов начала работы с ней должен быть в конструкторе, а конца - в деструкторе класса-обёртки.
>>974860Наверное здеся http://stackoverflow.com/questions/14131096/why-is-a-conditional-move-not-vulnerable-for-branch-prediction-failure
>>974975Просили про RTTI, зачем ты рассказываешь про RAII?
>>974957Оно зависит от ABI.В Itanium C++ ABI RTTI устроен довольно просто, информация об иерархии классов "закодирована" в std::type_info (в наследниках от него). https://itanium-cxx-abi.github.io/cxx-abi/abi.htmlВ MSABI посложнее, но тоже давно отревершено, нагуглишь легко.
>>975019А, чёрт. Зачем столько одинаковых аббревиатур? Я так годное место работы чуть не просрал, перепутав STL с SFML.
>>974957>>975023Ссылка поточнее https://itanium-cxx-abi.github.io/cxx-abi/abi.html#rtti
>>974969Что-то у тебя с документацией скудновато, как я посмотрю. Хотя бы Doxygen для приличия влипил (@briedf @param @return и вся хуйня), потом это сложнее будет документировать, ИМХО.
>>974192Как писать на С++ по windows( формы и т.д.)? что читать(какие средства разработки)?
>>975123qt
>>970816 (OP)Анон, читаю книгу Страуструпа - Программирование. Принципы и практика использования C++, и чет как-то мне не понятно, это перевод наш косячный, или такая книга и есть. Стандартную библиотеку предлагают в книге скачать, д.к. она не работает, что бы я не делал. Функция sort() вообще как-то по странному вызывается. В задачах текст написан так, что я не понимаю, что от меня хотят. И это только начало. Кто читал? Скажите, дальше в таком же духе будет? Может есть книги покачественней? Понимаю, что книга от создателя языка, но уже многовато косяков.
>>975253Читай это.http://www.learncpp.com/Автор все топики обновляет, объясняет доходчиво.Правда на ангельском.Мне, как новичку в крестах, заходит на заебись.Потом уже сам буду какие-то книги искать.
>>975093У меня есть настроенный доксиген, генерирует index.html и прочие страницы, но как его на github.io залить кто-нибудь знает?
>>975269Создать сает на Github pages и залить туды.
>>975253>Стандартную библиотеку предлагают в книге скачать, д.к. она не работаетШта?
>>975253Она платная если что.Но даже так там столько говна, что я бы подумал
>>975253Тоже учу кресты по нему. Косяков многовато, но я мазохист и мне нравится разбираться, почему не работает то или иное. По поводу sort() это косяк нового издания, он есть и в оригинале. Чтобы работало, нужно, во-первых, прописать #include <algorithm>, во-вторых, писать так: sort(v.begin(), v.end()), где v - вектор. По поводу говно "библиотеки", которую Страуструп пихает в начале std_lib_facilities.h, скажу что у меня она тоже не работает. Если тебе нужны векторы, то пиши #include <vector>, правда не забудь включить поддержку стандарта c++11 в своем компиляторе.
>>975321Кто платная? Книга? Ссылка на перевод есть в шапке.
Я долбоёб. Как мне две функции под один шаблон запихать?
>>975327Гхм, нахуя? Каков будет результат запихивания в один шаблон, по-твоему?
>>975253Вангую что ты скачал старую библиотеку, а тебе нудна новая .тоже с ней ебся, пока не погуглил на стаковерфлов. Вобщем, гугл в помощ
>>975322Да, я тоже смог разобраться с сортировкой. С одной стороны, нахуй такие издания книг. С другой стороны, пока найдешь, почему это говно не работает, узнаешь овердохуя.
Товарищи, срочно нужна помощь, через час еду в универчик, а лабу переделать так и не успел.Как проверить на равенство 2 действительных чилсаВот кусок кода который нужно исправитьwhile( a>=x1 ) ;printf("--------------------\n" );printf("\n" ); printf("\n" );} ;Скину 50р на тел. ответившему, больше нет на карте
>>975398a == bКак оплатить удобнее?
>>975398if (epsilon > abs(a - b)) { ... }где epsilon это необходимая точность, типа 0.00001
>>975093Так, получилось залить доксиген https://theanonym.github.io/libyoba-perl/annotated.htmlМожете посмеяться над моим английским, серьёзные ошибки неплохо бы исправить пока
>>975123wxWidgets
Не могу понять -int f(int n, int a, int b) { if (n > b) return 0; if (a <= n && n <= b) return 1; return f(2 n + 1, a, b) + f(2 n + 2, a, b);}1. Какие рекурсивные вызовы будут сделаны при запуске f(0, 7, 13)?2.Что вернет вызов f(0, 1000000000, 123456789)?3.Чему равно возвращаемое значение f(0, a, b) в общем случае?
struct MyStruct{MyStruct(){}~MyStruct(){}int v;};MyStruct a[10000000];На ассемблерном уровне - будет ли у нас вызван конструктор миллион раз, даже если он пустой, или нет?
>>975635Нет, у тебя инициализация v не прописана, конструктор пустой.
>>9756251) 1, 7, 13 ; 2, 7, 13; 3, 7, 13 .... 14, 7, 13Вроде.
>>975635Зависит от опций компиляции. C -O2/3 скорее всего не будет.
>>975649Понятно, что конструктор пустой и ничего не будет инициализировано. Но будут ли вызовы конструктора вообще?
>>975677Ты правда настолько туп, что не знаешь, как сгенерировать ассемблерный листинг?
Объясните реализацию графов на с++.
>>975718Нахуй иди, вместе с этой гнидой - >>975677
http://cpp.sh/9ks32блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь >>9756251. Прочти свой код и выполни его без помощи компутера.2. Не знаю.3. Не знаю.4. Иди нахуй со своей домашкой.>>975665Бабушка надвое сказала. Компилятор волен делать всё, что угодно, и конструкторы он может вызывать, а может и не вызывать, если видимое поведение не меняется (сторонние эффекты в конструкторе к видимому поведению не относятся). То есть, если у тебя в конструкторе только вызов какой-то функции, которая на состояние объектов (cin/cout и т.д. не в счёт) не влияет - компилятор может вобще не вызывать конструктор.>>975718struct node { T payload; vector<node*> edges;} - если направленный. Если ненаправленный - чуть сложнее.
>>975731>http://cpp.sh/9ks32>bool c[2];Хаха.Ну вы и убогие все же.
>>975718>http://cpp.sh/9ks32Чёйта? Там инта в инициализации не хватает, если про это.>>975737Это ты в треде с базами срёшь?
>>975739Я вездесущий и вездесрущий.Проблемы?
>>975745Да не, нормально всё.
>>975753Вот и умничка.шлепнул одобрительно по заднице
>>975739>Там инта в инициализации не хватает, если про это.Вот именно. На кой ляд вообще нужны эти списки, в которых можно указывать не все члены? Пердолинг такого же рода, как и дефолтные аргументы - специально нужно ранжировать аргументы по вероятности их использования.>>975737Есть альтернатива? Инбифо bitset.
>>975765Он просто взял рандомную строку из твоей программы и подписал> Хаха.> Ну вы и убогие все же.Нахуй на такое вестись?
>>975765>bitset.Если место важно кеш там и тд - то да.Но это всё смешно в любом случае :3
>>975767>Нахуй на такое вестись? Потому что дебилы вроде тебя, напримерТак-то.
>>975765То есть - можно? У меня не скомпилилось.
>>975773>У меня не скомпилилось. Лучший тред.
>>975767Про bitset - это тоже шутка, знаешь ли. В высокоуровневом языке использовать bitset - это охуевшим быть.Так что ты тоже повёлся.>>975773В этот раз без оскорблений, в следующий раз будьте внимательнее.http://cpp.sh/2lcb
>>975797>с++>высокоуровневом языке
>>975797Понятно. Можешь сходить пожаловаться к C-богам. Мы тут только лабы первокурам решаем.
У меня есть дерево, нужно реализовать поиск по имени вершин. Но так, чтобы потом по результатам поиска была возможность еще раз провести поиск. Не могу придумать, как так передать вершину в метод рекурсивного поиска, чтобы дерево-результат не было зачищено.
>>975807>рекурсивногоЯсно.
>>975810Это моя идея. Да и на итог она мало влияет.
>>975807Братишка, спроси у своих сокурсников. Никому не интересно ваши лабы решать. Кроме того, тут кроме меня и пары троллей, никого нет.
>>975807Ни хрена не понял из твоего описания.
>>975811>моя идеяСоболезную.
>>975812Я прошу только помощь с алгоритмом. >>975813Имеется дерево, у каждой вершины есть имя. Хочется провести поиск по этим вершинам и отобрать только те, которые имеют определенное название. То есть получить новое дерево-результат. Но, возможно, из дерева результата придется еще раз выбрать подходящие уже под другой шаблон вершины.
>>975817Так если результаты складываются в новое дерево, в чём проблема потом по нему искать?
>>975817Поиск в глубину ищи (DFS).
>>975819Есть у меня исходное дерево. Я закидываю его в дерево-ответ. В случае если ни одного запроса не пришло, выдано будет оно. Теперь я хочу искать по этому дереву. Но результаты будут складываться в него же. Причем хотелось бы удалить старые ссылки, но как разобрать, что результат нового поиска, а что старого?>>975820Это не принципиально, как по мне.
>>975820Так, я чет задумался, что это вроде и есть это, пошел погуглил. Это и есть тот обход которым я пользуюсь.
>>975823Зачем скидывать в это же дерево, если можно скидывать в другое?
>>975829И каждый раз создавать новое дерево? И как это реализовать то? У меня это все в классе выполняется, где дерево-ответ является свойством объекта. Хотя возможно если завести новое дерево-буфер, перед всем шоу его очистить, туда перекинуть ответы, а потом дереву-результату присвоить дерево-буфер, то все будет хорошо. Вот так видимо сделать можно.
>>975834> а потом дереву-результату присвоить дерево-буферreturn дерево-буфер; никак?
>>975848Что-то типа этого я и говорил. Хотя идея создавать дерево-буфер внутри функции поиска несколько облегчит код, спасибо.
>>975855псевдокод https://pastebin.com/W6FWERL4
Спокойно себе отлаживал по шагам программу и тут вылезает пикрелейтед, что это значит и с чем связано, подскажите пожалуйста...
>>975879Блядь, как вы все заебали сюда писать всякой хуйнёй.Лаба не конпилируется, двач, памаги!!1MSVS показал нипанятное акошко, двач, памаги!Идите нахуй.
>>975879Зашёл в бинарник - там страна ассемблера, "source not available". Обычно хватает прожать несколько раз shift-f11, если будет реагировать вообще.
>>975879ты в глаза долбишься или куда?тебе английским по чёрному написано, что сырцы на бинарник в дебаг метаинфе не залинкованы: открывай стек, смотри, где ты находишься (какая DLL или либа) и перекомпиливай её с PDB. либо же у тебя визуалка PDB не видит. откда такие дауны вылазят?
>>976055Да эти макаки в студии не могут найти эти ключи.А без студии хелло ворд не напишут.Тру стори.
Анон, поскажи добротный бесплатный профайлер под MSVC но без использования студии (проект CMake-ом собирается).Сейчас приходится под прыщами Valgrind-ом пользоватся, но проект требуют профилировать и в шинде (от чего я в тупике).
>>976101CodeXL жи.
>>976102>CodeXLХерасе.Завтра испробую. Спасибо.
>>976097Сейчас набежит местный школьник и начнёт боготворить MSVS и обвинять тебя в использовании vim.
>>976101хуя, а как ты valgrind'ом умудряешься профилировать?
>>976128callgrind, cachegrind
>>976115ещё один аутист: он говорит о том, что школьники не найдут нужный флаг в msvc, а ты vim впихиваешь зачем-то
>>976101в msvc 2017 встроена поддержка cmake. импортишь и профилируешь прямо из визуалки.второй вариант для эстетов -- попердолится и запустить сборку с cmake, но с визуальным компилятором (включив нужные флаги чтобы метаинфа была). и уже потом аттачиться к приложению и профилировать его визуалкой.
>>976115ты меня запомнил!
ананасы, есть проект на Qt Widgets. получится его задеплоить на андроид? специфичные либы, вроде бы, не использовал, только буст чуть-чуть.
>>975635>>975731Вообщем нашел ответ сам.Если твой класс/структура - POD, то конструктор вызван не будет, более того - он даже не будет сгенерирован. Если класс не является POD, в нём есть хотя бы один член с конструктором - то вместо пустого конструктора твоего класса, будет сгенерен конструктор, который вызывает конструкторы всех мемберов.>>975680Вон из треда, долбоеб, не хотел тебе отвечать, потому что ты даун, но всё же покормлю. Твои кукареки и "выебоны" про ассемблерный листинг - полная хуйня. Листинг никогда не ответит на вопрос о стандарте.Студент, тебе что, на паре препод показал как смотреть сгенеренный код и теперь выебываешься на бордах, да?
>>976175Да, только интерфейс пойдет по пизде, инфа 100%.
>>976215А от буста либо избавляться, либо ебаться с компиляцией.
>>976175мона, только он может уебанско выглядеть на маленьком экране
>>976216>либо ебаться с компиляцией.Это в плюсовом проекте норма, а если используются хидер-онли библиотеки можно вообще взять и завендорить их себе в код, и забыть вообще.
У меня есть необходимость в функции, которая будет обходить каждый элемент структуры, а потом выполнять с каждым элементом какое-то действие. Но это действие каждый раз разное. Как такое реализовать на плюсах? Мне нужно передавать функцию в функцию?
>>976246перегрузи std::get для каждой функции и хуярь std::apply
>>976252*для каждой структуры. Надо проснуться.
>>976246Нахуя, если ты можешь передать в функцию саму структуру?
>>976264Я видимо непонятно выразился. Для обхода массива используют обычный цикл с итератором, у меня же, этот обход реализовать заметно сложнее, поэтому хочется отдельную функцию. Но как сделать так, чтобы то действие, которое при обходе массива указывается в фигурных скобках цикла, тоже передавалось в функцию обхода.
Как запилить ветвление в функции?
>>976287Что?
>>976287jmp j(ne|e|nz|z|c|nc|...)b(ne|eq|cs|cc|...)
>>976213>Листинг никогда не ответит на вопрос о стандарте.Цитирую твой вопрос, кусок дебила:> На ассемблерном уровне - будет ли у нас вызван конструктор миллион разни слова про стандарт.Теперь иди на хуй.
а ведь ребята в Qt стараются, интересные вещи делают. Только рекламируют совсем хуево :(
>>976319Родили уже QML с кривыми компонентами. Особенно пиздатая фича вышла в 5.8 (которую в 5.8.1 поправили, вроде как) - кэкирование компонентов, грузишь такой правки - оп, а их нихуя и нету, оказывается.
>>970816 (OP)Пишу свой сервис для винды, он должен использовать .dll для работы с камерой. Пока это консольное приложение - все отлично работает, но если переделать на WinService, то будет немедленно выкидывать с Error:1053, при попытке запустить сервис. Если закоментировать методы из .dll, то сервис регистрируется нормально, но если добавить хоть что-то из нее - неудача. Может надо как-то специфично подключать .dll при написания сервиса или что? Почему все работает в консольном варианте?
>>970816 (OP)Сап, почему при использовании свитча выполнение красной скобки игнорируется? Без свитча все работает
>>976336Уже не актуально, проблема была в правах доступа.
>>976359>> cout>> getsТы уж что-то одно выбери для начала
>>976401Это настолько принципиально?
>>976412> Это настолько принципиально?нет, продолжай в том же духе. ты всё правильно делаешь
>>976319>>976323а ещё в 5.8 запилили oauth2 (https://doc.qt.io/qt-5/qtnetworkauth-index.html), только с ним можно делать только get запросы. для post надо выковыривать из инстанса bearer, вставлять его в заголовки ручками в network manager и только потом делать запрос
Пасаны, мне нужно для лабы рисовать один график, а при нажатии кнопки и движении мышки перемещать некоторый элемент на графике. Для этого я наследовал класс от QGraphicsView, рисую в методе update(), а в методах mousePressEvent() и mouseMoveEvent() отслеживаю мышку. Проблема в том, что если вызывать update внутри мойкласс::mouseMoveEvent, то двигается вся сцена, весь QGraphicsView. Если не вызывать, то все хорошо, только иначе картинка не меняется. Как это обойти? Кнопки, сигналы и слоты обрабатываются корректно, проблема только в mouseMoveEvent, как будто он там изменяет параметры виджета.
>>976652> Лабы идут на хуй
>>976412Ну ты для начала с языком программирования определись. Начал мешанину причем из стандартной библиотеки c и stl.Вообще эта хуйня у тебя не должна компилироваться, потому что объявление переменных в switch-case недопустимо (если только они не ограничиваются областью видимости внутри конкретного case), например. такое можно:switch (a) {case 1: {int x = 0;printf("%d", x);break;}case 2: ... ;}А вот так нельзя:switch (a) {case 1:int x = 0;printf("%d", x);break;case 2: ... ;}
>A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:>МощьБлядь, проиграл. Ладно если бы под этим словом понималась скорость, но она пунктом выше.
>>976269То ли ты хочешь сделать своб функцию обхода массива, то ли ты хочешь структуру. Охуительная история.Напиши минимальный код, по которому видно задачу и проблему.
>>976287Родина дала нам if else switch case .
>>976359Похоже на UB выше в коде.
>>976713> Очередной петоно-дебил не понимает, что с прямым доступом к памяти заведомо можно реализовать любую другую фичу из любого языка
>>976796Тьюринг-полные у нас даже НАМы и Brainfuck-и.Вместо мощи можно написать про метапрограммирование и SFINAE.
>>976796я про само слово. МОЩЬ. МОЩНЫЙ язык программирования.
>>976796Ну реализуй мне честный, не консервативный, GC. Интересно, как тебе тут "прямой доступ к памяти" поможет отличить указатели от данных.
>>976796Чтоб тебе было не скучно: GC должен быть компактифицирующий.
>>976769https://pastebin.com/0Z4siSd9Что нужно сделать, чтобы каждый раз не писать этот for, а только конкретное действие?
>>976819Нужно объявить Tree_node инстансом тайпкласса Traversable и реализовать для него какую-нибудь функцию из Traversable, например, foldrНу или сделай так https://pastebin.com/nvRYJf33 и используй foreach-loopдоопредели там begin/end для const Tree&И у тебя в Worker принимается зачем-то по значению
>>976823>функцию из Traversable, например, foldrБля, облажался. Ну ладно.
>>970816 (OP)Господа, помогите начинающемуКод#include <iostream>#include <cstring>/ run this program using the console pauser or add your own getch, system("pause") or input loop /int TestAr() { char chararray[50]; printf("%s", chararray); strcpy(chararray, "test test test"); printf("%s", chararray); TestAr();}int main(int argc, char argv) { TestAr(); return 0;}Среда Dev C++ Всё работает.Как выделяется память для массива chararray[50]? Раньше я думал, что она статически выделена в функции и уже есть в экзешнике, экзешник загружается в память и память под этот массив уже выделена в функции, ещё до её вызова. Но, поебавшись с указателями пришел к выводу, что всё не так просто. Что происходит при последующем рекурсивном вызове этой функции?Я раньше байтоебством не занимался.
>>976839https://godbolt.org/g/gHhu2O
>>976846push rbp //заталкивает в стек "это указатель на адрес базового сегмента текущего стекового кадра"mov rbp, rsp //копирует адрес базового сегмента текущего стекового кадра в "указатель на вершину текущего стекового кадра"sub rsp, 64 //вычитает из "указатель на вершину текущего стекового кадра" 64, т.е. указатель начинает указывать на адрес, расположенный на 64 адресных единицы ранее.lea rax, [rbp-64] //помещает в регистр rax адрес [rbp-64], как я понял равный rsp, потому что из rsp уже вычли, а в rbp находится значение rsp до вычитанияmov rsi, rax //перемещает полученный ранее адрес в регистр смещенияmov edi, OFFSET FLAT:.LC0 //хуйня какая-то не гуглитсяmov eax, 0 //затирает регистр еах нулемcall printfИз всего вышесказанного вытекает нижеследующее: память под массив выделяется из стека каждый раз при вызове функции? Именно поэтому через некоторое время работы программа завершается с сообщением segmentation fault - стек залетает на программный код. Я правильно всё понял?Если Я сейчас это сделаю, прост сразу интересуюсь. я сделаю динамический массив через *chararray=new char[50]; то будет расходоваться память из кучи и программа просто начнет жрать память?
>>976846>>976869Точно так же съедает 3 мегабайта и выпадает в segmentation fault.
Подскажите дурачку, как реализовать метод GetString в таком классе, что б можно было через cout нормально выводить сторокуhttps://pastebin.com/ej31QGGz
>>976875Скорее всего printf не находит терминирующего нуля.
>>976886Нужно не GetString реализовывать, а << перегружать для ostream и твоего класса.
>>976886https://www.tutorialspoint.com/cplusplus/input_output_operators_overloading.htm
>>976893>>976894спасибо,а других способов нет? просто мне нужно пока что как-то без этого реализовать//Создайте метод GetString(), который обеспечит доступ к хранящейся строке.//С помощью cout и метода GetString() распечатайте строку объекта str
>>976897cout << gno.GetString()
>>976899Ошибка C3867 "MyString::GetString": нестандартный синтаксис; используйте "&", чтобы создать указатель на член я так пробовал вот что вышло, что это значит хз
>>976901Покажи весь код.
>>976892>>976875>>976869>>976846>>976839Всё работает, выпадает потому что стек заканчивается. Когда объявляю массив через new, то завершается через 43000 рекурсивных вызовов независимо от размера массива, когда статическим массивом, то чем больше массив - тем меньше итераций, очевидно быстрее жрется стек. Исправьте, пожалуйста, если я не прав.В микроконтроллерах использование памяти: программный код, стек и куча такое же или отличается?
>>976823Что такое Traversable?>>976819Оооотлично.void Tree_node::apply(void( ЗВЕЗДА f)(&Tree_node)){ for(auto &node: Down){ f(Down); }}.........huyacknut(&Tree_node node){ node.payload=0xFFF;}.........int main() { Tree_node ldkjf;...... ldkjf.apply(&huyacknut);}
>>976913> Что такое Traversable?http://hackage.haskell.org/package/base/docs/Data-Traversable.html#t:Traversable>void Tree_node::applyДля этого есть std::for_each. C++ не Java, тут поощряются freestanding-, а не member-функции
>>976839>int TestAr() {>\tchar chararray[50];>\tprintf("%s", chararray);Использование неинициализированной памяти, undefined behaviour.Компилятор вообще не обязан выделять место под chararray, так как заведомо известно, что в нём будет, и вместо этого может подставлять адрес строки из экзешника в каждый вызов printf.>Раньше я думал, что она статически выделена в функции и уже есть в экзешникеВыделяется на стеке на каждый вызов. Если напишешь static - будет выделяться на стеке один раз, перед вызовом main.>Что происходит при последующем рекурсивном вызове этой функции?Заканчивается место на стеке и хуяк.>>976910>когда статическим массивом, то чем больше массив - тем меньше итераций, очевидно быстрее жрется стек.Ты путаешь static с локальной переменной (выделяется на стеке)
>>976920>Ты путаешь static Я понял про что ты, но до этого еще не дошел. Я не правильно употребил термин "статическим" - здесь это значит только то, что он выделен не из динамической памяти, а объявлен заранее.>Использование неинициализированной памяти, undefined behaviour.Это было сделано, чтобы посмотреть, а не один ли массив будет использоваться для всех вызовов. В оконечном тесте уже убрал строку.>Выделяется на стеке на каждый вызов. Если напишешь static - будет выделяться на стеке один раз, перед вызовом main.И тогда все вызовы функции будут фактически оперировать с одним и тем же массивом, постоянно висящим в памяти, но видимым только из этой функции - я правильно понял?
>>976925>Это было сделано, чтобы посмотреть, а не один ли массив будет использоваться для всех вызовов. Как проверить, выделяет ли компилятор память или нет:- в int main выводишь адрес любой глобальной переменной ( %p в printf, & перед соотв. аргументом)- делаешь фиксированное число вызовов (статично хранишь число, чтобы контроллировать глубину рекурсии)- после достижения предельной глубины выводишь адрес той же глобальной переменной.Потом делаешь такой же код, но в нём делаешь что-то посложнее, чем printf, чтобы компилятор подумал, что память выделять таки надо. Если разница между двумя адресами увеличилась - значит, компилятор экономит память в первом случае.>И тогда все вызовы функции будут фактически оперировать с одним и тем же массивом, постоянно висящим в памяти, но видимым только из этой функции - я правильно понял?Да.
>>976902да я уже разобрался...идиотская была ошибка - забыл () перед вызовом функции
Плюсач, помоги разобраться с наследованием. Я запилил себе класс, полностью его описал, все хорошо. Потом я создал еще один класс и наследовал его от первого public, чтобы несколько функций переопределить. Проблема в том, что я не могу даже конструктор вызвать, так как все попытки что-то изменить помечаются ошибкой, что это член первого класса и он приватный. Что пошло не так?
http://cpp.sh/3u7b6Ну и как мне написать инициализацию массива-члена? Голову сломал.>>976953Если тебе нужен конструктор из базового класса, он должен быть либо протектед, либо публик. Если это не так, исправь это.
Я вот чет не могу смекнуть,когда пишут:Создайте глобальную функцию Хуй Hui(Хуй, Хуй);которая принимает два объекта класса Хуйпо значению ивозвращает объект класса Хуй,как её в итоге в мейне вызывать?так ?Хуй h;h.Hui(...); // но какой тгда тут смысл, надо было тогда через this писатьили так h = Hui(...); // но тогда ошибкаПоясните кому не лень< плиз.
>>976979Проще взять std::array
С помощью какого алгоритма можно это реализовать?
segmentation faultgdb говорит следующееhttps://clbin.com/N3rzrw.pngРаньше все работало, но я в этом месте вроде как map, заменил на vector. Вот весь кодUser.cpp https://pastebin.com/nyuwaQayTree.h https://pastebin.com/qR2bpW8sServer.cpp https://pastebin.com/Cc2X6QUh в нем, в 37 строке и происходит что-то непонятноеОбъявление структуры Tree_node происходит в ашнике, описание методов класса в файле класса, остальных функций в Server.cpp, там же лежит мейн.
>>976997Канеш проще, только я хочу сделать наиболее простым путём. Какого ляда C++ считает, что список инициализаций - это список присваиваний? Бесит.
>>977012Прошу прощения. В проблемной строке не Top_node->Down[Top_node -> Down.size()] = &Construction_tree(Simbol_, file);А Top_node->Down[Top_node -> Down.size()] = Construction_tree(Simbol_, file);Нет амперсанда. Это я не ту версию показал, выхлоп ждб такой https://clbin.com/p0fXIU.png
>>977011Жадным можно.
>>977021>>977012Нашел ошибку, оказывается растягивать вектор можно только так array1.insert(array1.end(), 4);
>>977125resize еще
>>977125>растягивать вектор можно толькоНе только.
Ананасы, нужна какая-нибудь маленькая библиотечка, могущая вычистять интегралы. Не подскажите такую?
Короче, тут намедни прочитал книг 6 по паттернам, а мен все мало, блять. Есть какие-нибудь годные еще, кроме GoF, POSA и Software Architecture in Practise?
синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "newline" эта херня появилась после того, как я сделал виртуальным 1 из методов класса, что это вообще?
>>977423хотя это между собой не связано..
>>977404>прочитал книг 6 по паттернам> GoFКак ты не заснул? Я засыпаю на второй странице чтения этого.
>>977404> книг 6 по паттернамЕбать дебил.
Сап!Я программист уже 4 года профессионально.Программирую на руби. На досуге увлекаюсь Erlang, Clojure, C/C++. На руби уже надело, в основном рутина, ничего интересного. Хочется думать и нести радость людям написав какой нибудь там автопилот например. Подскажи, требуются ли в рашке программисты на C/C++ или это уже утопия и все дрочат на go/ruby/php ?
А какой/какие алгоритмы применить здесь?
>>977176>>977332Я имею в виду, что нельзя вектор длины 7 Vector1[7]
>>977384Аналитически или численно? Фгугл.
>>977011Точнее: перебором с O(n). Если дашь ссылку на судью, я тебе сбацаю.>>977460Симулируй работу парикмахера и прихода/ухода всех этих идиотов. Натурально: берёшь и релизовываешь конечный автомат (состояние содержит текущее время, очередь на это время с фасонами) по условию задачи, больше ничего не надо.
>>977011Ещё точнее: можно решить квадратное уравнение двоичным поиском, будет O(log n).
Товарищи, как MinGW заставить понимать юникод в имени файла, а именно:ifstream file(_name, ios::binary);компилятор компиляет только когда _name - char, а мне нужно, чтобы WCHAR (wchar_t, как я понял это одно и тоже) неужели у красноглазых нет юникода в путях?Нашел на стековерфлов как там кто-то что-то скачал и собрал и вообще руками всё конвертирует в чар и доволен. Но я не верю, что там нет готового.
>>977530При чём тут красноглазые, если ты на сперме.
>>977532MinGW разве начало свое берет не на линуксах?
>>977537Это, как следует из названия, минимальный порт GNU-тулз на Windows. Оно не стремится имитировать POSIX-окружения. Для последнего есть Cygwin. И WSL.
>>977530Короче, если ты так хочешь utf8 везде, посмотри в сторону nowide. http://cppcms.com/files/nowide/html/index.htmlОно есть в отдельной от boost форме.
Хочу написать свой REST API на С++. Смотрю на https://github.com/stefanocasazza/ULibи нихуя не понимаю.Анон, покажи как писать Web сервисы на крестах в продашоне
>>977568Хипсторы в соседнем треде.
>>977011Поступление в ШАД?
>>977569В смысле? Зашквар писать веб на крестах?
>>977571Хочу нагнуть golang-ёбов для этого мне нужна сила плюс и мудрость двоща
Почему небольшой проектик (несколько .cpp и .hpp) в VS конпелируется и запускается, а g++ выдает по main.cpp: undefined reference to %функция_нейм% и отказывается конпелировать ?
>>977578too fat
Можно на плюсах и Qt собрать хелловорд весом 11кб или меньше?
Error C2400 inline assembler syntax error in 'opcode'; found 'newline' С чем связана это сраная ошибка? Нигде нормальной инфы нет.
>>977629Это C++, а не inline assembler тред.
>>977662>inline assemblerНу а я и писал на c++, и вдруг мне в VS высветилась такая ошибка
>>977629Компилятор какой?
>>977505Напиши свою почту gmail.
>>977510А вот здесь поподробнее.
>>977695VS 2015
>>977629>syntax error
>>977712Хуйню он сморозил, вот тебе подробности.
>>977011Я придумал за O(m logn) решение, где m - количество выговоров. Просто эмуляция начальника на дереве поиска. Можно парой эвристик ускорить, но в общем случае без ограничений на ответ будет медленно работать.ещё-один-анон
Почему нельзя определить массив так так:Animal zoo[]={Animal(),Cat(),Dog()}А надо так:Animal* zoo[]={new Animal(),new Cat(),new Dog()}
>>977777Это разные объекты, они занимают разное количество памяти.У тебя, например, базовый объект 8 байт весит, а наследникам ещё int добавили, стало 12.Выделение памяти под массивы происходит "под линейку" тебе надо 100 объектов Animal, она тебе и выделила эти 800 байт. Понятно, что запихнуть в i слот Dog или Cat не получится.У указателей же постоянный размер 4-8 байт в зависимости от компилятора. Во втором случае ты выделяешь память на 3 указателя, те уже в свою очередь ссылаются на реальную память, а там уже объекты могут сколько хочешь весить.
>>977777Потому что это не Java
https://pastebin.com/LuFW7QDeВот две функции. Считывание дерева из файла и его удаление. Почему-то команда delete Top_node, где Top_node это указатель созданный через new в другой функции, на вершину не хочет работать и падает с ошибкой памяти. Не знаю, в чем ошибка.
>>977826valgrind
>>977826Без рабочего проекта тебе никто не поможет.
>>977836В смысле хотите видеть весь код?
>>977837Да, нужна какая-то программа, на которой это всё падает. И файлы с примерами, если есть.Тут магов нет, никто с первого взгляда рандомный код не умеет по полочкам расставлять.
>>977837И там должен быть файл с лицензией, точнее, с уведомлением, что ты передаёшь код в публичное достояние.
Вкатывается нюфаг, изучающий ооп.Есть класс, допустим, classType. В нем, кроме всего прочего, есть конструктор копирования. В maine есть объекты classType a,b. Где-то задаются параметры объекта a, после чего я пишу b=a. Почему в этом случае конструктор копирования не вызывается, а при classType c=a вызывается?
>>977844http://stackoverflow.com/questions/5368258/the-copy-constructor-and-assignment-operator
>>977844>Вкатывается нюфаг, изучающий ооп.Другого места не нашёл, куда вкатиться? Почему этот тред?
Весь остальной код вроде как работает, проблема именно в функции очитстки.https://pastebin.com/3jXs6fKc вот мейн, проблемная строчка там (Server.cpp)https://pastebin.com/rW8Tswsi вот ашник, там и объявляется структура Tree_node (Tree.h)чтобы все работало нужен еще этот файл, который стоить назвать User.cpp https://pastebin.com/9fMg1eKPhttps://pastebin.com/6Ttddnb4 вот проблемный файл. Назвать нужно Base.txtВся беда в процедуре удаления дерева, которое создавалось конструкцией нью. В этой функции есть отладочный вывод, который показывает, что вроде как ни одного делита не выполняется, но функция завершается несколько раз, кроме самого последнего. Как такое возмжно я не понимаю
>>977838>>977839>>977861Про лицензию забыл. Но вы можете пользоваться так, чтобы под GNU подходило, обязательно 3 версии.
>>977861int main(){Tree_node Top;Cleaner(&Top)}void Cleaner (Tree_node * Top_node){delete Top_node;}
>>977541>Оно не стремится имитировать POSIX-окружения. Для последнего есть Cygwin. И WSL.Ты ебанутый, блять? При чем тут имитация и прочая поебень, речь идет об обычном юникоде в имени файла.>>977542Большое спасибо, то, что доктор прописал.
>>977879>>977861Бля, он прав. Ты пытаешься статическую память снести.
>>977879О, вот и ответ. Спасибо тебе, анон, пускай ты и пидор.Кстати вопрос. Я вот получил указатель на память. Почему я не могу удалить память по указателю?
>>977891> статическую память
>>977893Ну что не так?
Надо в шапку добавить что все пидоры с проблемами в new/delete пиздовали в ньюфаг-тред.
>>977893А ну да. Мне из функции возвращается указатель, а я из него достаю объект и помещаю в статическую память. Все, понял, осознал.>>977894Это, кстати, не я.>>977896Но сегодня вы опоздали.
>>977899>в статическую памятьВ хуическую.
>>977905А как она называется?
>>977921Хуическая.
>>977921Можно, наверное, называть автоматической. Не совсем корректно, но сойдёт.
>>970816 (OP)Вкину годный линк для всех. Обсоски ничего не могу ответить про продакшн программирование на крсетахhttps://github.com/fffaraz/awesome-cppБляди бля
>>977771Сможешь реализовать?
>>977966Смогу, но не буду.
>>977979Жаль.
Немного оффтоп, но думаю тут есть люди, которые могут ответить. Вопрос в контексте windows, хотя за информацию по unix/линупс тоже буду благодарен.Вот допустим, я написал .dll, функции из которого локальные и статические переменные точно свои для каждого процесса я хочу использовать в нескольких работающих одновременно процессах (допустим, их очень много). В таком случае, если несколько процессов, использующих эту .dll работают одновременно, то для каждого процесса в его виртуальную память (далее ВП) загружается своя копия .dll, и при создании каждого процесса из исполняемого файла загрузчик вписывает адреса вызова функций в секцию с таблицей импорта? Или загрузчик достаточно умён, чтобы использовать единожды загруженную .dll между несколькими процессами? Или такое верно только для системных .dll, а для пользовательских - только MMF в отдельном гигабайте ВП?
>>978039Главный вопрос - зачем вам понадобилось это знание?
>>978053Пишу курсовую. Один из второстепенных аспектов - цикл жизни процесса.
>>977708[email protected]
>>977712Там хитро. Решение основывается на поиске минимального значения, при котором программистов можно накачать. Накачку следует рассматривать отдельно - как косвенную и как прямую. Для каждого числа выговоров есть число программистов, которое будет накачано только косвенно. Необходимое число прямых накачек ненакачанных программистов вычисляется, и если оно больше числа пассивных накачек - перебор продолжается.Перебор можно выполнять не линейно, а двоичным поиском, а если всё свести в одну формулу, можно упростить вычисление (но это непринципиально). Можно было бы решить уравнение, но нужно решать его либо в даблах (и тогда хрен знает, правильно или нет), либо округление вверх как-то учитывать. Так что двоичный перебор проще.
>>978058Одна и та же, а потом механизм copy-on-write.
>>978065Всё бы ничего, но идея, которая стоит за решением, не понятна.Например,>и если оно больше числа пассивных накачек - перебор продолжаетсяоткуда следует это?И вот если я оценю минимальное и максимальное количество выговоров какой-то эвристикой, то как делать перебор между этими значениями? Выходит уравнение с 200к неизвестными, не совсем ложится под понятие перебора.
>>978083>откуда следует это?Могу доказать теорему о том, что если выполняется упомянутое условие (число необходимых прямых меньше= числа пассивных), то оно выполняется для всех больших чисел.>И вот если я оценю минимальное и максимальное количество выговоров какой-то эвристикойМинимальное - это 1. Максимальное - это тупо 200000, для двоичного поиска это не важно, число итераций - 18 (262144=2^18).>как делать перебор между этими значениями?Двоичный поиск, блет. Значения отсортированы по критерию выполнимости искомого условия - для всех значений начиная с некоторого оно выполняется.Пиши на почту, если хочешь.
>>977570Очень врядли.https://yandexdataschool.ru/admissionПрошло сильно больше 5 часов.
https://contest.yandex.ru/contest/4317/enter/ - и вообще интерфейс другой.
>>978085Не понял. Я, кстати, другой анон. У меня жопа не горит задачу решить, просто хочу понять.>Могу доказать теорему о том, что если выполняется упомянутое условие (число необходимых прямых меньше= числа пассивных), то оно выполняется для всех больших чисел.Я воспринял эту строку как "Я могу доказать теорему, что если это условие выполняется, то оно выполняется">Минимальное - это 1. Максимальное - это тупо 200000, для двоичного поиска это не важно, число итераций - 18 (262144=2^18).Ок. Это я понял.>Двоичный поиск, блет. Значения отсортированы по критерию выполнимости искомого условия - для всех значений начиная с некоторого оно выполняется.Вот это я не понял. Пусть я отсортирую всех программистов по убыванию производительности. Это ведь имелось в виду? Если нет, то прошу пояснить. И у меня на текущей итерации n выговоров. Что дальше происходит?
Пасаны, как по кашруту помечать функции как deprecated и obsolete? Я тут решил угореть по качественному коду, комментирую функции в хэдерах, пишу по гайдлайнам
>>978096>Я воспринял эту строку как "Я могу доказать теорему, что если это условие выполняется, то оно выполняется"Если условие выполняется для X, то оно выполняется для любого числа больше X.> И у меня на текущей итерации n выговоров. Что дальше происходит?n выговоров - это пассивные выговоры. Что ты делаешь дальше:- число ненакачанных = число - n*y- у ненакачанных одинаковый уровень накачки. Тебе нужно накачать оставшихся прямыми выговорами с эффектом y-x- как накачать оставшихся только прямыми выговорами (т.е. без косвенной части, мы её исключили) - поймёшь сам, если нарисуешь лестницу.- если ты не можешь накачать оставшихся с помощью n выговоров, поиск продолжается.Поиск начинаешь со 100000. Если накачка взоможна, перемещаешься на половину диапазона влево (т.е. можно лучше). Если невозможна - на половину диапазона вправо. Это двоичный поиск.>>978093Чот я ипал.>/temp/compiling/source.c:1:20: fatal error: iostream: No such file or directory>#include <iostream>> ^>compilation terminated.Что это за C++, если в нём iostream нету?
>>978085Минимальное - это 1. Максимальное - это тупо 200000, для двоичного поиска это не важно, число итераций - 18 (262144=2^18).Хотя, эту часть я тоже не понял. Я думал, что перебор по ответу, но это перебор по программистам, по которым кричали/не кричали, видимо.>>978105Ну вот тут основной вопрос, как перебирать. Потому что сам по себе перебор в лоб - это в худшем случае количество итераций в районе 10^9. То есть разгонять тех, кто больше всех нуждается по очереди. Например, берём программиста, которому нужно со скоростью а (максимальная среди всех) работать, накачиваем его на a - (x-y), возвращаем обратно в очередь с приоритетом, берём следующего с максимумом. И пока следующий прогер не будет пассивными разгонами уходить в минус.>Что это за C++, если в нём iostream нету?Видимо, это C.
>>976812Братан, Аппель (или ещё кокой-то петушок) больше 30 лет назад придумал как это делоть. Зогугли.>>976815А это к проблемам самого языка и невозможности реализации чего-то как относится? Сделой если не лох?
>>978111> Я думал, что перебор по ответу, Ты можешь накачать всех программистов за 200000 выговоров: y>1. Можно точнее, но не нужно.>Ну вот тут основной вопрос, как перебирать.Двоичный, мать его в сраку, поиск, по отсортированному, якорь им в ебало, значениям числа выговоров. Я уже всё разжевал, осталось только головой подумать.
>>978124Ё, там не 200к выговоров. На каждого чувака может быть больше одного. Т.к. нам нужно накачивать на числа до 10^9, то и число выговоров может быть близко к этому числу. Ну запилить на 100кк выговоров пример можно не напрягаясь. А значит, что по способу выше я не смогу позволить себе даже одну итерацию сделать.Всё таки это олимпиадная задача, а не энтерпрайз параша, которая нас всех ждёт. Можно было бы хотя бы попытаться объяснить.
>>978127>На каждого чувака может быть больше одного. Количество чуваков < 200000, y>=1. То, что x и y могут быть большими - не важно ВООБЩЕ.Даже если бы оно было бы 10^9 - это 30 итераций вместо 18, в каждой из которых я делаю фиксированное число вычислений.>Всё таки это олимпиадная задача, а не энтерпрайз параша, которая нас всех ждёт. Можно было бы хотя бы попытаться объяснить.Залупанцу надо задачки преподу сдать, и он этот тред читает. Я и так же объяснил, как мог, чтобы и вы тоже подумали.Ещё раз. Делишь влияние выговоров на косвенное влияние и на прямое. В каждом наборе выговоров есть некоторое число заведомо накачанных дебилов - они находятся в начале.- Ты перебираешь число косвенных выговоров (т.е. выговаривают всех, кроме тех, кто в начале и сам будет въёбывать) - n.- число тех, кого не накачали n косвенных выговоров = число дебилов - n*y (элементарно)- у ненакачанных одинаковый уровень косвенной накачки, поэтому ты вычитаешь его и ищешь число необходимых прямых накачек эффектом y-x- как накачать оставшихся только прямыми выговорами (т.е. без косвенной части, мы её исключили) - поймёшь сам, если нарисуешь лестницу от 1 до числа ненакачанных- двоичный поиск продолжается с учётом того, можешь накачать оставшихся с помощью n выговоров (т.е. прямых накачек нужно больше, чем косвенных) или нет.Разумеется, я могу разжевать ещё сильнее, но это уже неинтересно.
>>978141> эффектом y-xНаоборот: x-y.
Вопрос.Что есть за тип T[][] ?Это T или T* ?
>>978159Или вообще T?
>>977011Мне кажется, тут нужон симплекс метод.
>>978159>Что есть за тип T[][] ?Ничего не есть.
>>978161А вообще, это вроде примитивный матан с системой линейных уравнений.
>>978165В общем то это и есть симплекс метод. Главное правильно определиться с тем что есть что.
>>978164What is it?Nothing is...
>>978159>Что есть за тип T[][] ?Это ни хрена не тип. T[][6] - это тип. T[][6][5] - это тип. T[] - это тип. *T[] - это тип. А T[][] - это не тип.
Dear C++ programers..What language are you use for comments in your programs?
>>978172А что такое T[][] ?Такое объявление недопутимо разве?
>>978173do you use в крайнем случае are you using
>>978175Yes. You are right.And you forgot to check the missed article "a" error before the "language" word. At so, what a language.
Hey....Where are you all?
>>978176нет, what language. артикль "a" лишний. at so - это ващпе пушка. не стоит переводить комбинации частиц и местоимений с русского на английский дословно. с высокой вероятностью результат будет бессмысленный.
>>978179В некоторых фильмах слышал, говорили At so... как аналог well, типа "И так.." в контексте продолжения мысли.Может конечно и померещелось.
>>978174Дык а я о чём.
>>978173 >>978176I am using fluent english to comment my code.
>>978182Понятно.У меня ебанутая задача из плюсового приложения вызывать сишные функции одной билиотеки, причем сишная библиотека дохуя сложная в плане своих типов... (Вложенные структуры, указатели на массивы и прочее.)Заебался я уже этот врапер делать, но свою библиотеку писать - сроки проебать.
>>978183не самое уместное употребление fluent. при использовании fluent + %language% обычно речь идёт о том, что кто то говорит или пишет на чистом %имяязыка%, но не использует чистый %имяязыка% для %цель%.
>>978183We don't.I work in a Russian company..Early we used broken English but now we decided to use pure Russian.
>>978185Это прилогательное означает "свободно владеющий", "свбодный", и обычно сочетается только с понятием уровня владения чего либо в таком контексте.Даже по русски криво говорить "Я использую беглый английский в своих комментах".
>>978186>Earlyat first/initially/originally
>>978188Но я хотел сказать - ранее..Не "Сначала", не "В начале", не "Изначально", а именно ранее..
>>978187ну несмотря на некорректность его мысль бы поняли.>>978189back then/[long|some] time ago
>>978188Но согласен.Это причастие "Рано", а ранее - earlier.
>>978187Таки да.
>>978191>причастиенаречие.
>>978188Какая часть "broken english" тебе непонятна? :3>>978190>ну несмотря на некорректность его мысль бы поняли.Ну уж нет. Корректность - это хорошо, даже если всем похуй.
Нужно больше английской практики.Где бы только ее взять.И так, уже нашел человек пять англоговорящих из разных стран, но поговорить из-за часовых поясов и работы обычно нормально не выходит.
>>978194У меня еще норм.Я хоть о спряжении глагола забочусь.Некоторые у нас вообще писали.I want look result in next week.
>>978196Вроде и понятно самим рускоговорящим, но когда так пишешь иностанцем, зачастую они могут тебя реально не понять, и следует серия переспросов - когда, что именно и зачем.
Скушно.
>>978200Спать надо просто.
>>978141Я понял, как решать. Не понял только, как тот хитрый критерий применять, но остального достаточно для решения задачи.
>>978141А не, всио понял.
есть два классаодин из них потомок другого и используя указатели каждого из них динамически выделяется массив элементов потомканужно вызвать метод, выводящий строку на экран,но проблема в первом массиве, где указатель базового типа, а элементы потомка, там только для первого элемента создается объект типа потомка, немогу понять почему так и как это разрулитьhttps://pastebin.com/30g8Y1Pq
>>978270http://ideone.com/NojQrnЧто тут не так? Вроде всё, как задумано.В общем случае, так нельзя делать. Это всё работает только потому, что объекты одинакового размера.
>>978284у меня на этой строчкеpShapes.WhereAmI();после второй итерации цикла выходит такое:почему то в массиве pShapes только в первом элементе создается объект типа Rect и я не могу понять почемуException thrown: read access violation.pShapes-> was nullptr.If there is a handler for this exception, the program may be safely continued.
>>978294Там всё нормально создаётся. Выведи в консоль sizeof(Shape) и sizeof(Rect). После этого хорошенько подумой, что ты сделал не так. После этого спрашивай дальше.
>>978296вот с твоим кодом, что получается,а в pShapes[0] есть объек Rectа в pShapes[1] уже нет (я хз почему) и поскольку это вызов по объекту, то вызывается метод для объекта Rect и вылезает ошибка, потому что объекта нетунасчет sizeof, ну да, я понимаю, что дочерний класс занимает 24 байта, а не 8, как базовый, но это ж мне ничего не дает, я ведь просто вызываю метод, выводящий строку на экран, я не манипулирую никак с данными..
>>978306А когда ты к элементам массива обращаешься, что ты делаешь?
>>978310ну окей, это образщение к даннымно в данном конкретном случае мне не важно сколько памяти занимает объект массивапроблема-то не в этомведь у меня указатель базового класса на динамически выделенный массив элементов дочернегоя ж пишуShape* pShapes = new Rect[10]дайте мне десять элементов типа рект и направьте на первый элемент указатель типа базового класса
Подскажите плизесли у меня есть базовый класс A и дочерний Bкак можно проинициализироватьB b();A p = &b;//по идее так можно делать, если A базовый для B, нознаю, что можно так,A p = new B;но мне нужно, чтобы именно для объекта b направить этот указатель, что бы потом через него вызывать виртуальный методкогда я пишу так:A p = &b;мне пишут: a value of type B()()" cannot be used to initialize entity of type "A*"почему, если это указатель на базовый для объекта b тип???
>>978313Ну теперь уже совсем для нулёвых объясняю.pShapes <=> (pShapes + 8 i)pRects <=> (pRects + 24 i)>>978319Так нельзя делать. С чего ты взял, что так можно?
>>970816 (OP)У меня есть класс clas_name, при объявлении которого нужно указывать аргументы.clas_name object(4, 4, 1, 8);//напримерИ мне надо сделать массив таких объектов с одинаковыми аргументами, как?
>>978324Суко, звёздочки.pShapes <=> \(pShapes + 8\ i)pRects <=> \(pRects + 24\ i)
>>978326Бля, ну я пытался. Абу пидор.
>>978324x - это тип звёздочкиpShapes <=> x(pShapes + 8 x i)pRects <=> x(pRects + 24 x i)
>>978325std::vector<Foo> thousand_foos(1000, Foo(42));
Комрады, вопрос - я вообще С# + JS мидл под АSP, вкатился вайти в 27, вот уже 3 года работаю, вышел на норм зп. и т.д., а ща перебрался на на еще более коровые задачи, и удаляюсь от веба.Но все это время по ночам под одеялкой кодал на сях под STM-ки прошивочки для всякой хоббийной и не очень поеботы, даже заработать успел малех. Ща понимаю что Шарпы оче ограничивают вендой, а мои хоббийные проектики требуют реализации уже во всяких эмбедед вариантах под линупсами. Какие-то простые вещи делал на сях в консольке, но уже тесновато. В общем, ща взялся учить плюсы, но одолевает сомнение небольше - по факту мне нужно как низкоуровневый контроль регистров/ножек железяки, так и некоторые ГУИйовины пилить. И понимаю что должно быть все кроссплатформененько. Исходя из этого в прикладном варианте вижу Qt решением своих проблем, но показалось что для нормального кодинга на Qt стоит довольно существенно освоится в плюсах.Собственно вопрос - насколько С++ для моих задач лучший выбор инвестиций времени? Не будет ли достаточно Пайтона? Есть ли какие-то другие сильвер-буллеты для косплатформенной разработки низкосреде, скорееуровневых апликух для всякий этих IoT?
>>978344Я в состоянии только первокурам помочь лабы решать)))Не совсем понятно, чем ты там занимаешься. Если для настолок нужно что-то кросплатформенное, то можно смело перекатываться в JVM-языки, тысячи их: Java, Groovy, Scala, Kotlin, JPython. В многие ARM чипы встроены интерпретаторы JVM-кода, должно достаточно быстро работать.Если ты там что-то для слабых железяк пишешь, то скорее всего у тебя будет только C, если повезёт, то C++.
>>978344>Комрады, вопрос - >я вообще С# + JS мидл под АSP,>ко ко коТак бы и сказал, что ты петушок.>вкатился вайти в 27, вот уже 3 года работаю, вышел на норм зп.Всегда удивляли такие. Можно поинтересоваться, а что ты делал до 27? Писюн малафил и смотрел аниме? А потом БАЦ такой "надо стать ойтешнеком))". А потом и получаются говнокодеры. Начинать учить программирование надо с первого класса, а как только закончишь 9 классов, в 15 лет идти джуном.> и т.д., а ща перебрался на на еще более коровые задачи, и удаляюсь от веба.>Но все это время по ночам под одеялкой кодал на сях под STM-ки прошивочки для всякой хоббийной и не очень поеботы, даже заработать успел малех. Ща понимаю что Шарпы оче ограничивают вендой, а мои хоббийные проектики требуют реализации уже во всяких эмбедед вариантах под линупсами. Какие-то простые вещи делал на сях в консольке, но уже тесновато. В общем, ща взялся учить плюсы, но одолевает сомнение небольше - >по факту мне нужно как низкоуровневый контроль регистров/ножек железяки, так и некоторые ГУИйовины пилить. И понимаю что должно быть все кроссплатформененько. Исходя из этого в прикладном варианте вижу Qt решением своих проблем, но показалось что для нормального кодинга на Qt стоит довольно существенно освоится в плюсах.МК только на С прогают(и немного на асме), ты че. Qt это ж на виндовс, а не мк.>Собственно вопрос - насколько С++ для моих задач лучший выбор инвестиций времени? Не будет ли достаточно Пайтона? Есть ли какие-то другие сильвер-буллеты для косплатформенной разработки низкосреде,А Пайтона под мк и нет, лол. Только С, только хардкор. Хотя с++ в любом случае тебе будет полезно, так как:1)он подвид си и в си ты тоже повысишь скилл;2)сможешь писать совместимое с мк по для компьютера, ведь с++ компилятор и си поддерживает> скорееуровневых апликух для всякий этих IoT?А вообще, этим в /ra/ занимаются, там есть треды посвящённые МК, ПЛИС, и arm.
>>978363Писал под ARMы 4е, до этого под 8-бит контроллеры, ща под RPi пробую писать, т.е. под ARM и линь. Какого-то платформоспецифичного кода не планирую, по факту просто хочу универсальности. JVM смущает, хотя то это сейчас это вин не отрицаю. Но настолько радикально менять экосистему не хотел-бы. Все таки плюсы или пайтон скорее просто дополнят мой "портфель" навыков для винды и откроют двери в линь.
>>978372>Qt это ж на виндовс
>>978313>но в данном конкретном случае мне не важно сколько памяти занимает объект массиваЛол.
>>978372>Так бы и сказал, что ты петушок.Так ты ж сам все сказал за себя, чо мне клаву топтать лишний раз.>Можно поинтересоваться, а что ты делал до 27Чего тебе горит-то? В том числе кодил, но на тех позициях где кодить было скорее просто полезно чем необходимо, а основными задачами были писать всякие xslt карты конвертации, cmd скприпты и прочее околоайти. А потом манагерил нескольких вонабидевелоперов. Проблемы начали тогда когда я понял что мне приятнее самому в коде колупаться чем манагерить, и тогда решил вкатиться по полной, подтянул забытое и пошел джунить за хлеб с ЗП с пары кусков баксов на пару сотен. А ща вернулся на х2 от того со скольки уходил. В общем, нехуй всех судить по одному посту, признак быдла.>МК только на С прогают(и немного на асме), ты че. Qt это ж на виндовс.Штобля? Под что компилятор в asm напишут, на том и прогают. Под те же STM-ки из коробки есть либы и под С и под Плюсы. Под другие мелкие железяки встраивают интерпретаторы Lua, порой Пайтон, а иногда даже JS. Но да, C как бы стандарт де-факто. По поводу Кьюта под Винду это ты что-то в лужу перданул. Видна там только одна из 3ти (или более) целевых осей.>А Пайтона под мк и нет, лол. Только С, только хардкор. Я ж говорю - мне ща более в системное/эмбед программирование нужно влиться. Хуй на МК, там все понятно, и моих С там хватает.
>>978372>в 15 лет идти джуном.Анука скажи что ты джуном ебашишь с 15ти?Ну и типа не влился до первой малафьи - не кодер?Футаким снобом быть.
>>970816 (OP)Платиновый нуфажий вопрос:На вижуалке17 поставил Incrediбил (повелся, на рекламу), начал собирать через него и пизданулся стандартный сборщик.Можно ли его быстренько выпилить и откатить это все или проще уже переустановить?
Бля, мне наверное надо было в оппост доске с этим пойти, да?>>978435
>>978435Спермопроблемы.> или проще уже переустановитьДа. Переустанови ШINDOWS.
>>978344Насколько низкоуровневый. Вообще, под микроконтроллеры, а частности ARM'овские имееются множество библиотек начиная с тех, которые просто предоставляют тебе доступ к регистрам, а дальше ты уже сам решаешь что как и когда выставить (то есть тут с даташитом придется очень плотно работать, потому что наебать самого себя шанс очень велик), емнип CMSIS назвается, есть и по-проще, например STM standard peripheral library, которая позволяет тебе с наименьшими усилиями конфигурировать все свое имущество. Для петухов, которые даже в это не смогли сделали отдельную штуку, называется mbed. Ну, и, естественно, к этому всему добру можно еще прихуячить какую-то RTOS, например FreeRTOS или eCos. Конкретно по микроконтроллерам и крестам, все нормально будет, только вот не стоит увлекаться динамической аллокацией памяти, потому что можно ее охуительно фрагментировать и будет очень весело. Лучше использовать пулы или статику.На микроконтроллерах, естественно, никакого Qt нет и быть не может, зато есть немного гуевских ПЛАТНЫХ библиотек, конечно же, на Цэ.Касательно embed-а, то тут, мне кажется, что тебе бы для начала освоиться, как собрать дистриб Linux, не используя готовое решение, то есть ядро, дрова по необходимости, гуй и прочее говно, а потому уже в этот самый embed и влазить, потому что, очень много чего там делается на линуксе. Конечно, не стоит отметать WinCE, но тут проще на шарпах будет, я так думаю.Однако, я, например, на работе пилил софтину для пульта управления, все говно вертелось на линуксе (не голом, конечно же, но софта там было минимум тайловый менеджер окон, базовы набор дров, необходимые либы и собственно софтина), с учетом того, что клаву туда подключить было нереально, то заморачиваться по поводу других каких-то штук я не видел смысла.
>>978452> на работе пилил софтину для пульта управления, все говно вертелось на линуксеВот это как раз примерный пул моих задач.По поводу МК, еще раз повторюсь - хуй с ними, там мне чистых С за глаза хватает. Ну как чистых - через HAL либы, конечно.Хочу вкатится именно с недосистемное кроссплатформенное проганье. По факту - слушать порты, обрабатывать-валидировать ввод, преопразовывать данные, отправлять по сети/на другие поры, мигать лампочками, слушать кнопочки. Ну и GUI для мониторига статуса, вывода логов.
>>978319>но мне нужно, чтобы именно для объекта b направить этот указатель, что бы потом через него вызывать виртуальный методНапиши по-русски без речевых ошибок, и я отвечу.>>978344>Собственно вопрос - насколько С++ для моих задач лучший выбор инвестиций времени?Зависит от того, сколько ты готов ебаться с ними. В институте учил только C, в последние полгода пытаюсь с нуля запилить для себя что-то в Qt.Если научишься быстро гуглить, проблем никаких. Но вот, например, вот это ты хрен нагуглишь, пока сам не столкнёшься: http://doc.qt.io/qt-5/implicit-sharing.html .Когда инициализируешь POD-класс со вложенными классами, можно пользоваться aggregate initialization из C. Когда пишешь то же самое в аргументе для vector<T>::emplace_back() - это уже не катит, так как это уже не инициализация, и один в один скопированное выражение уже даёт ошибку: по правилам каждая пара фигурных скобок должна раскрываться во что-то одно, да и агрегатного конструктора вообще нет, он неявный.Олсо, в QT есть QML, так что жабаскрип пригодится.
>>978471Если ты хочешь, чтобы твой софт вертелся под управлением разных микроконтроллеров, например MSP, STM32, AVR, прочих ARM и т.д., то, если повезет, то адаптировать модули для работы с периферией ты будешь от серии микроконтроллеров к серии (не стоит думать, что если у тебя микроконтроллер на ядре ARM, то и периферия там одинаковая, производители стандарты периферийных устройств на хую вертели, поэтому у разных производителей встроенная периферия, как правило, разная), а в случае богомерзких AVR тебе придется менять модули от микроконтроллера к микроконтроллеру, потому что, возьмем те же ATmega8 и ATmega88 - вроде бы индексы похожие, а на деле в регистрах пиздос, поэтому конвертирование софта с одного ан другой приносит гемор, а в случае, когда настройки/ввод-вывод не были вынесены в отдельные процедуры, так полная жопа.На микроконтроллерах переносимость связана с написанием полнейшей дичи. Подумай сто раз, нужно ли тебе это и для каких целей. Может гораздо проще все делать на готовом решении, например RPi или Odroid (кстати, вторым мое увожение, потому что, в отличие от первых, смогли-таки завезти нормальные дрова на видео-ускоритель)
>>978483>Но вот, например, вот это ты хрен нагуглишь, пока сам не столкнёшься: http://doc.qt.io/qt-5/implicit-sharing.html .>Когда инициализируешь POD-класс со вложенными классами, можно пользоваться aggregate initialization из C. Когда пишешь то же самое в аргументе для vector<T>::emplace_back() - это уже не катит, так как это уже не инициализация, и один в один скопированное выражение уже даёт ошибку: по правилам каждая пара фигурных скобок должна раскрываться во что-то одно, да и агрегатного конструктора вообще нет, он неявный.Это я к тому, что есть множество незначительных проблем, которые ясным умом не понять, так как стандарт писал не ты.
>>978484Да что ж такое:) Как бы еще подчеркнуть что МК для меня сейчас не на повестке дня? >На микроконтроллерах переносимость связана с написанием полнейшей дичи. Да, видел я код написанный для того чтобы компилится под разные версии AVR - это ебанный mess и #IFDEF-ов и тысячей вариаций одного и того же кода. И мне оно нахуй не надо - Мне хватает семейства STM-ов, для который большинство перефирии +- причесали для однотипного использования. Так что часть МК для меня пока закрыта, и нужно закрыть часть по написанию эмбедового "бэкенда" который будет данные с этих контроллеров собирать и давать пользователю это все мониторить/менеджерить. ПОтому и Линукс, потому и Qt
>>978485Да, на QML смотрю облизываясь, но боюсь браться не разобравшись в кишках C++, дабы не остаться на уровне формошлепа под линупс.
>>978491>> на QML смотрю облизываясьУж сколько лет прошло с его появления, так и остается багованным говнищем. Хотя для мелокоподелок его за глаза, а вот полноценное приложение только лишь на QML я бы писать не стал, разве что фронт-енд.
>>978499ну я его даже и не рассматриваю как основу для приложения, и удивлен что кто-то рассматривает.По сути это удобная хуйня для написания вьюхи с вкраплениями бизнес логики. Конечно вся логика должна быть вынесена в плюсы.
>>978394>А Пайтона под мк и нет, лол. Только С, только хардкор. >Я ж говорю - мне ща более в системное/эмбед программирование нужно влиться. Хуй на МК, там все понятно, и моих С там хватает.Лол што? Микроконтроллеры это и есть Embedded, STM, AVR, PIC это мк, ну ARM ещё. Что в твоём понимании embedded, раз это не мк?
>>978509Это тоже эмбед, да. Но в системное проганье то что ты описал не входит. Потому говоря "системное/эмбед" проганье я подразумеваю не или/или а некторый стык этих двух областей.Но а по поводу того что сейчас понимается под embedded - посмею тебя удивить, но это прежде всего код под Linux в тех или иных его масштабах, под специфичное железо, влючая написание дров и конфигурирование этого железа под линь. И как самый мозговыносящий момент - в качестве сборки линя для всяких железяк типа баркод-сканера или POS терминала сейчас поразительно часто предпочитают Android, и разработка под Андроид тоже очень часто стала подразумеватся под embedded.А голый кодинг под МК уже чуть ли не архаика и прерогатива аutomotive сегмента, куда набирают С-макак да, странно слышать на 500-1000 уе без шанса роста. Но то уже офтоп
>>978520>И как самый мозговыносящий момент - в качестве сборки линя для всяких железяк типа баркод-сканера или POS терминала сейчас поразительно часто предпочитают Android, и разработка под Андроид тоже очень часто стала подразумеватся под embedded.Т.е. андроид применяется не только в телефонах, но и в промышленности? >А голый кодинг под МК уже чуть ли не архаика и прерогатива аutomotive сегмента, куда набирают С-макак да, странно слышать на 500-1000 уе без шанса роста. Но то уже офтопЯ походу это. Учусь на автоматчика и мы писали на С на мк AVR. У преподавателя такая же работа.
>>978537>Т.е. андроид применяется не только в телефонах, но и в промышленности? Прикинь) Потому не теряй времени и копай в линукс, будешь ценным "кадром". На проганье МК слишком много дедов сидит, на копеечные ЗП. > чусь на автоматчикаЕсли уж нравится носом в регистрах зарываться, то учи Пролог, ПЛИС, и т.д. Там хоть ЗП со среднепрограммистскими равняются. Но стартовать все равно сложно - порог вхождения не низкий.
>>978537Мне все время казалось, что ведроиду не место в индустрии. Там уже плотно сидят WinCE и Linux. То, что в ведроиде зачастую могут валиться приложения в самый неподходящий момент, да и вообще создан он был не для этого. Цена ошибки высокая, особенно когда она проявляется в нарушении рабочего цикла уже у клиента, так что тут только WinCE и Linux, ИМХО.Касательно C++ с Qt под андроидом - тут тоже своих косяков хватает. Кроме них придется в любом случае ебаться с JNI, чтобы получать права доступа и прочее, прочее... Не проще ли тогда сразу использовать Java, вместо плясок с бубном, и в итоге получив кучу говна идущего впридачу с Qt?!
>>978584В критических местах "индустрии" и обычному линю не место, только всякие RTOS, только хардкор.Но таких мест не так много, на самом деле. А в остальных удобство разработки, тайм-ту-маркет, нличие поддержки и экосистемы куда важнее стабильности оказывается. Да и той стабильности что есть - за глаза хватает.
>>978483>Напиши по-русски без речевых ошибок, и я отвечу.Посредством объекта b и указателя p вызовите виртуальную функцию WhereAmI() класса A
>>978621То есть, тебе нужно вызвать метод объекта А по отношению к Б вместо правильного метода, так?Ты должен делать это изнутри.class A { virtual void huy();}class B : class A { void oldHuy() { A::huy(); }}Сделать это снаружи ты не можешь. Методы для того и делают виртуальными, чтобы вызывались самые близки пол дереву наследования версии, и делают это в том числе потому, что методы базы могут быть несовместимы с предком.
>>978648Поправочка:class A {virtual void huy(){cin<<'fuck';}}class B : class A {virtual void huy(){cin<<'beach';}void oldHuy() {A::huy();}}
>>978648>Сделать это снаружи ты не можешь.Может.
>>978648На то они виртуальные, что знают, к какому классу принадлежат.
>>978654Код в студию.
>>978689>Код в студию.Не пользуюсь студией.http://ideone.com/VnrzJh
>>978706Поняяяяяятно. Но: http://ideone.com/XgK4eV
>>978745И?
>>978745Дядя, идите лучше Джаву или Питон осиливайте. Вам кресты не по зубам.
Так, парни, это снова я с деревьями. Не могу найти в интернете ман по валгринду на русском. А то как-то неудобно со своими сегментайшен файлтами лезть.
>>978779> Не могу найти в интернете ман по валгринду на русском.Без мана не можешь написатьvalgrind ./kokoko(./kokoko - это твой бинарник) ?
http://stackoverflow.com/questions/8003233Оооооооох... Уже скучаю по сишечке.>>978749Можешь не продолжать. Я получил ответ на свой вопрос и дополнил его.>>978752Тебя забыл спросить. А, нет, не забыл, просто иди нахуй.
>>978782>valgrind ./kokokoА, нужно через ./Спасибо
>>978785> А, нужно через ./А до этого ты как запускал свои поделки?
>>978786Запускал так, просто ждб запускатся просто по имени файла.
>>978786Вот пишет мне волгринд, что я использую неициализированную перменную структуры, но при этом ее значение правильное. Как я могу посмотреть еще что-нибудь?
>>978793>я использую неициализированную перменную структуры, но при этом ее значение правильноеВ смысле?> Как я могу посмотреть еще что-нибудь?Что конкретно?
>>978794>В смысле?https://clbin.com/RCh7Uy.png>Что конкретно? Вообще что угодно. Любая информация, которая может помочь понять в чем дело.
>>978798>Любая информация, которая может помочь понять в чем дело.Посмотри в код.
>>978802А ты хорош.
В общем я не знаю в чем причина. Program received signal SIGSEGV, Segmentation fault.0x0000000000401ef4 in Off_base (Top_node=0x0, file=...) at Server.cpp:6262 int S = Top_node -> IsAHum_;Вот, что пишет gdb. https://clbin.com/IayfF0.pngА вот, что выдает валгринд. Память нигде выше не освобождается, выделяется только в одном месте через нью и после проблемной функции освобождается.
>>978803Что не так? Номера строк тебе написали.
>>978856Код ты нам, конечно, не покажешь.
>>978856Кусок проблемного кода https://pastebin.com/36GstaA8 Проблема в первом вызове IsAHum_Вся функция целиком https://pastebin.com/c7K2XA6SВот ашник (Tree.h) https://pastebin.com/LYY2RZf4Вот реализация класса, проблемная функция не оттуда, но возможно, что он при проходе как-то влияет на дерево (User.cpp) https://pastebin.com/2KV0sbVk
>>978863Ну так я и не понимаю, что не так в этой безобидной строке.>>978865В добавок, вот пример файла, подаваемого на вход, назвать Base.txt https://pastebin.com/aw8wgYy2
>>978865Скинь архивом с именами файлов.
>>978865У меня valgrind ни на что не жалуется.Но и выходной файл пустой.
>>978870После каждого запуска программы, выходной файл нужно обновлять(он по совместительству является входным) до того, что я скинул в пастбине.
>>978871Я просто сделал вывод в файл с другим именем, входной не портится.
>>978871Да, понятно. past ebin превратил \n в \r\n
>>978872Интересная ситуация. А входной у тебя как у меня ?https://clbin.com/559E3G.png
>>978874Поэтому надо кидать архивом, чтобы ничего не портилось.
>>978798>Любая информация, которая может помочь понять в чем дело.В предпоследней строке тебе valgrind говорит, что ещё можно сделать.
>>978856>В общем я не знаю в чем причина. Смотри в 68-ю строку.
>>978879У меня к вам предложение. Не бейте лучше обоссыте. А не расскажешь, как нашел?
>>978880valgrind --track-origins=yes ./Server
>>978880Хотя я подумал, можно было догадаться по жалобе на строку в цикле.
>>978881Я кстати тоже это забил и ничего полезного почерпнуть не смог. https://clbin.com/ABIcuE.png
>>978883Неинициализированную память выделил vector. Скорее всего, ты лезешь за границы инициализированного в ней.
auto t1 = std::async(test); auto t2 = std::async(test); return t1.get() == 0 && t2.get() == 0;Почему только один тред запускается? Нет времени по докам лазить
>>979275std::async(std::launch::async, test)Кстати, отличный сервис, можно установить зависимости, собрать проект и запустить тесты https://travis-ci.org/theanonym/libyoba-perl/builds/225310958и будет собираться автоматически после каждого коммита
>>978492В кишках С++ ты хуй разберёшься.http://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-ruleЕсли вкратце, то это правило означает то, что от приведения типов указателей твой брат умрёт.
>>979275t1.get() != 0
перекат >>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)>>979476 (OP)
>>977629С тем же самым говном пришел на двач сейчас и даже тут ответов нет