Вы видите копию треда, сохраненную 28 августа 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый - https://2ch.hk/pr/res/1016662.html (М)
- спрашивает про ВинАПИ
- говорит "не работает" без копирования сообщения об ошибке
- спрашивает "как сделать Х", где Х никак к плюсам не относится
сдохнут от СПИДа.
С этим полностью согласен. Ещё было бы хорошо, чтобы им выдавали бан на годик.
> говорит "не работает" без копирования сообщения об ошибке
А если не работает не потому, что не компилируется?
Некоторые даже не пишут, где у них проблема - в рантайме, или в компайлтайме.
Потому что char ЗВЁЗДОЧКА - это строки. Тебе ещё повезло, что он выводит f - может вывести все ненулевые символы, которые в стеке после f.
Если хочешь адрес, приведи к void ЗВЁЗДОЧКА.
Толсто.
Из крестов всегда можно перекатиться в веб за полгода, особенно если уже знаешь алгоритмы и структуры данных.
Потому что operator << ostream& o не определен для int*, инстанцируется специализация шаблона для указателей (или просто T, хуй знает, никогда не интересовался что там внутри).
>>1028140
В первом случае вызывается второй оператор отюсдова http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2
Во втором — седьмой отсюдова http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt
Поздравляю, ананасы. Не прошло и 20 лет как экосистема плюсов начала объединяться. Наконец-то буст можно будет собирать и подключать без ебли даже на винде.
Уважаемым спермогосподам хозяева подарили облегчалку анальных болей. Мои искренние поздравления.
У спермогоспод есть VS с отличным отладчиком, а что есть у тебя?
У меня майки в cmake устаревший findboost положили, в результате он не правильные постфиксы пытался найти.
Было это пару месяцев назад VS2017, boost 1_64
Такое себе быть спермогосподином.
Дело не в "перегрузке для поинтера", а в перегрузке для C-строк.
Я бы продал анальную девственность за хорошие инструменты.
Сам я знаю только часть языка по стандарту 2003 года, но сейчас надо понять что делает говнокод написанный по новому стандарту.
А у нас есть прекрасный Clion, в котором есть все что есть в студии кроме профайлера, только еще с нормальным редактором текста, и без прибитых к полу деревянных игрушек.
Дрисня как раз быстрая.
Последние 7 лет штудия от релиза к релизу только деградировала по производительности. Ладно, 7 это я, к конечно загнул, но до 17-й это совсем кромешный пиздец был.
Хуй знает, у меня VS работает достаточно быстро на моем не очень мощном ноутбуке с HDD.
>2017
>сидеть на VS вместо Сlion
не секрет, что диды плохо адаптируются к новым вещам. перемены вызывают у них дискомфорт и страх
> не очень мощном ноутбуке с HDD.
Твой HDD влияет только время стартапа. Когда начинаются свопы (или просто 100% нагрузка на цпу анализатором кода) никакой SSD не спасает.
>Хэловорды где угодно летают.
Как раз в Clion не летают.
Там редактор кода очень сильно лагает на моей HD4000
Она просто старая у меня да еще и мобильная
Я даже не хочу знать, тролль ты или нет. Просто съебись.
Я всё понял, ребята. Я еблан и заинклудил то, чего в примере не было (он не из книги).
не, тут только борщи сидят, почитай тред
ты само обсуждение читал, лупоглазый? во-первых, там только поднимается вопрос, как к концу года сделать план по переходу на cmake, а не перейти на него. во-вторых, сообщество, скорее всего, пошлёт тот комитет найух.
Сообщество стопроцентно против не будет — сплошные плюсы же.
Можешь годных гайдов подсказать?
куте виджет фремворк, а буст сборище какийто нинужной хуеты. че правда смузихлебы для тогоже хэша или ололосортировки прикручивают целый буст?
Куты - большая коллекция разных библиотек, использование которых предусматривает использование остальных библиотек, поэтому Куты - фреймворк.
Куте виджет фреймворк. Ясно.
Борщехлёб ничего в жизни не писал на крестах и спрашивает зачем языку у которого в стандартной библиотеке есть хуй с кривыми строками нужен буст.
В бусте всю его дженерик часть тоже легко использовать вместе.
Ладно, скажем так — буст это то, какой должна быть стандартная библиотека у плюсов, чтобы на них можно было написать что-то большее чем сортировочку.
Сидеть на джавапараше, которая не может распарсить сложные тимплиты вместо богоподобной студии?
Студия, которая как в прошлом треде уже доказали, не поддерживает до конца 98-й стандарт, видимо, распарит их.
>никем не используемую
Ололо. Поэтому у них исправление two-phase name lookup стоит на втором месте по важности после поддержки expressions SFINAE (которое уже запилили).
https://www.reddit.com/r/cpp/comments/3g3aa1/what_do_you_want_to_see_in_vs_2015_update_1/ctukcl4/
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/expression-sfinae-improvements-in-vs-2015-update-3/
Ещё про поломанный препроцессор и two-phase lookup https://blog.jetbrains.com/rscpp/microsoft-cpp-compiler-bugs-ambiguities/
Скорее, все на это клали хуй, и все без этого и так работает без проблем, включая трехэтажное говно из буста
и после того как они в бинарники телеметрию свою записывали ты все еще пользуешься разработками от MS? Удивительно сколько человек говна готов сожрать лишь бы оставаться в своей комфортной коробочке.
>Так вот, это было сделано...
мне до пизды для чего это было сделано:) очередная попытка damage control от индусятников
Тебе-то, тупому борщехлёбу с дивана, конечно лучше всех знать, что буст работает без проблем просто так, а не потому, что определяет для MSVC макру BOOST_NO_TWO_PHASE_NAME_LOOKUP и обходит костылями поведение этого недокомпилятора.
>>1028759
>Почему эти дурики не могут сделать переключатель диалектов, чтобы таки можно было включить стандартное поведение?
Потому что написали убогий парсер 30 лет назад и пока бабки текли рекой и никто не задавал много вопросов "почему соответствующий стандарту код ведёт себя у вас как-то странно", его не трогали.
>есть такой свитч в 17ой версии
Он только отключает нестандартные расширения, типа байндинга неконстантных lvalue-ссылок к временным объектам или передачи строковых литералов по указателю на char (без const). Two-phase name lookup никаким ключом не включается, т.к. там нужно серьёзно лечить парсер.
Хотя, нагугливается, что у них с месяц-два назад появился ключ /Zc:twoPhase[-]
Я думаю, что ты такой злой только в интернетах, а в реале ты забитый омеженька. Хороший и умный специалист не будет разводить такую злобу на АИБ.
Думай что хочешь, борщехлёб.
>Лето в /pr/
лучше было бы чтобы на плюсах вообще не было стандартной библиотеки
и буста не было бы
а юзали бы алгоритмы и структуры, предлагаемые ядром конкретного фреймворка qt, gtk, mfc, atl..
тогда весь код был бы написан в единообразной манере (и не только сам с собой, но и с кодом фреймворка, который он использует)
Проблема с выводом PWSTR
Выводит непонятную дичь вместо имени процесса.
Прим. на пике (Process name: 004B3FD8 | ...)
Х3 как выводить ЭТО.
1.Касты крашат.
2.<code>std::wcout</code> и прочее крашит.
https://pastebin.com/5ZswuCBC
wcout на винде не выводит то, что непредставимо чаром. Гугли, в четвёртый раз эта ебалайка уже.
За не переносимость софта использующего WinAPI на другие платформы. Нефига на ровном месте vendor-lock устраивать.
За то, что это не WinAPI-тред.
Ты так говоришь, как будто посих переносим. Никому не нужна твоя программа, если ты привык ограничиваться стл и бутсами.
СТЛ и буст - это не посикс, лалка. Ты можешь спрашивать про что угодно, но будешь обоссан, так как мы тут обсуждаем КРЕСТЫ.
>Ты так говоришь, как будто посих переносим.
Ты знаешь, что значит первая буква в аббревиатуре POSIX?
Получается, у char нету вывода адресов и нужно привести указатель на char к типу указателя на void чтобы сработал метод класса ostream №7 из вот отсюда?
http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt
я понимаю, что всего лишь повторяю твои слова, но мне важно разобраться до конца.
Не ОП.
>нужно привести указатель на char к типу указателя на void чтобы сработал метод класса ostream №7 из вот отсюда?
Да.
Посоветуйте лучшую ORM для SQLite.
Она никогда нормально не работала, и была сделана исключительно для какой-то йоба сертификации в америке ровно настолько, чтобы пройти эту сертификацию. И потом ее нахуй выпилили.
POSIX принят как стандарт и работает вообще везде — от линуксов до маков с прочими бздями.
Но сперма дауном мало кривой фс и реестра, и кучей говнища которое тянется еще из доса, они тут сидят выебываются что у них компилятор нормально работает (при том что под ним даже буст, который пишется на самых канонических стандартах, не собирается без допилки костылями коими козыряли выше (привет Borland c++)).
Спасибо
бла бла бла
а на деле это была разработка сторонеей фирмы, потом ее прикупила майкрософт
и да, на судя по формумам где сотни тысяч сообщений, она таки активно юзалась
блядь, нахуя ультимативно писать о том, в чем не разбираешься?
А вот хуй знает. Точно известно только то, что при использовании пайпов придётся на каждую передачу делать по несколько сисколлов и аллоцировать сам массив по 2 раза.
Точнее тебе скажут бенчмарки, если тебе не лень.
Напрогай и попробуй. Самый простой вариант - запустить
$ cat /dev/zero | wc -c
и посмотреть IO в iotop или в /proc/ . На винде сложнее. Оверхед зависит от воплощения.
>C pipes
Это POSIX, если что.
Я хуй знает как насчет этих говнореализаций маппингов сущностей БД к объектам крестов с использованием макросов относиться (вроде бы это и отвратительно, стоит лишь посмотреть на то, как делаются всякие кастомные классы дескрипторов для COM, но с другой стороны у языка никаких средств для организации статической рефлексии нет), так что я бы предложил использовать внешний парсер для описания сущностей на нейтральном языке, который бы сам генерировал и запросы и исходный код, наподобие protobuf.
Если проект будет долго жить и весьма серьезный, вполне имеет смысл написать собственный такой пре-процессор.
>> Это POSIX, если что.
Вроде же в winapi есть свои пайпы, только они там какие-то ебанутые. Я как-то решил попробовать две программулины скрестить при помощи их пайпа, но в итоге говна объелся. Меня люто бомбануло с их LPOVERLAPPED, TCHAR, и прочей поебистики, ну и еще то что это не тот пайп, который я ожидал получить из никсов.
Есть три класса
Первый класс - основной, содержит в себе основную программу.
В нём, по событию, запускается исполняемая функция из третьего класса и всё работает отлично.
Но, кроме этого события в первом классе создается объект из второго класса, который, в свою очередь создает тред, в котором происходят события, которые запускают функцию из третьего класса и всё, пизда. Причём не работает не весь код третьего класса, а только его часть, связанная с библиотекой. Собственно не стартует CApplication
Как это починить?
Сам код, ниже.
class first
#include "CApplication.h"
...
#include "third.h"
#include "second.h"
...
void first::OnBnClickedCheck()
{
...
third myTimer.stop();
myTimer.start(5);
second::checkIt();
...
}
class second
#pragma once
#include "CApplication.h"
...
#include "first.h"
...
bool checkIt::OnBnClickedCheck()
{
...
CApplication app; // Start Excel and get an Application object.
if (!app.CreateDispatch(TEXT("Excel.Application")))
{
AfxMessageBox(TEXT("Couldn't start Excel and get Application object."));
}
...
}
class third
#pragma once
#include "CApplication.h"
...
#include "first.h"
...
void timer()
{
...
second::checkIt();
...
}
void third::start(int sec)
{
std::thread th1(timer, this, sec);
th1.detach();
}
Есть три класса
Первый класс - основной, содержит в себе основную программу.
В нём, по событию, запускается исполняемая функция из третьего класса и всё работает отлично.
Но, кроме этого события в первом классе создается объект из второго класса, который, в свою очередь создает тред, в котором происходят события, которые запускают функцию из третьего класса и всё, пизда. Причём не работает не весь код третьего класса, а только его часть, связанная с библиотекой. Собственно не стартует CApplication
Как это починить?
Сам код, ниже.
class first
#include "CApplication.h"
...
#include "third.h"
#include "second.h"
...
void first::OnBnClickedCheck()
{
...
third myTimer.stop();
myTimer.start(5);
second::checkIt();
...
}
class second
#pragma once
#include "CApplication.h"
...
#include "first.h"
...
bool checkIt::OnBnClickedCheck()
{
...
CApplication app; // Start Excel and get an Application object.
if (!app.CreateDispatch(TEXT("Excel.Application")))
{
AfxMessageBox(TEXT("Couldn't start Excel and get Application object."));
}
...
}
class third
#pragma once
#include "CApplication.h"
...
#include "first.h"
...
void timer()
{
...
second::checkIt();
...
}
void third::start(int sec)
{
std::thread th1(timer, this, sec);
th1.detach();
}
В первом классе неправильно скопипастил
void first::OnBnClickedCheck()
{
...
third myTimer;
myTimer.start(5);
second::checkIt();
...
}
Это программа.
Нарисуй диаграмму последовательности и тебе все ясно будет. Uml никому еще не мешал.
Пацаны, я знаю, я говноед и всё такое, но, пожалуйста, помогите с примером, C++ Builder, надо в dbgrid окрасить ячейку в столбце в зеленый, если ее значение == "Принят", и в красный, если == "0".
Есть вот такой код:
http://ideone.com/DIB0HP
Он работает, но окрашивает всю строку, соответственно вся таблица у меня пикрелейтед, что мне нужно добавить, чтоб окрашивал только в первом солбце? Просто ткните носом, я охуительно буду вам благодарен!
>> int DataCol
Это ли, случайно, не та самая переменная, указывающая номер столбца?!
Ну и оттуда уже исходи если это так.
спасибо, анон.
я видел эту переменную, но сначала не вдуплял как её задействовать, тугодум с утра маленько.
Огромное спасибо, анон, всё получилось, в if доп.условие прописал.
Тонну нефти тебе
>>1029466 -кун
>Майки делают не посикс совместимую систему
>РЯЯЯ ВАШ ПОСИХ НИГДЕ НЕ РАБОТАЕТ!!! НИПЕРЕНАСИМО
>>1029737
какой самый анальный метод проверки файла на аутентичность?
>какой самый анальный метод проверки файла на аутентичность?
Я хз. Но я бы попробовал прочитать видео ффмпегом. Если читается, то значит без приписок.
С фото наверн тоже аналог есть.
Если тебе нужно убрать все лишнее, то проще всего перекодировать.
Иначе нужно обрабатывать КАЖДЫЙ контейнер отдельно, и городить логику сплитинга мержинга (учитывать, что у видео может быть несколько дорожек озвучки, или субтитры, например. или теги в музыкальных форматах)
>Если читается, то значит без приписок
Не факт, он вполне может пропустить все до обнаружения контейнера, обработать его содержимое, а на остаток забить.
Бля, не прокатило. Пойду капать
спс
им это нахуй не надо, отбитый красноглазик
Блять я попытался к проекту линуксовому гугл-тесты подрубить и ахуел, какого хуя Эко система плюсов такая уебищная и сложная?
Ну гоняй QTest, если гугловские тебе не нравятся. Проект то в итоге от Qt зависимостей не будет иметь.
Охуенно пиздец, когда уже делал что то, задротина ссаная.
Самый анальный - только ЖПЕГ. Тебе нужно реализовать поддержку всех контейнеров, никакой общей проверки нет (но тебе не нужно поддерживать все кодеки, например).
В итоге обосрался. Мерж распараллелить не смог, постоянно смотрел в референсы по каждому чиху, и все это было медленно, больно, и вообще наговнокодил, хотя старался придерживаться принципов SOLID. Два раза просил перенести срок сдачи. Сдал им свой opus magnum через две недели, и уже неделю нет ответа. Пришел к выводу, что я - ебучий макак нужно больше практики.
Посоветуйте где взять задачи, решая которые можно натаскаться на решение настоящих повседневных рабочих проблем, подтянуть знание STL и повысить самооценку.
Хотел освежить свои навыки, полгода не кодил же. Да и не зря взялся, как оказалось.
У сортировки слиянием же минимальное ограничение по памяти равняется памяти исходного массива или я что-то недопонимаю?
Не в этом случае. При внешней сортировке размер сортируемого массива данных значительно больше объема доступной оперативной памяти (M), его в ней просто не уместить.
Поэтому он читается кусками размера M, сортируется как угодно и сбрасывается на внешнее хранилище отсортированными кусками. Потом эти куски читаются одновременно во входные буферы, объединяются и пишутся на место оригинального файла.
Здесь описано подробнее. https://en.wikipedia.org/wiki/External_sorting
>"1 Байт обычно означает 8-битную порцию памяти. В этом смысле байт представляет собой
единицу измерения, которая описывает объем памяти в компьютере, причем 1 Кбайт
составляет 1024 байта, а 1 Мбайт — 1024 Кбайт. Однако в C++ байт определен по-другому.
Байт C++ состоит из минимального количества смежных битов, достаточного для того,
чтобы вместить базовый набор символов для реализации. Другими словами, количество
возможных значений должно быть равно или превышать число индивидуальных символов.
<...>
С другой стороны, в интернациональном
программировании могут использоваться намного большие наборы символов, такие как
Unicode, поэтому в некоторых реализациях могут использоваться 16-битные или даже 32-
битные байты. Для обозначения 8-битного байта иногда используется термин октет"
Я всегда думал, что байт - это байт и он всегда равен 8 битам (ну, может иногда 9), а тут выходит, в C++ под байтом понимается немного другое.
И что это вообще значит?
>минимального количества смежных битов, достаточного для того,
чтобы вместить базовый набор символов для реализации
Это символы, с помощью которых может быть записан исходный код? Ненавижу, когда в книгах ставится какой-то тезис, но потом он нигде не объясняется. Соре, если вопрос элементарный, можешь назвать идиотом, но объясни, плиз.
1 байт это 8 бит, не переживай. Исключением являются всякие ебанутые системы, которым по 40 лет.
Благодарю
Как-то немного странно описано. Конечно, байт — char, unsigned char, std::byte — должен вмещать символы из стандартного набора (хранятся в char) и быть как минимум 8 бит (чтобы с помощью char можно было кодировать UTF-8).
Но вообще его размер выбирается как размер минимально адресуемого куска памяти, а не из соображений кодирования базового набора символов.
>причем 1 Кбайт
>составляет 1024 байта, а 1 Мбайт — 1024 Кбайт.
Наглое гонево. 1024 байта - это кибибайт, а килобайт - это 1000 байт. Винда тоже считает, что гигибайт - это гигабайт.
Ну йоу, это же упрощения. Конечно, кибибайт, но их тупо непривычно использовать простым смертным, которые привыкли к стандартным единицам измерения. Поэтому по соглашению, 1 килобайт = 1024 байта. Так просто принято.
Но да, фактически, 1 килобайт = 1000 байт.
>Поэтому по соглашению, 1 килобайт = 1024 байта. Так просто принято.
Срочно вытравлять. При переходе на гигабайты разница достигает 10%.
Всем насрать на СИ (Систему Интернациональную). Что физикам, что айтишникам.
СИ жопой спроектирована.
Скажи ещё что скорость света не равна единице.
Скинь свой код, я как-то делал абсолютно тоже самое. Только я использовал in place parallel merge sort написанный с нуля где часть кода была написанна на avx intrinsicts, для сортировки блоков и priority queue для слияния отсортированных блоков ( на самом деле там было несколько вариантов алгоритвом слияния, priority queue был дефолтным ). В качестве либы для потоков использовал Intel TBB. Вообще там я долго возился с оптимизациями, прифилировал и замерял производительноть практически каждой инструкции. Но на моей машине все упиралось в memory bandwidth на фазе сортировки ну и соответственно IO делей хоть я и использовал всякие техники для оптимизации IO и memory paging.
Ты слишком крут.
Я едва наговнякал параллельную сортировку на тредах из STL с интросортом, и слияние при помощи priority queue. Пытался его распараллелить, но не осилил вовремя. Рожал это с перерывом на сон и еду в течение двух недель.
Не знаю зачем это тебе. Посмейся хоть https://my.mixtape.moe/pfruig.7z
Собрать не смог на Arch Linux GCC 7.1.1
make[2]: No rule to make target 'CMakeFiles/large_file_sort.dir/src/settings.cpp.o', needed by '../tests/check_sort_order'. Stop.
Но беглый осмотр кода, показался мне слишком запутанным с этими разными классами, и я не понял момента с потоками. Ты создаешь тред пул на n потоков и потом читаешь туда n чанков при заданном лимите в 512 мб это уже получает 512 n что на 8ми ядерной системе уже будет уже 4 гб памяти только для данных. Да и использовать поток для сортировки каждого блока мне кажется не лучшей затеей, мне кажется работадатель прежде всего хотел бы увидеть как ты реализуешь параллельный алгоритм сортировки. Покури divide and conqueror алгоритмы типа мерж сорта которые хорошо паралеллятся, хоть он и не inplace по дефолту, но существуют inplace реализации, конечно не так просты в реализации как оргинальный алгоритм, но если не заморачиваться над производительностью то реализация в лоб тоже не плоха и достаточно проста. А можешь вообще юзать memory mapped file в качестве auxiliary массива.
И кстати мелочи, но все же, твоя очередь с названием Atomic ничего общего с atomic не имеет, она Blocked. Могут подумать что ты не шаришь в этом.
А все, допер, внешняя жи. Спасибо.
А я и правда не особо шарю.
Я использовал там доморощенный контроллер выделения памяти вместо аллокаторов, потому что не знал как их использовать. Не знаю и сейчас, лол. Он делит заданный объем памяти на определенное количество "слотов".
В такой слот читается кусок исходного массива, затем слот перемещается в задачу сортировки, которая в свою очередь скармливается пулу потоков. В этот же пул отправляется ещё одна задача, которая по завершении сортировки запишет содержимое слота во временный файл на диск. И так до конца исходного массива.
Когда "слот памяти" выходит из scope, он сигнализирует об окончании своего существования из деструктора в контроллер памяти. Таким образом контроллер делает очередной слот доступным. В итоге используется только заданный объем памяти плюс оверхед хуй знает на что где-то в пять мегабайт. По умолчанию предел выделяемой памяти равен 512 МБ, но можно указать другое значение из командной строки.
Спасибо за совет мудрый, так и сделаю. Иначе мне нехуй в этой профессии делать.
>Нужно было сделать за неделю многопоточную внешнюю сортировку с ограничением по выделяемой памяти, используя только STL.
Мне одному, блядь, кажется, что "многопоточная" - то не о тредах на ЦП, а о N-way merge?
https://www.autoitscript.com/site/autoit/ и быстро решительно иди нахуй с таким отношением.
спасибо и тьфу на байтоебов))
>Compatible with Windows XP / 2003 / Vista / 2008 / Windows 7 / 2008 R2 / Windows 8 / 2012 R2
оу вей, оно 10ку не поддерживает??
Зато десятка поддерживает говно еще с икспи. Где-то книжка даже была про long term support в сперме, где рассказывалось как в хп и висте даже старые баги эмалировали чтобы софт на них накостыленный работал.
Читал что спп это тот же си только с классами, пояснити за это.
Спасибо, Максим
воу, кокой грубый))
да уже все запустилось, прикольная штука. а как можно кому-нибудь на комп секретно установить этот аутольт, чтобы прожки на нем запускались?))
Чем докажешь что ты не монада?
я к тому, что называть кресты "С с классами", глупо
Какое отношение это имеет к крестам?
Ты дверью ошибся, съебись.
Ткните ссылкой в торрент. Там этих вижул студий 150 разновидностей.
Компилятор.
int i = 0;
While (1) {
i++;
std::string nameBegin("file"), extension(".avi"), fullname;
fullname = nameBegin + i + extension;
// do smth w fullname
}
Качай Айвора Хортона и соответствующую версию VS
если тебе принципиально VS - качаешь community edition, тебе хватит. Бесплатно, с офф сайта
double f(int x)
{
return (pow(x, -6) - 15 pow(x, -3)) / (5 - pow(x, -3)) + pow(((pow(x, -3) - 9) / 25 - pow(x, -6)), -1)((pow(x, -3) / pow(x, -3) - 5) - 4 pow(x, -3) / (pow(x, -6) - 10 pow(x, -3) + 25));
}
Скайпы и прочие средства коммуникации не передают же все данные через помежуточный сервер?
Возвращает double
Если точно с, а не с++ и собираешься изучать это по K&R, ставь codelite c mingw https://www.codelite.org
аноны, сап, вкатился только что, объясните почему так
то есть, там же бляжд не должно быть хелло ворлд
Что не так?
http://en.cppreference.com/mwiki/index.php?title=Special:Search&search=pow
>>1031012
Нагуглил для тебя: STUN, UPnP
UDP hole punching
Я хз, как это точно в код-блокс, проверь что ты запускаешь программу через debug->start
я вкатился минут 5 назад
solved
Заместо звёздочки • пишу, звёздочка уходит в разметку.
Прочитал главы про классы, и там много воды и недосказанностей.
Картинка 1.
Т1 наследует Т2. При этом все члены Т1 переносятся в Т2. Насколько я понял, переопределить можно только виртуальные методы. И через =delete можно удалить любой метод. Выходит, наследуемый класс может только дополнять предка, и очень ограниченно его изменять?
1. Как сделать так, чтоб в 45 строчке вызывался только конструктор для Т2, без Т1. Например, какая-то инициализация данных замещается другой и старая уже не нужна. Можно конечно в T1 сделать ещё один конструктор и в T2() вызывать именно его.
2. Размер T1 - 4 байта, Т2 - 8 байт, то есть старая 'а' из Т2 ещё жива. Как получить к ней доступ без функции T1::аа()? Из того, что я смог придумать работает только жуткое static_cast<T1&>(h).а, остальные варианты порождают временые копии, вызывают всякие деструкторы и ругаются на lvalue.
3. Есть ли возможность изменить тип 'а' или вовсе удалить это поле у потомков? Не вижу никаких технических причин, почему классы могут только расширяться. Если не использовать виртуальных методов, то это будет просто более краткой записью.
4. Почему если я объявляю деструктор виртуальным, то вызывается всё-равно оба? По видимому в ~T2() неявно вызывается ~Т1() для наследуемой части, верно?
5. Про new/delete. Предположим, существует массив на 200 мб. Для того что бы добавить один элемент, нужно выделить ещё один массив на 200 мб памяти (+1 элемент), скопировать туда первоначальный массив и только потом его удалить. То есть фактически для функционирования программе нужно в два раза больше памяти, чем она реально потребляет. Тем не менее все вокруг пользуются new/delete (даже, если верить книге, STL работает по умолчанию через них) и никого нисколько не задевает эта проблема. Это нормально? Я немного не понимаю как это вообще так.
Чем был плох сишный realloc? Немного допилить, чтоб оно не требовало непрерывного приведения типов, да и всё.
6. Если я в объявлении T1(const T1& n) пропущу const, это существенно? Компилятор сам в тривиальных случаях довешивает const, inline и прочее или надо каждый раз писать всякие const char• const str, лол?
Картинка 2.
7. Что имелось ввиду то про const? В книге это пункт 18.5.1, но в реальности всё работает вполне логичным образом.
8. void• operator new() В книге ничего про это нет, случайно в подсказках ide увидел такую конструкцию. Выяснил, что можно перегружать даже оператор ->, только как это использовать не совсем ясно. Посоветуйте хорошую книгу или статью про перегрузки, пожалуйста.
9. Использую qtCreator+cmake. Есть проект, в его папке находятся файлы h, cpp, CMakeLists.txt и CMakeLists.txt.user. Как-то по нормальному его можно скопировать в другую папку? Если не удалять CMakeLists.txt.user, то он лезет в оригинальные директории. Заменять в нём пути через поиск попахивает извращением, а если удалять этот файл, то заместо красивых папок "Release"/"Debug" там чудовища. Это мелочь, конечно, но всё же. Может быть как-то в CMakeLists.txt можно строго определить некоторые настройки из CMakeLists.txt.user, не знаю.
10. Есть h-файл (картинка 3) c реализацией функций(в нём не только определения), в нём обычный #ifndef, но если я через include подключаю его более чем в одном cpp файле, то он ругается на multiple defenition функций. Если вынести реализацию в cpp файл, который цеплять в CMakeList.txt, то всё ок. Если явно вставить это в код в двух разных cpp, то та же ошибка. То есть #ifndef работает как будто независимо. Нельзя создать немного кода в h-файле, так чтоб для подключения не приходилось вообще трогать CmakeList.txt? Прощу прощения - это очень-очень нубский вопрос, но мне просто прочитать негде, в книгах, что имеются, про это вообще ничего нет, а искать что-то очень сложно, страницы по две-три минуты открываются, если вообще открываются. Сейчас же новые веб технологии - страницы жутко тяжёлые.
Заместо звёздочки • пишу, звёздочка уходит в разметку.
Прочитал главы про классы, и там много воды и недосказанностей.
Картинка 1.
Т1 наследует Т2. При этом все члены Т1 переносятся в Т2. Насколько я понял, переопределить можно только виртуальные методы. И через =delete можно удалить любой метод. Выходит, наследуемый класс может только дополнять предка, и очень ограниченно его изменять?
1. Как сделать так, чтоб в 45 строчке вызывался только конструктор для Т2, без Т1. Например, какая-то инициализация данных замещается другой и старая уже не нужна. Можно конечно в T1 сделать ещё один конструктор и в T2() вызывать именно его.
2. Размер T1 - 4 байта, Т2 - 8 байт, то есть старая 'а' из Т2 ещё жива. Как получить к ней доступ без функции T1::аа()? Из того, что я смог придумать работает только жуткое static_cast<T1&>(h).а, остальные варианты порождают временые копии, вызывают всякие деструкторы и ругаются на lvalue.
3. Есть ли возможность изменить тип 'а' или вовсе удалить это поле у потомков? Не вижу никаких технических причин, почему классы могут только расширяться. Если не использовать виртуальных методов, то это будет просто более краткой записью.
4. Почему если я объявляю деструктор виртуальным, то вызывается всё-равно оба? По видимому в ~T2() неявно вызывается ~Т1() для наследуемой части, верно?
5. Про new/delete. Предположим, существует массив на 200 мб. Для того что бы добавить один элемент, нужно выделить ещё один массив на 200 мб памяти (+1 элемент), скопировать туда первоначальный массив и только потом его удалить. То есть фактически для функционирования программе нужно в два раза больше памяти, чем она реально потребляет. Тем не менее все вокруг пользуются new/delete (даже, если верить книге, STL работает по умолчанию через них) и никого нисколько не задевает эта проблема. Это нормально? Я немного не понимаю как это вообще так.
Чем был плох сишный realloc? Немного допилить, чтоб оно не требовало непрерывного приведения типов, да и всё.
6. Если я в объявлении T1(const T1& n) пропущу const, это существенно? Компилятор сам в тривиальных случаях довешивает const, inline и прочее или надо каждый раз писать всякие const char• const str, лол?
Картинка 2.
7. Что имелось ввиду то про const? В книге это пункт 18.5.1, но в реальности всё работает вполне логичным образом.
8. void• operator new() В книге ничего про это нет, случайно в подсказках ide увидел такую конструкцию. Выяснил, что можно перегружать даже оператор ->, только как это использовать не совсем ясно. Посоветуйте хорошую книгу или статью про перегрузки, пожалуйста.
9. Использую qtCreator+cmake. Есть проект, в его папке находятся файлы h, cpp, CMakeLists.txt и CMakeLists.txt.user. Как-то по нормальному его можно скопировать в другую папку? Если не удалять CMakeLists.txt.user, то он лезет в оригинальные директории. Заменять в нём пути через поиск попахивает извращением, а если удалять этот файл, то заместо красивых папок "Release"/"Debug" там чудовища. Это мелочь, конечно, но всё же. Может быть как-то в CMakeLists.txt можно строго определить некоторые настройки из CMakeLists.txt.user, не знаю.
10. Есть h-файл (картинка 3) c реализацией функций(в нём не только определения), в нём обычный #ifndef, но если я через include подключаю его более чем в одном cpp файле, то он ругается на multiple defenition функций. Если вынести реализацию в cpp файл, который цеплять в CMakeList.txt, то всё ок. Если явно вставить это в код в двух разных cpp, то та же ошибка. То есть #ifndef работает как будто независимо. Нельзя создать немного кода в h-файле, так чтоб для подключения не приходилось вообще трогать CmakeList.txt? Прощу прощения - это очень-очень нубский вопрос, но мне просто прочитать негде, в книгах, что имеются, про это вообще ничего нет, а искать что-то очень сложно, страницы по две-три минуты открываются, если вообще открываются. Сейчас же новые веб технологии - страницы жутко тяжёлые.
1. Конструктор родительского класса будет в любом случае вызван перед вызовом конструктора наследуемого класса, при этом, если конструктор не указан явно, будет выполнена попытка вызова конструктора по-умолчанию.
2. Измени области видимости переменной на protected, к примеру
3. Удалять члены из родительского класса нельзя. Это привело бы к печальным последствиям, к примеру, взять урезание типов (когда классы передаются по значению, а не по указателю или по ссылке)
4. Сначала вызывается деструктор наследуемого класса, потом родительского в порядке обратном инициализации конструкторов, насколько я помню.
5. Ты не можешь постоянно хранить данные в стеке (смотри что это такое), при этом размер стека на поток очень ограничен (например в моем линупсе он 8 мегабайт на процесс), конечно, можно увеличить лимит стека, только вот принципа работы стека это не меняет.
7. Например, у тебя есть два объявления:
a. void T1::a() const; и
b. void T1::a();
Тогда если в конструкторе с переданным в него константным объектом ты вызовешь метод n.a(), то будет вызвана перегрузка a, а если конструктор определен как:
T1::T1(T1 &n) { n.a(); }
тогда будет вызвана перегрузка b
8. Ну ебать
9. CMakeLists.txt каак правило, является единственным скриптом, ответственным за генерацию проекта CMake (хотя есть и множество ислючений)
>> инициализации конструкторов
вызова конструкторов, конечно же
>>1031990
10. За объявления отвечает one definition rule, его сразу сложно описать, так что лучше тебе посмотреть на cppreference и заодно прочитай про линковку.
Если не хочешь сильно заморачиваться, можешь просто добавить inline к объявлению твоего метода и тогда все должно заработать.
Ты что auto_ptr использовал где ни попадь. Сильно много с тех времен из станарта не удалили или дело в том, что студия криво импортирует старый проект?
> студия криво импортирует старый проект?
Вроде ровно, предложила обновить целевую платформу, но что-то пару проектов так и не осилила. Там какие-то батники, из которых ошибки лезут, выход с кодом 2 и прочая ересь. Ну и вообще ошибок мне 1386 штук накидал. Мне теперь руками всё это пердолить? Я, если что, это говно вообще не трогал раньше, но у людей по 2012 студией собиралось.
Ну вот например на пиках обновил до 141, а ему всё 140 мерещится. Можно ещё раз обновить, он напишет - да, обновил, заебись теперь, но нихуя.
Ебать. Ну с такой хуйней я точно никогда не сталкивался. Можно попробовать батником каким-нибудь пройтись по всем файлам проектов (vsproj которые) и посмотреть вхождения 140 версии, больше мне на ум ничего не приходит.
Я оттого давно и пересел на внешнюю систему сборки, потому что обновить проект на студии это как обновлять линупс до нового релиза, без еботы почти никогда не бывает.
Выбираю между вкатом в системщину под линукс (embedded, драйвера итд) и чем то рядом с МАШИН ЛЕРНИНГОМ и обработкой изображений.
Есть идеи?
В бабло вкатывайся
специализируйся, углубляй знания того что уже дает работу, денежку
не распыляйся на сторонние вещи
> Саморазвитие
> На плюсах
В ближайшие 10 лет работы на крестах будет все меньше и меньше, в целом все будет медленно загнивать.
Можете скринить
10 лет назад так же говорили.
Однако я в ДС год назад работу джуном меньше чем за неделю нашел.
он на бекенде геймдейва, зп там маленькие, вернее неадекватные требуемым скиллам, но работка есть
>обновлять линупс до нового релиза, без еботы почти никогда не бывает
Диванного кукаретика видно сразу. Апнул версию абанты уже как минимум 3 раза. Самое еботное что при этом нужно было делать — перезагружать ЭВМ. Ну это, впрочем, как при любом обновлении ядра.
ты доебан попробуй обновить у которого релизы раз в пятилетку выходят
А если у тебя была ката от амуде и ты ставил фглрх, вот тогда то и начинается поебота, если его не удалить
По сути в очереди должны храниться все точки? Может из очереди точки кинуть в массив?
я говорю о том, что это контрольный выстрел, там дохуя проблем вылазит, перелезь со своей попсы на что-то другое (только не на rolling версию) вероятность прихуеть от смены версий увеличится
привет
кто нить пробовал линукс поковырять, например допилить шифрование и доп функционал?
я не про бужедор ось, а просто подпилить что то к существующей оси
Нет, например добавить в дебиан шифрование. Весь входящий трафик, а также информацию на диске шифровать.
Сделай микроядро из монолитного
>Весь входящий трафик, а также информацию на диске шифровать.
Гугл не для нас с тобой, детка, мы летаем выше!
Нихуя не понял. Что за col и row? Что такое k, и почему итерируется только до 4? У графа какая-то сомнительная реализация. Почему не используешь контейнеры?
А по делу, visited можно хранить индекс предыдущей вершины, а когда найдешь искомую вершину пройтись по visited в обратном порядке. Если путь неважен, то вместо вершины можно сумарную дистанцию пихать.
щас бы пердолиться даже в винде, вметсо нажатия одной кнопки, лучшей IDE и волшебного дебаггера.
Вот всегда не понимал этого. Причем обычно этим занимаются те, кто пишет на всякой хуйне вроде ruby или php.
То есть как байтоёбить, так это пердолинг. Только байтоёбство и отсутствие абстрактной хуиты приносит пользу.
А вот то что ты git юзаешь из консоли и набираешь код в vim'е - пользы тебе не дает никакой.
Всю жизнь сидел в студии, юзил решарпер, отладчик и оконные приложения для контроля версий. Вот зачем?
кнопкодрочер уровня бох. з.ы. большего говна чем вс не сыскать, даже джетбрейнс не такое говно.
я ходил на собесы в москвоский Яндекс недавно. Спецом спрашивал про студию у людей, т.к. заебало сидеть с красноглазой парашей.
Так вот - мегакрутые чуваки, которые меня собесили (бывшие работники гуглов\майкрософтов и прочего), все пользуются студией и им норм. А илитарии с двачей юзают исключительно вим и тратят хуеву гору времени на то, что нормальные люди делают 1 клико.м
Помню у меня в универе был один такой арчеблядок. У него вечно бомбило когда я его спрашивал вопросы по железу. Например "от скольки вольт работает процессор", или чем "RISC отличается от CISC", или "чем отличаются защищенный режим от реального"?
Вот скажите, линяри, почему пердолиться с софтом это благородно, а пердолиться с железом - зашквар? Компьютер - это электронное устройство. Я считаю что его надо знать. А компьютеры поставлять в наборе "спаяй сам". А то раньше мой батя звуковуху сам паял, были времена.
Упрощение - это хорошо.
С твоей мамкой. Но мы не братья, он её в жопу ебал с:
которые сделали топ2 поисковый движок и кучу ин-хаус вещей для машинного обучения
>поисковый движо
который кроме рекламы и говна нихуя не находит, впрочем как и гуглапараша
>для машинного обучения
хуинного, бигдата и машинленинг бесполезная хуета для развода лохов
> ...
> line 12: coat << "Vvedite ocenki, dlya vihoda napishite -1";
> ...
> 12:5: error: 'coat' was not declared in this scope
> 'coat'
>'COAT'
Быть может там всё же должен быть cout?
Ничего плохо, если правильно синхронизируешь. Ну и не используешь потоко-зависимые хендлы, которые нельзя создавать в одном потоке, а использовать в другом
Пишу приложение для расчета зарплаты на QT + SQLite. Уже охуел от архитектуры. Посоветуйте книги по ООП-дизайну приложений, чтобы не охуевать так.
Двачую этого
смотри флаги с которыми скомпилин кьют
Самый тупой вариант: собрать дебуг-версию и подрубить к дебуггеру. Что бы ни было проблемой, ты это найдёшь.
http://ideone.com/sywQxB
>У него вечно бомбило когда я его спрашивал вопросы по железу.
А при чем тут те, к кому ты обращаешься?
>Компьютер - это электронное устройство. Я считаю что его надо знать
Нахер иди. Это нужно знать только если ты школьник с васма и разрабатываешь вирусы. Там постоянно ведутся вялотекущие срачи об архитектуре штеуда и его реальном и защищенном режимах. Зачем все это знать человеку, который не пишет драйверы или малварь? Не навязывай людям свои интересы, и не будешь послан или унижен, не ответив, в чем разница между pop и ROP
Можно ли безболезненно удалить один экземпляр void operator++?
Код не мой. Его не правили уже лет 20.
Я не виноват, что Страуструп намеренно придумал язык, в котором нет никакой логики. Такая хуйня даже под наркотиками не может прийти в голову. Он намеренно делал ебанутый язык, чтобы не пердоля 5 лет книги по нему нельзя было вкатиться.
>Страуструп намеренно придумал язык, в котором нет никакой логики
Нет или ты не видишь?
> Такая хуйня даже под наркотиками не может прийти в голову.
Твой вариант синтаксиса для перегрузки префиксного и постфиксного ++
Ты просто сектант.
Все что придумал Страуструп -- это лютая нечеловеческая бессмысленная хуета. Достаточно выучить любой функциональный язык, чтобы это понять.
>Достаточно выучить любой функциональный язык
С твоим подходом вряд ли ты выучил хоть один из них, лол.
Много кода дублируется, и возник вопрос, можно ли сделать из
x3::rule<class %rule_name%, %SynthAttrType%> %rule_name% = "%rule_name%";
auto const %rule_name%_def = %some_nonterminals%;
BOOST_SPIRIT_DEFINE(%rule_name%);
что-то вроде
MakeRule<%SynthAttrType%> %rule_name% = %some_nonterminals%;
?
Ну, во-первых, стандартный cmd.exe пиздецки уебищный и неудобный, Cmder поприличней будет. Во-вторых, есть встроенные linux-комманды (типа "ls", "cat", "sh" и т.д.).
В принципе, может кому-то и удобно стандартную консоль использовать, и наверняка многим linux-комманды не нужны, я просто предложил как вариант.
Хорошо хоть не с люменами.
Никогда не любил студии, лично для меня они неудобные. Консоль, к тому же, в отличие от IDE, дает тебе полный контроль над файлами. Не люблю я, когда студия сама решает, что и куда ей девать.
Плюс, в процессе программирования нет ничего лишнего, только консоль и текстовый редактор. Все максимально минималистично.
Я не говорю, что файлы пропадают из рабочей папки проекта. Я просто хочу самостоятельно контролировать каждый файл. Я не хочу, чтобы в папке с проектом лежали еще какие-то спец. файлы (например .toml файл у rust). Я не хочу нажимать на ебаные кнопки, при этом не понимая, что конкретно они делают.
Не понимаю зачем использовать Vim, если есть нормальные текстовые редакторы, типа Sublime Text, например. Консоль использую чисто для компиляции/запуска программы.
>нажимать на ебаные кнопки, при этом не понимая, что конкретно они делают
обычно на них написано весьма конкретно что они делают.
>Я просто хочу самостоятельно контролировать каждый файл
но ты и так контролируешь все файлы ПРОЕКТА, все остальное это выхлоп компилятора и системы сборки, и они в папку проекта не лезут.
define 'нормальные текстовые редакторы'.
Вим тащит своим функционалом. Но чтобы его использовать нужно просто привыкнуть.
Блядь, ты хоть читаешь то, что тебе выдает компилятор?
Ну чтож вы крестаны? Никто не знает?
>обычно на них написано весьма конкретно что они делают.
Я имею ввиду на более низком уровне. Какие параметры передаются компилятору, линкеру. Мне важно это контролировать.
Это все в свойствах проекта содержится, где твоим параметрам еще быть.
>>1033460
Спроси у какого-нибудь кто пользуется вимом. Вроде как там можно мутить крутые макросы.
>Vim (сокр. от Vi Improved, произносится «вим») — свободный текстовый редактор, созданный на основе более старого vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, возможными благодаря расширениям и надстройкам.
>Одна из главных особенностей редактора — применение двух основных, вручную переключаемых, режимов ввода: командного (после запуска редактор находится в нём) и текстового (англ. insert mode, режим непосредственного редактирования текста, аналогичный большинству «обычных» редакторов). Существуют и другие режимы.
> Вим тащит своим функционалом
> Вроде как
Ты сам то им пользовался? Нах ты утверждаешь, при том, что сам не можешь быть уверен. "Я им не пользовался, но это охуительный редактор."
Ахуительный редактор. Я, когда пытался его освоить, так ахуевал, что словами не описать говно какое-то, имхо
Это прежде всего инструмент, под свои задачи. Кто как хочет тот так дрочит, что ты сразу раскукарекался: "гувну какуето, засен ано нузна?"
Когда я сказал, что это говно? Ты сказал:
> Вим тащит своим функционалом
Я задал логичный вопрос:
> Чем именно?
И тут оказывается, что ты этим редактором вообще не пользовался
>Спроси у какого-нибудь кто пользуется вимом
А дальше ты отвечаешь текстом из википедии.
Вопрос: нахуя писать, что это крутой текстовый редактор, если ты, мало того, что не можешь объяснить почему именно, так еще и не пользовался им вообще.
Посмотрел, годнота. Беру :)
В мире С++ возможно сделать 100% верное и правильное автодополнение и статический анализ. Когда ты просто делаешь ставишь точечку, и тебе IDE показывает, что с этим можно сделать. Такая самодокументация. Ошибки в коде, которые тебе IDE услужливо подсказывает, чтобы двадцать раз не перекомпилировать. Подсказки, предложения по рефакторингу.
А ты выбираешь карго-культ тех времен, когда топовой тачкой был пентиум.
Ты спросил, я ответил. Тебя вообще ебет пользовался я им или нет?
>Вопрос: нахуя писать, что это крутой текстовый редактор, если ты, мало того, что не можешь объяснить почему именно, так еще и не пользовался им вообще.
Потому что мне так сказала википедия, например.
С этим, пожалуй, соглашусь. Это одно из немногих преимуществ IDE перед текстовыми редакторами.
По-моему, нехуй пиздеть, если не знаешь точно.
че за даун))
Может тогда проще сделать в ide режим минималистичного функционала, чтобы кроме текстового файла и подсветки с автодополнением ничего не показывалось?
VS вроде поддерживает перепиливание компоновки окон?
Неужели не существует ни одного "умного" текстового редактора, который умеет просматривать импортированные файлы и показывать какие есть функции/свойства у объекта? А ведь вполне реализуемо.
Хмм.. может самому сделать?
Для разбора шаблонов чуть ли не пол компилятора придется написать, наверное.
И то верно. Сложно, но ведь не невозможно
>Неужели не существует ни одного "умного" текстового редактора, который умеет просматривать импортированные файлы и показывать какие есть функции/свойства у объекта?
Completion с помощью clang сейчас не завёз в свой текстовый редактор только ленивый.
Расскажите о разнице между типами unsigned int и unsigned long. Какой тип выбрать для использования аппаратных регистров целиком?
Long больше
1) LGPL (под которой выпускается Qt) не обязывает к распространению исходников, всего лишь надо предоставить любой способ замены либ Qt на произвольные, например - распространять .obj-файлы и инструкцию о компиляции.
2) Пока он ничего не распространяет, он вообще ничего не должен.
>>1033289
В этом куске всё правильно, ищи ошибку в другом месте.
>>1033365
>Эта хрень имеет какой-то смысл?
Первое - это прединкремент. Второе - постинкремент. Поищи обсуждение в прошлых тредах.
>>1033410
Предлагаешь писать string("huypizda") вместо "huypizda"?
>>1033416
>BOOST_SPIRIT_DEFINE
Это макро. Вместо макро может быть только другое макро, тимплитом ты его не заменишь (если ты не знаешь, что делает это макро.
В бусте не шарю.
>>1033424
А у тебя его и не было.
>>1033425
Сколько строк/байт в самом большом твоём проекте?
>>1033458
>Я имею ввиду на более низком уровне. Какие параметры передаются компилятору, линкеру. Мне важно это контролировать.
Специальная страничка в свойствах есть, где это написано, и напротив большинства свойств написан компиляторный свитч.
>>1033522
КутыКректор тебе подойдёт, как и мне, но он не без недостатков.
>>1033540
Clang Code Model.
>>1033573
>Какой тип выбрать для использования аппаратных регистров целиком?
1) Посмотреть размер регистров.
2) Использовать uint32_t, uint64_t и так далее.
1) LGPL (под которой выпускается Qt) не обязывает к распространению исходников, всего лишь надо предоставить любой способ замены либ Qt на произвольные, например - распространять .obj-файлы и инструкцию о компиляции.
2) Пока он ничего не распространяет, он вообще ничего не должен.
>>1033289
В этом куске всё правильно, ищи ошибку в другом месте.
>>1033365
>Эта хрень имеет какой-то смысл?
Первое - это прединкремент. Второе - постинкремент. Поищи обсуждение в прошлых тредах.
>>1033410
Предлагаешь писать string("huypizda") вместо "huypizda"?
>>1033416
>BOOST_SPIRIT_DEFINE
Это макро. Вместо макро может быть только другое макро, тимплитом ты его не заменишь (если ты не знаешь, что делает это макро.
В бусте не шарю.
>>1033424
А у тебя его и не было.
>>1033425
Сколько строк/байт в самом большом твоём проекте?
>>1033458
>Я имею ввиду на более низком уровне. Какие параметры передаются компилятору, линкеру. Мне важно это контролировать.
Специальная страничка в свойствах есть, где это написано, и напротив большинства свойств написан компиляторный свитч.
>>1033522
КутыКректор тебе подойдёт, как и мне, но он не без недостатков.
>>1033540
Clang Code Model.
>>1033573
>Какой тип выбрать для использования аппаратных регистров целиком?
1) Посмотреть размер регистров.
2) Использовать uint32_t, uint64_t и так далее.
>зависит от железяки и битности
Как это? В C++ нет типа, который на любой платформе процецируется полностью на регистр?
>распространять .obj-файлы и инструкцию о компиляции.
По существу, если это "работа, которая использует библиотеку", тогда должна быть возможность линковки программного обеспечения с новой версией продукта, лицензируемого под LGPL. Самый часто используемый метод это сделать это использовать "подходящий механизм разделяемых библиотек для линковки". В качестве альтернативы разрешена статическая линковка если предоставлен исходный код или объектные файлы для линковки.[2]
https://ru.wikipedia.org/wiki/GNU_Lesser_General_Public_License
Ога
С++ (и даже C) - это высокоуровневый язык. Максимум того, что ты можешь найти - uint32_fast_t. Есть процессоры с 32-битными адресами и 64-битными регистрами. Есть и ARM - в 64-битных операциях пара регистров используется, как один, и никакой практической разницы между парой и одним регистром нет.
Если ты дошёл до использования регистров, ты пишешь под одну архитектуру, и размер регистров ты знаешь.
>С++ (и даже C) - это высокоуровневый язык
Да не, это хуево задизайненный низкоуровенный язык и еще один язык от него эту хуевость унаследовавший. Хотя в то время, когда С появился,пока все писали себе компиляторы сами и это проблемой не было.
Анон, кто нить пробовал переписать драйвер для какой нибудь железки. Например мп3 плеер, чтобы помимо всего прочего он отправлял данные (как делают антивирусы и многий другой софт);
>Предлагаешь писать string("huypizda") вместо "huypizda"?
Зачем, если можно писать "huipizda"s ?
Начиная с 14-го.
Или можно как-то с quickcontrols вытащить?
Можно либо использовать мобильные контролы на мобилках с мобильным QML, либо использовать десктопные виждеты на десктопе.
>Наследоваться от QTabBar, а потом что?
А потом с нуля всё обрисовывать ручками, писать всю логику вроде переключения табов и их анимации.
Какого хуя uint8_t выводится в std::cout как символ?
Как вывести эти значения как байты в 10-чной или 16-ричной системе?
как? я так понимаю мне нужно реимплементнуть paintevent, но не у qtabbar ведь? или нужно создать новый виджет, потом реимплементнуть addTab и каким-то образом пририсовывать полоску выделения снизу?
>Какого хуя uint8_t выводится в std::cout как символ?
Возможное объяснение тебя не устроит. uint8_t - это typedef char uint8_t на большинстве архитектур, а char - это тип для букв в Си.
Мне бы тоже хотелось, чтобы uint8_t выводился числом, а char - символом.
Чтобы не нужно было инклудить хедер? Программа потом линкуется с либой, где этот класс определен. Очень часто в файлах, которые я рассматриваю классы декларируется таким образом, но никак не используются. Т.е. если сделать Ctrl+F по файлу, то слово Hash там встретится 1 раз -- только в самой декларации. В таком случае можно эту декларацию удалить?
NetBeans+gcc.
Напиши кроссплатформенный (windows xp-7-8-10(metro-интерфейс тоже) x32x64, linux, MacOS) ежедневник с почтовым клиентом и интеграцией с мобильными (ios, Android 4 и выше, WP) приложениями (их тоже напиши)
> Класс в неймспейсе, если его задекларировать не его, он не отрезолвится
Я один нихуя не понял?
Просто, чтоб заебаться.
В ентерпрайзе до сих пор ms dos есть, а на вин хр еще очень много машин осталось.
Стандарт — охуенный.
Для флага -std=c++xx в cmake используют другое. set(CMAKE_CXX_VERSION xx), насколько помню
Языком вдоль уздечки подтяни.
Браузер свой запилим или джаваскрипт sasach_version ))
Что мы ради хеловротов учим си пюспюс
>Если я в объявлении T1(const T1& n) пропущу const, это существенно? Компилятор сам в тривиальных случаях добавляет const, inline и прочее или надо каждый раз писать всякие f(const char* const str) const {...}, даже для функции на одну строчку, лол?
Всё ещё очень интересно и любопытно.
>>1031990
Понятно местами, благодарю.
2. Кстати говоря, я подобрал. Можно использовать h.T1::a и h.T2::a для получения доступа к "а" предка и потомка. И как я сразу не догадался. Конечно, всё ещё не совсем понятно, зачем мне такой синтаксис.
>Браузер свой запилим
Форчонг/г пилит, можешь с ними поделать.
>>1034334
>f(const char* const str) const {...}
Второй конст не нужен, третий конст - только для методов конст-классов. Что ты порешь? Это консты с тремя разными ролями.
>это существенно?
Всего лишь не сможешь передавать часть констант, делов-то.
Представляешь себе, на msdos действительно нужен почтовый клиент, потому что без него сложно в энтерпрайзе.
>msdos действительно нужен почтовый клиент
Кстати, неплохая идея! Почтовый клиент с календарём под мсдос на псевдографике.
Есть ли какой-то традиционный синтакс/способ для обозначения членов класса с разными модификаторами доступа public, private, protected в документации? Цветом или еще как-то (звездочками, крестиками, плюсиками)?
Какой-нибудь стандартный стиль?
Прайвет часто ообозначают замком в ИДЕ, например. Про протектед не знаю.
msdos в энтерпрайзе это какое-нибудь управление станком с ЧПУ.
Ищу в гугле. Один ваш запрос — 50$. Первый бесплатно.
https://www.google.com/search?q=uml+protected
Когда программист ебланит и пишет костыли. Виртуальный деструктор может быть нужен только в базовом виртуальном классе, но явно не в унаследованном интерфейсе.
>Каких "таких"? Уточни вопрос.
Таких ебанутых, как на пике. Я до сих пор не понял зачем все это нужно. Класс Foo потом еще раз наследуется в Foo2, который в свою очередь наследуется в Foo3.
http://en.cppreference.com/w/cpp/language/static
The declaration inside the class body is not a definition and may declare the member to be of incomplete type (other than void), including the type in which the member is declared
Что за игра? Лучше бы в gd спрашивал. Хотя там тоже нет смысла.
Нужны скриншоты и насколько сложные штуки должен делать бот.
Думается, с таким подходом оно не сможет в реальном времени работать, а если и сможет, слишком это ненадёжно и кучи нерегулярных ошибок будут. Только миникарту и другие детали интерфейса потрогать есть смысл, ну или если игра двухмерная, конечно.
А если игра трехмерная? Как вообще тогда делают ботов для 3Д игор? Я именно про сложных ботов, способных самостоятельно гасить мобов, распознавать, умер ли моб, где умер, есть ли личные сообщения и приглосы. Про данжи пока не говорю.
Никак без АПИ не сделаешь. Все полноценные боты пишутся авторами игры.
Я думаю нет тут глубинного смысла. Тем более с такой иерархией наследования. Просто кто надергал кусков из гугла\SO и попытался слепить то, что скомпилится.
Снифаешь трафик между клиентом и сервером, пытаешься понять протокол.
Сложный бот читает память процесса игры
Читаешь память, перехватываешь функции в самой игре (обмен сетевыми данными и тд)
Для этого тебе потребуетсяя Winapi и скилл. Функции вроде WriteProcessMemory/ReadProcessMemory и тд.
Перехват пакетов на уровне Winsock (Send/Recv) и тд.
Это дело не легкое но интересное. Нужно хоть чуток АСМ-а еще знать.
Ну а че за хуйня у тебя ConsoleApplication3.cpp не ебу даже. В списке проектов смотри, жирным выделен активный. Может ты вхуячил гору проектов и выбрал пустой для запуска, а изменяешь совсем другой.
настолько, насколько это возможно. В чем моя ошибка?
ну чего ты
По-другому автоматическое расширение вектора ты не организуешь. Более того, std::vector тоже не может без констр. копирования (если я правильно помню).
Если php или java приложение работает в одном процессе, оно может выполняться на нескольких ядрах и потоках? Есть ли смысл брать процессор 6 ядер (12 потоков), вместо 4(4)?
Ядро - это физическая единица, поток - логическая. С помощью разных ухищрений разработчики могут упихать команды в одно ядро так, чтобы оно исполняло команды в два потока быстрее, чем в один (но в каждом потоке будет медленнее).
Обычно делают два потока на ядро, в Ксеон Фи 6 потоков на ядро.
>Если php или java приложение
Пошёл нахуй. Тут мёдом намазано? Как вы находите именно этот тред для своих уёбищных вопросов?
Все что ты написал понятно и ребенку, не нужно мне пересказывать вики. Чем оперируют ядра и потоки ты не назвал, и можно ли параллелить один процесс на несколько ядер и потоков, тоже не ответил.
Процесс может иметь несколько потоков, почти все ОС разносят потоки по логическим ядрам. Если твоё говно работает в несколько потоков (ГЦ, например, в отдельном потоке или внутри программы есть создание потоков), то смысл есть.
Спасибо за вменяемый ответ. Получается с ядрами работает ОС, с потоками ядер процессор уже сам? Собственно выбираю процессор между i5-7600K и Ryzen 5 1600. В райзене 6 ядер и 12 потоков, против 4 и 4 у интел. Поэтому возникла дилемма выбора, смогут ли большинство программ использовать много ядер, или же стоит выбрать высокую производительность в однопоточных задачах.
Там никто не шарит. Поэтому здесь спрашиваю. У меня есть путаница в голове, потоки на уровне ядра, потоки на уровне ОС, процессы, threads, fibers, actors, поток выполнения,конкурентность, параллелизм, и т.п, все это смешалось у меня в голове. Еще интерпретаторы и виртуальные машины, у них свои единицы выполнения, они же тоже как-то ложатся на процессы и потоки ОС.
А с чего ты взял что здесь "шарят"? Мы тут сремся за ide и не можем компилять хелоуворлды. Тут тебе спрашивать не чего.
Печально всё это. Никто не пытается понять общую картину получается. Джависты пишут под JMV и не знают, что происходит вне её. Кто пишет на C/C++, знает только как что работает в контексте C/C++. Джаваскриптеры вообще не имеют понятия о многих вещах, потому что этого нет в языке и в V8. Рубисты не знают о конкурентности и параллелизме ровным счетом ничего. На винде свои абстракции, на линуксе свои. У всех свои абстракции, и их так много, что можно ногу сломать.
Таненбаума читай иди, хрюря пампукская
А у тебя нет выбора, умник. Рулить тредами все равно будет менеджер ОС. И выделять процессорное время им, когда посчитает нужным.
Думаю, Bar пытается после своего деструктора выбвадь деструктор Foo, но не может, так как ты его не реализовал.
У виртуального деструктора в любом случае должно быть тело, даже если он чисто виртуальный.
лол.
https://habrahabr.ru/post/51398/
>>1035253
Вне класса же. Я хедер имел ввиду
class Sample {
public:
virtual ~Sample()=0;
};
Sample::~Sample() {
}
Пиздец какой-то. Теперь новая срань пикрил 3.
Студия без проблем жрёт варианты и без тела деструктора и с телом после = 0;
Но тогда ещё вопрос
Может ты забыл реализовать деструктор Bar?
>>1035206
Берёшь Process Explorer или другую тулзу для твоей ОС и смотришь активность потоков. Если у тебя один на 100% одного ядра - жопа. Если у тебя много с сопоставимой загрузкой - уже лучше. Берёшь свой php, java и запускаешь и пробуешь.
>>1035239
Ты запрещаешь существование деструктора для базового класса и потом другой класс от него наследует. Такого быть не может, деструктор должен быть всегда.
http://ideone.com/5wjvrN
Вот сообщения от GCC.
>Ты запрещаешь существование деструктора для базового класса
Нет, это просто чисто виртуальный деструктор. Его нужно реализовать в наследнике, но это не значит, что его вообще нет.
Обращайс.
1. Судя по всему у класса было 0 единиц трансляции (см. 2).
2.
Во втором случае была ошибка: автор перестал использовать класс foo, а отслеживание корректности неиспользуемых функций не требующих диагностики (т.е. не завязанных на инстанциацию) - оставлены на откуп реализации компилятора. MinGW/GCC во многих случаях не считают это ошибкой.
Правда ли то, что без реализации деструкторов всех классов в иерархии нельзя использовать класс (т.е. определить его)?
Да.
Да.
Веб макака, которая перекатывается в плюсы.
Для участия в opensource-проектах (дефис, блядь, это русский язык) нужны разные уровни знаний. Во многих продуктах велика доля кода уровня C. Если ты никогда в жизни этим не интересовался, ты сломаешь лицом сто граблей и прочитаешь несколько книг перед тем, как начнёшь писать надёжный код.
Лучше Python+Kivy
Смочь в ресты/си и не смочь в шарп? Это тип толстота такая?
glGenTextures
glBindTexture
glTexStorage2D
glTexImage2D
...
ты завернешь в какие-нибудь свои вызовы), ну и там еще дохуя либ потянется.
Действительно, проще использовать Qt.
>ты завернешь в какие-нибудь свои вызовы
По хорошему, под это дело нужно свои менеджеры писать, а для этого нужно представлять как будет выглядеть архитектура движка. А это уже довольно сложно.
Есть же.
В этом то и дело. Если начинать проектировать приложение без представления хотя бы общего вида архитектуры, в конечном счете все это выльется в дикий рефакторинг и расхочется работать дальше или все будет переделываться заново.
Переменная есть, только её имя не называется в предварительном объявлении. Означают то же самое, что и те, в которых есть названия параметров.
Спасибо!
Почему нельзя? К нему обратиться можно, просто это предварительное объявление (forward declaration), а сама функция находится где-то далеко в другом месте, и, возможно, к ней даже нет исходников, и она в какой-нибудь библиотеке, скажем. А для обращения к ней имена параметров знать не нужно, нужно знать только их типы.
>Что означают такие функции? У которых в аргументах есть тип, но нет имени переменной?
Ещё и тела нет. Совсем ппц. >_<
Жил один рыжий человек, у которого не было глаз и ушей. У него не было и волос, так что рыжим его называли условно.
Говорить он не мог, так как у него не было рта. Носа тоже у него не было.
У него не было даже рук и ног. И живота у него не было, и спины у него не было, и хребта у него не было, и никаких внутренностей у него не было. Ничего не было! Так что не понятно, о ком идет речь.
Уж лучше мы о нём не будем больше говорить.
Это скомпилируется, но не слинкуется.
Vim
Atom и миллион плагинов для разработки, сборки, дебага и прочей хуйни
пишешь простецкий make-файл и всё
по сути каждый cpp файл компилируется в объектные файлы, потом эти объектные файлы уже линкуются в исполняемый файл
Как ты ее закомпилил? А то я что-то гайды читал-читал, глядел-глядел, нихрена не понял. Все гайды какие-то древние, какие-то еще на 4 версию, какие-то на 5 с начала. Теперь надо качнуть все ихсодники самому с их сайта, куда-то, блядь, распковать, чего-то делать, ничего не пойму.
Сильно ли, кстати, размер исполняемого файла в конце стал меньше, чем было бы обычной Qt - когда файл исполняется только c десятками DLL
В крудошлепной программе у меня есть классы Employee, Manager и Sales, на которые я отображаю таблицы БД. При создании экземпляров этих классов в фабрике мне надо убедиться, что сотрудник с данным id имеет определенную должность, для этого я делаю выборку position из БД для id сотрудника и сравниваю ее со строкой, в которой хранится название позиции. А где мне хранить саму эту строку? В constexpr поле классов сотрудников?
Если эта строка никогда-никогда не будет меняться - да. Причём твоём случае разницы между constexpr и const нет.
В constexpr ты не можешь создать объект, данные которого аллоцируются в реальном времени, std::string к таким относится. Так что твой constexpr мало того, что будет бестолковым, так еще и вывалит ошибок при компиляции. Более того, так как должности получаются выборкой из базы данных (я так понимаю, они нихуя не захардкожены), то constexpr работать не будет, потому что это ключевое слово для оптимизаций времени компиляции, когда часть работы по определению значений можно доверить компилятору.
На пальцах:
-- constexpr значит, что ты знаешь значение переменной во время компиляции, она литерал, а литералы ты менять не можешь, что похоже на const -- отсюда путаница.
-- const означает немутабельность, неизменяемость куска памяти после инициализации, но ты можешь и не знать что там будет лежать во время компиляции.
Я думал что объявление должно быть 1 в 1 как в реализации, включая имена аргументов. Спасибо анончик.
Вопрос же был именно про исполняемый файл)
Проверил на текущей проге:
Статик: 34.6 МБ.
Динамик: 40.0 МБ (windeployqt.exe), 32.3 МБ (windeployqt.exe --release --no-translations --no-quick-import --no-system-d3d-compiler --no-compiler-runtime --no-angle) и 31.9 МБ (вручную, минимум на моей машине).
Как по мне, так несущественные различия.
Куда ОП-стихописец делся?
Ты инклудишь модули целиком? Компилятор выбрасывает неисользуемые функции? (не помню, какой параметр этим управляет)
На Coursera появился годный, как по мне, курс от Яндекса и МФТИ для вкатывающихся, наверное стоит добавить в шапку
Да, инклюжу целиком, в прекомпайлд хидер, компилер выбрасывает неиспользуемые функции По крайней мере флаг стоит. Когда убираю размер на 4 МБ увеличивается
Например есть uint8_tptr и несколько вложенных циклов, где внутри шняга вроде ((uint32_t)(ptr))[j]. Должен я кастануть его до циклов или можно не париться, лишнего ассемблерного кода сгенерено не будет?
звездочки проебались
Ок! Чёт я задвачевался.
Сейчас тут напишут про то, что ссылка это просто разыменованный указатель (или ещё какую подобную чушь) и начнётся срач.
>лишнего ассемблерного кода сгенерено не будет?
Не должно. Но сама идея херовая, очень легко можно вылететь за границу массива. И с переносимостью косяк, на некоторых платформах (MIPS например) многобайтовые значения должны лежать только с определенным выравниванием.
Насколько херовая? Допустим мне нужна структура из данных, состав которой неизвестен на этапе компиляции. Как вообще подобная задача решается на плюсах?
> мне нужна структура из данных, состав которой неизвестен на этапе компиляции. Как вообще подобная задача решается на плюсах?
Конечно же созданием программы, код которой не известен на этапе компиляции.
Это прототип функции, в прототипах функций можно не писать имена формальных аргументов, так как у них локальная область видимости, никто о них не знает за границами блока, в прототипах граница блока заканчивается за скобками прототипа.
Когда будешь писать определение функции имя формального аргумента понадобится, в прототипе можно забить.
В данном случае передается формальный аргумент ссылка.
>Смогли создать тест в котором джава обогнала кресты?
Это не возможно, т.к. в С++ всегда можно начать использовать только сабсет си + инлайн ассемблер и подебить в любом тесте.
Зачем нужно что-то кроме стандартной библиотеки для мультитрединга и Boost для сети, файлов и всего остального? Буст же отличная обёртка и над сетевыми функциями, и над прочим.
мимонуб
Чяднят?
Вы видите копию треда, сохраненную 28 августа 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.