Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.Пожалуйста, пользуйтесь https://ideone.com/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [i] или ∗.Что читать:- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2385.pdf- man/Dash/zealdocsЧем компилировать:- Очевидный GCC.- clang: оче годно, батя рекомендует.- Intel C++ Compiler: оптимизации, тысячи их.- Visual Studio 2017 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.Что еще почитать:http://c-faq.com/FAQ из comp.lang.c. Древний, но все еще актуален.Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.Ben Klemens "21st Century C: C Tips from the New School" (2012)Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard и http://web.archive.org/web/20190213011655/homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdfЕще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_CОнлайн-утилиты:- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.Прошлые треды:- №46: http://arhivach.ng/thread/461169/- №47: http://arhivach.ng/thread/475391/- №48: http://arhivach.ng/thread/495505/ >>1480534 (OP)
подскажите как можно подключать библиотеки в turbo c++, borland 3.11, codeblocks, mingw 64 32 686, хочу делать проги для винды, чтобы без плюсов ++ чтобы был размер проги мелкий. Возникает проблема когда подключается библиотека, а там c++ а я не хочу ++. Нужно следить за библиотеками. Например я хочу работать с файлом базы sqlite, писать и читать в базу. Хочу сделать progu.exe для винды
знаю что когда подключается <libxxx.h> и когда в кавычках "libxxx.h" тогда это по разному. Не очень понятно как мне подключить библиотеки скаченные с гитхаба. Видел слово linker...
прога написанная на c может не заработать если название файла proga.cpp, поэтому нужно название proga.c. c++ - это когда вверху iostream подключается
интересно сделать проги чтобы были кнопки, GUI, GUI в терминале консоли, TUI. Хочу чтобы проги красивые были, не как в cmd, через scanf
также хочу создать простую прогу на winapi, чтобы было без библиотек, посмотреть на размер в килобайтах, там вообще будут библиотека подключаться из папки винды C: system32 ну там где файлы винды лежат
помогите найти супер материалы в интернете для моего случая. i can read english and watch youtube videos.
>>1500979> GUI в терминале консоли, TUI. ncursesНе забудь обычную консольную с параметрами написать, а то я потом в пайплайн не смогу вывод отправить.
>>1500691>В винде хэндлы принципиально ничем не отличаютсяХэндлы не отличаются, файлы отличаются. Файлы - дисковые, потоки - не файлы. Мир живет на винде, использует терминологию винды. Терминология с мейнфоеймов 70-х годов неуместна, устарела и только мешает, сбивая с толку.Как пример, повторю: Там написано "при запуске любой программы на Си создаются хэндлы консоли", это прямая ложь. Нет, не создаются, ибо последняя ОС общего назначения с форсированной консолью была DOS, которая уже давно неактуальна.>Виндой мир не ограничиваетсяДа, мир ограничен юниксами, в которых консоль всегда как в DOS. А в виндовс таких ограничений нет, поэтому учить людей нужно соответственно.
>>1501174> при запуске любой программы на Си создаются хэндлы консоли> это прямая ложьСмотрите, неосилятор не осилил даже винду! Сишные stdin/stdout/stderr CRT открывает при инициализации ввода-вывода вне зависимости от того, WinMain там у тебя или еще что-то. Если ты соберешь GUI-программу, сделаешь в ней puts("Hello, world!"); и запустишь ее как hello.exe > output.txt (можешь из консоли, можешь в STARTUPINFO хэндл передать - похуй), как ты думаешь, что будет в output.txt?
>>1501184Запускал из консоли, printf ничего не выводит пока не переделаешь проект под консоль с main. Кто не осилил? Ты неосилил. Кто пиздит? Ты пиздишь.
>>1501188Хотя, попробовал перенаправить в файл и действительно туда выводит, но не на экран. Так что был неправ, всё создается и даже работает, наполовину. Только нахуй оно такое нужно в реальном мире, блокнотиком в файлы подглядывать. Ручками-то понятно можно всё напердолить, но речь шла по-умолчанию.
>>1501174>Да, мир ограничен юниксами, в которых консоль всегда как в DOS.Няшки, на хуй вы этого ребенка-олигофрена кормите? Пусть в ЖС или Питухон пиздует
>>1501203- Очень удобно для логгирования- Внезапно, даже в гуишном приложении можно создать окно консоли вручную, тоже отличная штука для отладки
>>1501203>нахуй оно такое нужно в реальном мире, блокнотиком в файлы подглядыватьИменно так в реальном мире и надо, а не смотреть простыни текста на экране.
>>1501174>Мир живет на винде, использует терминологию винды. Мир живет на никсах. Винда - экзотическая нишевая поебень.>>1501188>Запускал из консоли, printf ничего не выводит пока не переделаешь проект под консоль с main. Если бы stdout не было, printf бы просто упал.
>>1501203> Только нахуй оно такое нужно в реальном миреЯ же тебе сразу сказал, что это вендопроблемы. Компилятору Си абсолютно похуй, что ты там себе налинковал, и создает ли тебе винда консоль или нет. Он все инициализирует, потому что у него в стандарте так написано. Если GetStdHandle() выдаст правильный хэндл - все заработает, не выдаст - не заработает. При редиректе шелл в STARTUPINFO.hStdOutput кладет хэндл файла или пайпа, поэтому все выводится, а без редиректа в hStdOutput NULL, и консоли тоже нет, поэтому ты ничего не видишь.>>1501351В msvcrt (т.е., и в Visual Studio, и в MinGW) кое-что реализовано (#include <io.h>), в рантайме Pelles C реализовано почти все, что реально используется. Но вызывать такие функции нужно с подчеркиванием (_open) или линковаться с oldnames.lib (в Pelles C можно /Go). Но лучше всем этим не пользоваться и писать слой с абстракцией от ОС самостоятельно (поверх вот этих POSIX вызовов в nix, поверх Windows API в винде).> системным вызовамИменно системные вызовы (а не функции, в которые они обернуты) у каждой ОС свои, а в винде у них еще и номера от билда к билду меняются.> windows.hДа, если тебе эквиваленты, то в Windows API есть CreateFile/ReadFile/WriteFile/CloseHandle/DeleteFile, и для них нужно инклудить именно windows.h.
getc, getchar, gets(deprecated), scanf нахера их столько? еще с приставкой f есть, я прост запуталс юзать мне scanf для задач со строками или те которые get
>>1502324Gets депрекейтед потому что небезопасен и позволяет хацкеру переполнить буфер и залить шеллкод. Getchar получает не строку а символ, другая функция просто. Для скорости используй безопасную версию gets
>>1502360>Gets депрекейтед потому что небезопасен и позволяет хацкеру переполнить буфер и залить шеллкод.Объясните пожалуйста, где тут небезопасность? Программа локальная, запускается на компьютере. Откуда тут возьмутся хакеры и зачем им что-то переполнять в случае если есть?
>>1502452Не хочешь - не надо, но когда с помощью твоего кода случайно взломают твой анус - не жалуйся
>>1502457>с помощью твоего кода случайно взломаютПовторяю вопрос. Объясни, каким образом кто-то взломает через твою программу?
>>1502460Тётя Срака приведёт Ванечку, начитавшегося Касперски, посадит за твою пеку. И в следующий раз как тебе захочется увидеть "Privet, <username>!", тебе в ебало прилетит "<username> - pidr ebuchi".
>>1502460Ты забудешь что код дырявый и установишь его на твой анус. А потом кто-то попробует ввести 100 килобайт текста вместа имени пользователя и твой анус упадет. Хммм, подумает хакер, и напишет шеллкод.
>>1502466Скажи, дебил, как ты живешь такой тупой? Если в твой компьютер влезли посторонние, это УЖЕ взлом. Зачем им твоя ссаная программа со ссаной "небезопасной" функцией, если они УЖЕ имеют твой компьютер в момент получения доступа.
>>1502480>анусСпасибо, я понял что та дебил, можешь не продолжать. Подожду адекватных ответов. Надеюсь меня удивят и произойдет чудо взлома через ничто.
>>1502452Ну например ты используешь gets в суидном бинарнике и получаешь локальное повышение привилегий. Или ты часть пайпа, который обрабатывает недоверенные данные (мы ведь все любим линукс?). Или сокеты, да.
>>1502498Чего? Эсли очевидно, почему так скромно и мутно выражаешься? Что за это программа такая? Для чего предназначена? Кто и как взломает? ГДЕ ОЧЕВИДНЫЕ ОТВЕТЫ ПРО ОПАСНОСТЬ ВЗЛОМА? Почему я слышу только вялое блеяние в ответ на вопрос об этих ко-ко опасных фенкциях, про которые все уши прожужжали, даже компилятор радостно сообщает, но ответа где эта мифическая опасность нет?>>1502507Какие привелегии, что ты несешь? Еще раз: Программа на компьютере, ты знаешь значение этого слова - ПЕРСОНАЛЬНЫЙ КОМПЬЮТЕР, он твой блять, какие привелегии, ты сам себя взламываешь? Остановись поехавший, компьютер и так твой!Так, еще раз. Внятно четко и по делу: ЧТО ОПАСНОГО В ЭТИХ ТАК НАЗЫВАЕМЫХ "ОПАСНЫХ" ФУНКЦИЯХ? КТО ТЕБЯ ВЗЛОМАЕТ У ТЕБЯ ДОМА ГДЕ. ТЫ И ТАК ХОЗЯИН, ИДИОТИНЫ?
>>1502618Этот господин прав. Никто из нас так и не дал действительно адекватного ответа. Но ничего, есть идея, ща подожди...
>>1502625Значит чуда не будет, а жаль. Не весело убеждаться лишний раз, что люди - безмозглые дроны, лишь как попугаи повторяющие залитую в пустую башку бессмыслицу.А как насчет этого?>>1501604>Но лучше всем этим не пользоваться и писать слой с абстракцией от ОС Еще один мифический единорог, про который все пиздят, но никто не видел - "мультиплатформенность".Объясните, пожалуйста, это слово означает наличие нескольких платформ. ТАК ЧТО ЭТО ЗА ТАКИЕ ПЛАТФОРМЫ? Линукс, линукс, и еще макос (очередная сборочка линукса)? Вот ты, тупая сука, пиздишь про мультиплатформенность, но существует всего две реальные платформы - ЛИНУКС и ВИНДОВС. Но ты же, тупая линуксоидная скотина, не будешь делать под винду, ты винду не любишь или вообще ненавидишь? тебя хуй заставишь собрать под винду. ТАК КАКОГО ХУЯ ТЫ ПРОПАГАНДИРУЕШЬ МУЛЬТАПЛАТФОРМУ, ТО ЕСТЬ ПОДДЕРЖКУ ВИНДОВС ТОЖЕ, А ЗНАЧИТ ЗАБОТУ О ВИНДОВС И ЛЮБОВЬ К ВИНДОВС, КОГДА НА САМОМ ДЕЛЕ ТЫ ВИНДОВС НЕ ЛЮБИШЬ. ТЫ СУКА ГОВОРИШЬ ПИСАТЬ КОД С ПОДДЕРЖКОЙ ВИНДОВС, ХОТЯ НЕ СОБИРАЕШЬСЯ ЕЁ ДЕЛАТЬ. КАКОГО ХУЯ, ЛИЦЕМЕРТАЯ СКОТИНА? ТЫ ТУПОЕ ГОВНО САМ СЕБЕ ПРОТИВОРЕЧИШЬ В ОДНОЙ В/ФРАЗЕ, ДЕБИЛ.
Тут кто-нибудь для PSP пишет? Хочу хэллоуворлдами поразвлекаться, но один за одним наборы для девелопмента вставать не хотят из-за проёбанных пакетов. Из вариантов - бубунта и арч.
>>1502639Я так понял, чуда снова не будет и всё сказано правильно?"Тупые хомяки тупо хомячат, не мешай нам быть тупыми, зануда", так? Ну окей, не буду. Я же не навязываюсь, просто хотел спросить, ведь это было всего лишь личное впечатление, мог и ошибаться. Неприятно не ошибаться в таких вещах.
>>1502638>безмозглые дроны>пустую башку>тупая сука>тупая линуксоидная скотина>сука>лицемерная скотина>тупое говно>дебилПофиксил. Много воды было.
>>1502829надо полностью с инклудами и прочим говном и вообще задач дохуя для шараги надо а нихуя не гуглится
>>1502833А потом ты придешь через 5 лет с тредом типа "пацаны как вкатиться". Учись, студент, сам, подобные задачи это самое важное в твоей жизни.
>>1502826А при чем тут Си? Я понимаю, что ты другой анон и рофлишь, но подозреваю, что тот анон хочет разбирать готовые решения примерно таких задачек конкретно на Си. Так вот...>>1502806Задачи - это одна книга книга, а определение языка - другая. Если ты не умеешь в абстрактное мышление, дедуктивный подход, псевдокод и т.д. и т.п., то ты просто проебываешь время. Лучше плотно займись какой-нибудь гуманитарной деятельностью и поспеши обеспечить себе адекватное будущее, чтоб не словить кризис среднего возраста. Я желаю тебя счастья, анончик. Алсо, попробуй в искусство, может зайдет.
>>1502841да хороший совет итак так делаю пытаюсь в рахе нихуя нет всё самому через ебаное превозмогание
>>1502841>Если ты не умеешь в абстрактное мышление, дедуктивный подход, псевдокод и т.д. и т.пДокладываю - именно такой, но уж универские задания по программированию решаются легко если не надо математики во всем ее ужасе.
f() { pthread_create(..., &func, (void*)NULL); ...}g() { for (...) f();}Как сделать, чтобы функция func вызввалась каждый раз в треде, не создавая отдельный? Если я вызову f() в цикле N раз, то создастся N тредов. Нужно вводить счетчик и хуярить pthread_exit?
>>1502966Откуда такая идея? pthread_create - это тебе не fork + exec, где заем ядра и замена кода - 2 разных вызова, и можно делать фокусы.
блядь, какая же у меня хуйня получается при формулировке мыслей, больше не буду отвечать, кринж кринжовый
>>1502822Спасибо за классический образчик поведения тупого скота.Показываю на пальцах.Вопрос:>Привет, подскажите сколько будет дважды два?Ответ 1:>Будет пять, няша, заверено экспертами математиками. Обращайся еще, всегда рады помочь!Дебил:>Спасибо, друг!Ответ 2:>Ты чего такая тупая скотина? Разве не очевидно, что будет четыре, выкидышь мартышки?Дебил:>гринтекст пофиксил Нахуй иди.Свойство скота - преобладание чувств над разумом. Как видно в посте по ссылке и приведенном выше объяснении, пациент выбрал из ответа только эмоциональную составляющую и реагирует только на неё. Разум подчинен эмоциям. Вежливый пост с ложной информацией принят, а правильный пост, но неприятный - отвергнут. Вот почему скот тупой, таким образом живут животные, они не умеют рассуждать в принципе и подчинены эмоциями, прямо как этот дебил, не поднявшийся выше собаки, только рычит и тявкает выражая недовольство, а на человеческий диалог анализом информации не способен.
>>1502638>очередная сборочка линуксаЕбать у шкилы манямирок. У тебя всё, что написано с оглядкой на POSIX = линукс, зумер?>тебя хуй заставишь собрать под виндуВообще-то это винда посылает всех нахуй и не поддерживает общепринятые стандарты, лол.>>1503161Его вообще много кто любит, причин куча: легко написать компилятор под что угодно, легко (хоть и весьма вербозно зачастую) заинтерфейсить с чем угодно, достаточно просто и его знают все. Такой питон от мира байтойобства.
>>1503134В посте написана хуйня, но возражать тебе - примерно как возражать куску говна. При чем тупому куску говна, который возражений не поймет.
>>1503291>Вообще-то это винда посылает всех нахуй и не поддерживает общепринятые стандарты, лол.>Винда: 99%>общепринятые стандарты: 1%> винда не поддерживает общепринятые стандартыБля, смеялся
Смотрите что нашел:http://zonakoda.ru/Интересно пишет, разжевывает понятия, с примерами. Строковые литералы я только у него и понял вообще.
>>1503433Во-первых, понятно, что ты школьник, и у тебя существует только десктоп, но в мире-то почти вся разработка крутится вокруг серверсайда, исключение только геймдев (да и тот стремительно переезжает в облака, ещё через несколько лет у производителей видях драйвера под никсы станут приоритетными над десктопными). И тут сплошной линукс да бсд, я вообще хз кто использует шиндовс сервера кроме додиков из наших госструктур и какого нибудь совсем дремучего ынтерпрайза с кучей легаси из времён, когда джава ещё не выебала и не высушила дотнет так, что мс как побитые шлюхи сделали его кроссплатформенным, лол. Но кто-то и макос на серверах юзает, притом платит достаточно, чтобы ахуевшая эпл поддерживали эту хуйню, кек.Во-вторых, 10% занимает тот же мак. Если писать, например, пользовательскую гуёвую софтину для заработка денег — я бы поставил на эти 10%, лол.В-третьих, в мобилках и планшетах винда отсосала и мс от неё отказалась уже официально, весь этот рынок за линуксом и бзд.В-четвёртых, Windows Subsystem for Linux как бы намекает, что мс чувствует жепой, что обычные юзеры забивают на пека и скоро это будет исключительно рабочий инструмент, у котороо от былой славы не останется и 10%.Так что учи линукс, сынок.
>>1503452Классическая книга, с которой нужно начинать изучение линуксов и си: https://web.mit.edu/~simsong/www/ugh.pdf
>>1503464>в шинде баги старых версий симулируют в новых версиях )0>а в линюксах ниграв убивают)0Классная книжка, почитаю на досуге.
>>1503555когда я искал очередную работку, у меня было требование - никакого ебучего линукса, наелся им, только винда + вижуал студия. И как же я счастлив, что я ее нашел, и работаю третий год с кайфом.Мимо из соседнего треда с плюсами
>>1503550Он тебе про серверсайд, а ты ему статистику про десктоп кидаешь, ну что ты за ебланВсе и так знают, что большинство людей домохозяек и игродаунов, держу в курсе в мире юзают шинду, но это не имеет никакого отношения к работе в айти
>>1503550А вот и любитель пообсуждать бинарники. Что, педролишь срачельник? Не забывай наносить смазку, бггг
>>1503452Когда завезут человеческую поддержку все сортов железа, тогда и приходите. А то или кулер не вращается, или иксы падают на старте, распидорашивая каким-то образом даже текстовый режим. И вино допилите, да.
>>1503581Пусть сначала завезут концепцию "драйвера". Чтобы можно было отдельно ставить, удалять, выбирать нужную версию, и всё это для каждой железки в отдельности. Иначе это ссаный андроид, только не от производителя телефона под его железо, а совсем конченый, не понять для какого железа, поэтому всего напихано, и остается только молиться что твоё заработает, ведь повлиять никак. А если не заработает, читать сайтики где перечислено "нинужное" железо, "сам лох, нито имеешь, бгг", кек.
>>1503452Хуй знает что ты за хуйню несешь, все уже давно на мс серваках сидят, любой линукс говно дырявого говна. Пока сруникс комьюнити закапывает себя в си-легаси говне, майкрософт пилят реальную ось.
>>1503134Какая-то толстота с отрицательным выхлопом. Высрать на короткий рофл длинную псевдосерьезную хуету... Я даже хз, кто тут кого забайтил.
>>1503727В посте нет оскорблений. Там есть выдвинутый тезис, его обоснование и предложение прокомментировать. А между строк приправлено эмоциями, выражающими личное отношение. Ведь пишет человек, а не бездушная жестянка, нет ничего странного выразить себя заодно. Это называется свобода слова, за которую, хвала богам, на данного типа анонимных бордах не наказывают.Как видишь, повторюсь, оскорблений нет, т.к. в посте нет других людей, только сам говорящий и его отношение к им же высказанному тезису. Если же каких-то третьих лиц высказанная позиция оскорбляет, это проблемы уже их личные, не надо валить с больной головы на здоровую.
>>1503734Ну, допустим, я перечитал и убедился, что из смысла там только>этой ТВОЙ комп, ТВОЙ сука, ты его из розетки можешь вытащить, когда услышишь звук обращения к запрещенным байтам, это ведь так заметно, хуй взломаешь>у вас тут пара убунтошизиков затесалась, стало быть тред зашкварен, и говорить о кроссплатформености никто итт не имеет праваДальше что? Развлеки меня, анон.
>>1503734>Ведь пишет человек, а не бездушная жестянкаПишет истеричка, к которой нет уважения в обществе байтоебов. 95% поста эмоции.
Подскажите пожалуйста. Запускаю вычисление факториала с рекурсией из учебника Дейтелов, в С-Free 5 до 12 значения нормально идут, потом ерунда какая то вывожу ULLONG_MAX 4294967295. Запускаю в браузере все нормально. Система Winxp, Pentium Dual озу 2 гиг. Где посмотреть чтобы понять почему?
>>1503550Ко мне как к яблочному анальному рабу это ебать как относится, дружок.>>1503558Нет, друг, это я тот чел работающий с крестами, у которого кресты говно. Даже по сравнению с уёбищной динамикопарашей обжс, они сосут что по синтаксису (а ведь это код на с++17, которого в проде днём с огнём не сыщещь, и ирл всё куда хуже), что по фичам (ведь даже в обжс уже хуй знает сколько лет уже есть модули, блядь).>>1503581Я тебе про серверсайд, ты мне про иксы. Ну не еблан ли?>>1503729Кто все-то? Ты один здесь нахуй.
>>1503556>только виндаКлассно наверно, когда весь мир на цмейке сидит, а на твоей ос он никогда ничего не резолвит, да?>вижуал студияДотнетовская лагающая параша.
>>1503801>Нет, друг, это я тот чел работающий с крестами, у которого кресты говноТак ты бы сразу писал, что ты эплопидорас. ДАЖЕ, лол.
>>1503806Ебать школьника порвало. Ничего, дружок, поебёшься пару лет с шиндовсом, потом так же с линуксом на десктопе, а там уже и на барский макбук накопишь.
>>1503819>Objc-обезьянаНипапал. Ничего, шкильник, я же говорю — накопишь и на человеческую технику когда нибудь. Не плачь.
>>1503832>Иди в джаватред сри>тем временем под шинду есть 2 полноценные иде>одна на джаве другая на дотнетеЛольнул.>>1503836То чувство, когда мамка дала денег на видяху, а рандомный проект что на цмейке, что хоть на мейке собрать без 5 часов ебли всё равно не сможешь.
>>1503845>сам занимается вебмакакингом>считает всех пидорасами и даунами>и срётся за плюсы в ц тредеКстати, не подскажешь, где там шиндовс? Его же все поголовно на серверсайде юзают.
>>1503842Тупой дегенерат-дебил, не знает, что визуалстудио полностью поддерживает и интегрируется с cmake. А еще она написана на плюсах. Про какие ты там иде вообще говоришь? Говноподелия от жидбрейнс, которые виснут по несколько минут? Пиздец, как же я лолирую с этого яблодебила, он еще и боевые картиночки использует, ну дегенерат же очевидный.
>>1503870Столько же. Правда одна из них нативная и не лагает.>>1503864>поддерживает и интегрируется с cmake.Тупой школьник даже не понимает, о чём я говорю. Какая нахуй интеграция с вс? Я об этом хоть что-то говорил, долбоёб?>А еще она написана на плюсах. Была, году так в 2010, сейчас там львиная часть — говноподелие на дотнете уровня жидбраинс, причём плюсы по сравнению с шарпом там в состоянии какого-то рудимента из ануса.
>>1503864>Говноподелия от жидбрейнс, которые виснут по несколько минут?Не запускай ПО для серверной разработки на калькуляторе 8 гб оперативки и 4 ядра
>>1503896Для какой нахуй серверной разработки? ИДЕ от жидбраинс уже умеют работать как тонкие клиенты к серверу с запущенной там иде или что?Покупать ебаный ядерный реактор для редактора текста = быть дауном.>>1503896Иде как иде, нечего сказать.>>1503908Да нет, не боль. Нюфаги устраивают набеги потому что не в курсе, что его необходимо устанавливать с сайта эпла, и через аппстор его не обновить на следующую мажорную версию, он ломался и ломается при такой установке всегда, лол. Но маркетологам похуй, и такая возможность почему-то есть.
>>1503930Если хочешь модным быть, купи айфончик в Apple StoreНо можешь на эти деньги купить то, чего нет ни у кого в школеКрасные носки-носочки, целые четыре пары, а не триДля кошерных ступней оболочки цвета догорающей зариА теперь подумай, сколько дров мог бы купить на эту суммуДля несчастных стариков, с которых он одежду снимает безумно
>>1503874> а рандомный проект что на цмейке, что хоть на мейке собрать без 5 часов ебли всё равно не сможешь.> Я об этом хоть что-то говорил, долбоёб?Не говорил говоришь? У меня любой смейк проект в 2 клика собирается, дебил.
>>1503963>>1503804>Классно наверно, когда весь мир на цмейке сидит, а на твоей ос он никогда ничего не резолвит, да?Перечитай и подумай, о чём я писал, и при чём здесь твоя ебучая вс.>>1503965Как и говно на дотнете.
>>1503973> >Классно наверно, когда весь мир на цмейке сидит, а на твоей ос он никогда ничего не резолвит, да?Ты сам это придумал?
>>1504090А оно разве ресолвит? Я не пользуюсь, но собирал чужой код и без нужных пакетов компиляция просто падала. Что зо ресолвинг у вас?
Прошу прощения, что пишу это здесь, но я хочу найти работу и понял что C для этого не очень годиться, если не разбираться в радиотехнике и микроконтроллерах.Как после C вкатываться в другие языки? Они какими-то ущербными все кажутся.
>>1504293>Как после C вкатываться в другие языки? Они какими-то ущербными все кажутся.Через боль и страдания
Аноны, есть ли какие-нибудь best practices или небольшая опенсорсная прога, где можно подсмотреть реализацию, чтоб программу можно было использовать такими способами?$ sort -i unsorted.txt$ cat unsorted.txt | sort$ echo 7 6 3 1 2 5 | sort -o sorted.txt
>>1504270Сказочник, как у тебя могла падать компиляция, если цмейк не найдя нужных либ в системе не генерирует нихуя, ммм?
>>1504404Проверяешь argv[1] на наличие ключей "-i", "-o". Если есть, то достаешь из argv[2] значения и работаешь с ними. Если нет, то читаешь весь argv и пишешь в массив, который надо сортировать.
>>1504455В последних двух командах идет перенаправление потока ввода, читать надо не из argv, а из stdin
Я нубас в этом вашем программировании, почему не работает> #include <stdafx.h>> E1696 не удается открыть источник файл "stdafx.h"Не могу нагуглить решение. В настройках пробовал включить предварительно скомпилированные заголовки, все равно шлет нахуй. Работаю в VS 2019
>>1504404https://stackoverflow.com/questions/9642732/parsing-command-line-arguments-in-cЕсли -i и -o отстуствуют, устанавливаешь как -i файл stdin, а как -o файл stdout. Эти файлы уже открыты и объявлены в недрах стандартной библиотеки
>>1504667В настройках проекта выбираешь платформу All, тип сборки All, выключаешь Precompiled headers, профит.
Есть гайды по написанию кода на ардуино через Cmake? Загрузчик их всё равно нужен, но размер проги из их иде слишком большой, да и сама среда не нравится
>>1504450Групо выразился. Там билдскрипт который всё делает, и он падал пока руками не установил в менеджере пакетов нужное. Так вопрос, что там у вас этот симейк ресолвит если у меня ничего не ресолвит?
>>1504659Если в проекте включены предварительно скомпилированные заголовки, тогда создаешь этот файл в папке с твоим проектом и меняешь код на> #include "stdafx.h"в кавычках. Угловые скобки ищут файл в библиотечных каталога, такое нужно для системных инклудов, но не твоих собственных.Или же просто убери в настройках проекта эти пред-компилированые заголовки и удали строчку> #include <stdafx.h>В таком случае этот файл не нужен и естественно пытаться его инклудить тоже не надо. Тем более его в системных библиотечных инклудах всё равно нет и не будет, лол.
>>1504659Потому что его нет? Если нет, создай или убери инклюд>>1505001>>1505001stdafx.h это стандартный файл для прекомпилированых заголовков в студии, он локальный, его надо включать в кавычках.
>>1505019Ресолвить - штука сложная. Ты ему тыкаешь где у тебя какой-нибудь libxyz установлен, а он находит там cmake модули, импортирует таргеты, ты делаешь target_link_library и вуаля, у тебя и инклюдлые пути прописаны, и правильные библиотеки подлинкованы для каждой конфигурации.
>>1504293Странный ты. Когда видишь другие языки, в которых миллион возможностей, в которых не надо писать велосипеды, ущербным кажется именно си.
>>1505025А их хрен освоишь, потому что привыкаешь к простоте Сишки, и везде пытаешься писать как на ней. Хотя скорее просто я тупой.
>>1505080Когда много пишешь на Си, кое-какие паттерны нарабатываются, которые первое время пердолишь вручную "смотрите, белоручки, как я умею", потом макросами, а потом понимаешь, что кресты - это охуенно. Отчасти потому, что совсем не лишают тебе возможностей Сишки, с оговоркой на дополнительные касты.
Помогите, у меня осилятор сломался.Почему в аддитивном выражении правая часть не может быть аддитивным выражением, как левая?Зачем выражения сравнения определяют через выражение со сдвигом? Причем тут сдвиг вообще?По каким ключевым словам вообще гуглить все это колдунство?
Двач, крик души епта! КОНТРОЛЛЕРЫ! STM32!! ARM!!!Подскажите какие-нибудь учебники и курсы (можно платные) по STM32!Как освоить эти ебаные контроллеры? Мне советовали курить даташиты, но как блять по даташитам ботать с нуля? Непонятно нихуя же. Это все равно что студенту-юристу не дать учебник, а дать сразу УК РФ, там же всё написано. Повторяю вопрос: где взять УЧЕБНИК по STM? Чтоб с нуля, для нуба, было последовательно разжевано, по темам, от простого к сложному, с примерами кода.И второй вопрос: а где вообще этому системно обучают? В колледжах, на каких-то курсах или где? Или какие-то особые люди-программисты сразу рождаются с этим знанием? Именно такое ощущение сложилось. Помоги, двач, погибаю! По работе очень надо
>>1505317>STM32Купи за 200р Пердуно и начни вкатываться с него, светодиодом поморгаешь, дальше все поймешь.
>>1505328https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B_%D0%B2_C_%D0%B8_C%2B%2B
>>1505318Это не определение сравнения, это приоритет операций. Что считается первым, что вторым. Не забивай голову, это никто не помнит и ставит скобки
>>1505335>Ты, блять, меня троллишь? Ну я с Ардуино пердолюсь, материалов много, читай не хочу. STM32 те же яйца, только в профиль.
>>1505317>Повторяю вопрос: где взять УЧЕБНИК по STMТут спросить https://2ch.hk/ra/res/314976.htmlА вообще с такими навыками гугления у тебя ничего не получится>И второй вопрос: а где вообще этому системно обучаютВ вузах, например
>>1505351>А вообще с такими навыками гугления у тебя ничего не получитсяСпросить на дваче - один из эффективнейших способов гугления, не?>Тут спросить https://2ch.hk/ra/res/314976.htmlБлагодарю.
>>1505355>Спросить на дваче - один из эффективнейших способов гугления, не?А макдоналдс один из эффективнейших способов пожрать
>>1505353>когда есть подобные хуйни на ARMах, включая STM32Ну может и есть, просто про Пердунью материалов много да и на рукожопов рассчитана.
>>1505297> Почему в аддитивном выражении правая часть не может быть аддитивным выражением, как левая?Может. Но приоритет у умножения выше.> По каким ключевым словам вообще гуглить все это колдунство?Если вообще пиздец как интересно, то любая книжка или статья по компиляторам. Даже https://compilers.iecc.com/crenshaw/ сойдет. А вообще, тебе это читать не нужно, это на случай, если ты парсер захочешь написать.
>>1505358Не знаю, предпочитаю писать на железе, а не восьмибитном кале.Хотя кого я обманываю. В кладовке валяется все
>>1505372На самом деле сложность армов сильно преувеличена (их только паять неудобно - ног много), а сложность авров сильно преуменьшена (восьмитиный кал vs нормальное железо)
>>1505373Это смотря какие армы. ARMv8 с bare metal и до чего-то вменяемого инициализировать очень и очень непросто.
>>1505297Эта залупа (аддитивные и мультипликативные выражения) введена чтобы избавиться от неоднозначности при парсинге. Пример: без приоритетов операций a+bc парсер может интерпретировать как (a+b)c или a+(b*c). Т.к. Ты скорее всего нюфак, и не собираешься писать парсер с, то вместо "аддитивные/мультипликативные выражения" читай просто "выражения" и не забывай о приоритете операций!
>>1506994просто тестовый код. Компилирую 'gcc -g test.c'запускаю и такой вывод, когда дохожу до сканфа.12 scanf("%s", foo);(gdb) wabalubadabaProgram received signal SIGSEGV, Segmentation fault.0x00007ffff7a50fdd in _IO_vfscanf_internal (s=<optimized out>, format=<optimized out>, argptr=argptr@entry=0x7fffffffde40, errp=errp@entry=0x0) at vfscanf.c:11031103 vfscanf.c: Нет такого файла или каталога.
>>1507077int main(/blabla/){char *foo="there is an awesome text\n";printf("%s", foo);fflush(stdout);//do not works with stdinscanf("%s", foo);return 0;}В смысле? То есть, типо лучше писать foo[32], если с указателями на "вы"?
>>1507082> В смысле? То есть, типо лучше писать foo[32], если с указателями на "вы"?Ну окей, указатель инициализированный, но вот писать туда нельзя, а scanf у тебя пишет. Посмотри в предыдущем треде, вопрос действительно платиновый: >>1494168
>>1507158>но вот писать туда нельзяДаже если можно, всё равно нельзя, ведь можно записать больше той строки и получить испорченную память.
>>1507105Спасибо, знаю, что платина доводит, но ньюфажиков необходимо тыкать в маны и наставлять на путь истинный. Да и мне самому не найс дёргать мудрого анона.
>>1500890 (OP)Есть библиотека - в .h файле заголовки функций, структуры, переменные и массивы и стоят guard-ы, в .c файле тела функций и подключен .h файл. 1) Как правильно сделать некотоыре функции библиотеки inline-овыми?2) Как правильно сделать некоторые переменные библиотеки статическими глобальными?
>>1507420>1) Как правильно сделать некотоыре функции библиотеки inline-овыми?Никак. Можешь тыкать везде inline (который нихуя не гарантирует) или платформозависимую хуиту вроде inline __attribute__((always_inline)), которая гарантирует инлайн, но скорее всего ты обосрёшься. Поэтому просто забей хуй и оставь это компилятору (если не пишешь под мк с компилятором от дяди васи). А можешь просто ебануть все на препроцессоре, как диды делоли.>2) Как правильно сделать некоторые переменные библиотеки статическими глобальными?Никак, правильно только по ебальнику за такое можно получить. Даже если делаешь глобал стейт, то меняй его используя функции (туда хотя бы ассерты можно вставить), компилятор энивэй это всё заинлайнит, а вот ты и все кому этот код достанется ахуеют его дебажить.
>>1507440>то меняй егоТочнее не только меняй, но и получай (стандартный оопный подход с геттером-сеттером с ассертами на вход-выход), сэкономишь кучу лет жизни.
>>1507440> платформозависимую хуиту вроде inline __attribute__((always_inline))Поддерживается чуть менее чем всеми в каком-то виде, поэтому пара #ifdef, и все ок, моя программа уже посчитала, а твоя все еще моет посуду.> компилятор энивэй это всё заинлайнит,Только с линк-тайм оптимизациями, которые далеко не все включают.> Никак, правильно только по ебальнику за такое можно получитьНекоторые переменные можно делать глобальными, надо только заранее подумать о thread safety. Писать геттеры-сеттеры для какого-нибудь void ( ∗debug_writer)(const char ∗format, ...) - признак отсутствия мозга. Глобальный стейт тоже не всегда плохо. Если задача не предполагает наличия нескольких стейтов одновременно, то нехуй и таскать указатель на стейт из функции в функцию, это не дает ничего, кроме проблем и тормозов.
>>1507667>нюфак на полном серьёзе считает что вызов функции приведёт к тормозам, и глобал стейт через всю программу приведёт к чему-то кроме неуловимых баговВ твоём манямирке наверно ещё всегда тормозит процессор а не память?
>>1507667>моя программа уже посчитала, а твоя все еще моет посуду.Ага, а если твой код, раздутый инлайнами без поводов, не полностью влезет в кэш лайн, как думаешь, что произойдёт? Отсос хуя мамкиным оптимизатором.>Только с линк-тайм оптимизациями, которые далеко не все включают.Эээ... В релизе включают примерно все. И компиляторы это делали ещё до того, как начали форсить LTO. А если кто-то и не включает — значит, есть на то причина.>Глобальный стейт тоже не всегда плохо.Хоть один его плюс приведи (кроме отсутствия необходимости нажимать лишний раз на клавиатуру), лол. Эту хуйню даже протестировать невозможно, не говоря уж о каком-то там тредсэйфети, охлол.> Писать геттеры-сеттеры для какого-нибудь void ( ∗debug_writer)(const char ∗format, ...)Ну мы про переменные говорили.>признак отсутствия мозгаДа нет, признак отсутствия мозга — это перед каждым юзом глобальной переменной тыкать ассерты до и после, чтобы отловить ошибку, когда можно написать этот код 1 раз.
>>1507676>В твоём манямирке наверно ещё всегда тормозит процессор а не память? В моем манямирке тормозит и то, и другое. Сброс конвейера и I-cache при вызовах приводит к тормозам. Не всегда, но приводит.>>1507671> Инлайны компиляторы игнорируют из-за таких как ты Наверное именно поэтому каждый компилятор умеет force inline.>>1507681> И компиляторы это делали ещё до того, как начали форсить LTOИ через какой астрал они это делали, если функции в разных translation unit-ах? Анон спрашивал именно про этот случай.> Хоть один его плюс приведиМеньше аргументов у функции, отсутствие лишних дереференсов.> тредсэйфети_Thread_local, при необходимости атомики для синхронизации. Все то же самое тебе понадобится, если ты стейт за собой таскаешь, но хочешь использовать его из разных тредов (например, один менеджит ввод-вывод, а второй обрабатывает данные).> Ну мы про переменные говорили.Указатель на функцию - это переменная.> чтобы отловить ошибку> протестировать невозможноДокументацию и/или комментарии писать пробовал? Попробуй - понравится. Если в переменную попадает не то, то кто-то это туда положил. Ты можешь отловить статическим анализом некоторые ошибки, ты можешь отловить тестами еще некоторые, ты можешь даже что-то отловить в рантайме ассертами, но если не использовать мозг, в релизе все равно возникнет ситуация, когда оно свалится.
>>1507844> если функции в разных translation unit-ах?Функции на пару строк можно и в хедере написать, чем в тех же плюсах всегда и занимались.>Меньше аргументов у функции, отсутствие лишних дереференсов.Т.е. ты согласен, что из плюсов — меньше нажатий по клавиатуре?>Документацию и/или комментарии писать пробовал? Во всём мире программисты умудряются срать себе в штаны используя подобное уже пол столетия, один ты борщехлёб д'Артаньян, я понял.>Ты можешь отловить статическим анализом некоторые ошибкиКакие? Неинициализированные переменные? Хотя в лапше с глобалстейтом, гото и прочей чернухой тебе даже в этом никто не поможет.>ты можешь отловить тестами еще некоторыеПидоран, как ты будешь писать тесты для либы с глобал стейтом? Тестировать всю либу снаружи? Если либа на 200 строк — то ок, но когда там будет пару десятков мб кода — что такие тесты вообще могут показать? Что у тебя всё ебнулось нахуй от сегфлолта?Для того и пишут функции с кучей аргументов, чтобы они, блядь, были стэйтлесс, и их можно было покрыть тестами и сразу знать, ломает ли что нибудь какое-то изменение.>но если не использовать мозгНу я же говорю — весь мир считает себя дохуя умным, говнокодит и обсирается, один ты не пидорас.
>>1507967> Функции на пару строк можно и в хедере написатьДа, именно так правильные инлайн-функции и делают.> программисты умудряются срать себе в штаны используя подобное уже пол столетияСовременные программисты срут еще больше, используя тесты. То время, которое они могли бы тратить на написание качественного кода, они тратят на написание множества некачественных тестов. Результат очевиден.
>>1507972>Результат очевиден.Результат очевиден именно потому что никто их и не пишет, блядь. Даже доки в гнутом софте найти легче, чем нормальное покрытие тестами хоть где нибудь. Итого — у нас нет недырявого софта, который с каждым апдейтом не разъёбывался бы по новой, от слова совсем.>То время, которое они могли бы тратить на написание качественного кодаЕщё раз, борщехлёб, код может быть качественным пока его 100 строк и ты пишешь его один. Когда в проекте хотя бы около несколько тысяч строк и несколько голов скота погроммистов — результат очевиден.
>>1507970>>1507681>Ага, а если твой код, раздутый инлайнами без поводов, не полностью влезет в кэш лайн, как думаешь, что произойдёт? Отсос хуя мамкиным оптимизатором.
>>1507984Код будет качественным, если его пишут качественно. Если об архитектуре подумали заранее, если программисты знают язык, на котором пишут (особенно актуально для сишки), если предметную область тоже знают. А если не знают, получается хипстерское "ну я не уверен, ошибся ли я в условии for на единицу, напишу-ка я тест". Итого —> у нас нет недырявого софта
>>1508029Т.е. если у нас нет недырявого софта, и недырявым он получается только если его пишут не хипстеры, то вообще все современные (в смысле, компутерные) технологии написаны хипсторами?
>>1508036Либо всем похуй на безопасность и/или корректность, либо код говно, либо код коммерческий, и нет времени/денег, чтобы писать хорошо. Про сложившуюся практику программирования очень хорошо и с кучей примеров написано тут >>1503464. За прошедшие годы кроме названий технологий ничего особенно не поменялось, а местами стало только хуже.
>>1508041А писать хорошо — это вообще как? Не релизить ПО совсем? Что-то сдаётся мне, что лучше говнокод, чем такие маняпотехи.
>>1508054Это сидеть в кожаном командирском кресле и указывать черни как надо писать код. А если у них получается плохо, значит дураки, нужно было заранее соломку подстелить. Типичный я начальник-орхертехтар, а вы дураки.
Анончики, разрешите обратиться с глупым вопросом. Правильно ли я понимаю, что чистый Си -- это язык программирования технобогов. Этот язык широко применяется у таких ребят как: Boeing, Airbus, NASA, SpaceX etc? А значит в него есть смысл вкатываться если нравиться пердолиться с разной техникой. Будь это самолёт или ЧПУ станок Или я всё не так понимаю и для этого надо заходить в асамблеры, ады и прочие фортраны?Благодарю за ответы, не пинайте сильно. Обнял Си!
>>1508234>Boeing, Airbus, NASA, SpaceXТолько в виде прошивок для embedded.На ПК у них совсем другие языки используются, высокоуровневые.
>>1508250Подожди Антоша, только не убегай. Прошивки это я так понимаю небольшие проги для конкретного железа так? А как же такие сложные штуки как автопилот, бортовой компьютер и тд? Неужели там используется онли Ada? С другой стороны читал статьи про стильный, модный, молодёжный F-35, который кодят на C++. А также про разные спутники и марсоходы, которые ебашут по хардкору только на Си.Но вот что значит на ПК они используют совсем другие языки? Итоговая компиляция всех девайсов? Написание интерфейса или что ещё?Сори если совсем хуйню несу, но так любопытно это всё. И какое то благоговение ощущаю от тех, кто занимается железным прогингом. Наверное самые благородные погромизды из всех.
Пацаны,снова нужна ваша помощь,время горит ,а лаборатоная нужнаhttps://pastebin.com/5g3F9rvsКак то нужно реализовать след ход действий над матрицамиC=(B+E)*(A-E)Умножение уже сделал,не знаю что делать с Единичными матрицами(E)Хэлп гайз
>>1508519>Как то нужно реализовать след ход действий над матрицамиСлед ход действий? Чего блять? Ты обгашенный нахуй или что? Или просто русский не твой родной? Что за хуйню ты написал?
>>1508648Только один из нас,и это точно не я,додик.Следующий ход действий ,т.е. ,для обделенных разумом , сложение,вычитание,умножение матриц
Господа сишники, подскажите, пожалуйста. Нужно запилить преемптивные потоки уровня пользователя (M user-level threads -> N kernel threads, M >> N) для unix-систем (нужно в одном проекте). Видел способ с прерываниями по таймеру и ucontext, но интересно, есть ли еще какие-то способы, и если есть, то насколько они эффективнее/проще/надежнее/e.t.c.
Ньюфаг в треде.А как работает stdio.h? Как он выводит и вводит инфу, если сам язык этого по дефолту не может? Или его написали на каком-то другом языке? Гуглить пробовал, пишут только о том, что этот stdio.h даёт возможность ввода-вывода, но нигде не пишут о том, как он именно работает, то есть что там такого происходит.
в иксах (xcb) можно как-нибудь прицепить окно к курсору или нужно самостоятельно его перемещать за курсором? нихуя не гуглится ничего. делаю колорпикер, хочу чтобы окошко с цветом за курсором бегало (в данный момент. потом может лупу попробую сделать).
>>1509214printf -> __printf -> puts -> _IO_puts -> _IO_sputn -> __xsputn -> _IO_new_file_xsputn -> new_do_write -> __writeЭто из gcc
>>1500890 (OP)Считается ли правилом хорошего тона (и по MISRA C) использовать возвращаемые функции в условиях?Например, здесь происходит выбор какого-либо действия в зависимости от того, что возвращает функция:switch ( Function() ){ case '1': { / действие / break; }; ... default: { / действие / break; };};А здесь происходит проверка условия: если функция возвращает 0, действие не выполняется, если 1 - выполняется.if ( Function() ){ / действие /}
>>1500890 (OP)Аноны, такой вопрос. По MISRA C после оператора if, else if обязательно должно быть else, а в теле switch должна стоять заключительная метка default. А если мне нечего там писать, оставлять пустые скобки под ними? Или обязательно нужно что то написать там, даже если оно не будет иметь смысла?
Чому так странно? Второе я ещё могу понять, может, long double как-то хранится отлично от double, но почему третье так отображается, не понел. GCC
>>1509923Для легаси говна, а так сейчас даже эмбдед пишут на крестах, всё таки без классов программировать хуево.
>>1510001Ради справедливости, в эмбед-приложениях необходимость в классах не особо велика. Pure С охуенен в своей лаконичности. Для задач типа "считай АЦП - выкинь на дисплей - помигай светодиодом" классы не нужны, хватает структур.
>>1510037>Для задач типа "считай АЦП - выкинь на дисплей - помигай светодиодом" классы не нужны, хватает структур.Где такие задачи есть?
>>1509949> long double как-то хранится отлично от double80 или 128 бит в отличие от 64 бит в обычном double. Поэтому для вывода тебе нужно указать правильный тип для printf: %Lf и %Le соответственно.> почему третье так отображаетсяИнтерпретирует кусок мантиссы long double как double. Получается очень маленькое число (e-185!), поэтому %f округляет его до нуля, а вот %e показывает.
>>1510055В каждом втором диагностическом медприборе, например. ЭЭГ, ЭКГ, миография, стабилометрия, всякие там биоимпедансы и биопотенциалы. Забыл еще ключевую фишку, послать данные по UART/USB, это святое, везде нужно. Но это всё содержится в готовых библиотеках, ООП тут не пришей пизде рукав. Главное чтоб прога была максимально простой и без потенциальных выстрелов в ногу. В контроллере неотслеженный баг может стать бомбой замедленного действия. Пляшем от этого.
>>1510092Он меня унижает. Lf показывает -0.000000. А ещё я не понимаю, почему он вообще позволяет себе такую дерзость, как -0, ведь там 2's complement в любом случае реализован, скорее всего...
>>1509646>А здесь происходит проверка условия: если функция возвращает 0, действие не выполняется, если 1 - выполняется.А что в этом плохого?
>>1510171Каждому своё. Но перескочить еще не поздно, если ты не сорокалетний старпёр. Если интересно - задавай свои ответы.
>>1510170Да ты охуел. Сравни, что у тебя в предыдущем скриншоте, и что в этом! Там у тебя было 0.3L (long double), а тут 0.3 (просто double). Для обычного дабла (и флоата, который до дабла промоутится в функциях с неизвестными типами аргументов) тебе нужно %f, для long double %Lf, неужели так сложно?> ведь там 2's complement в любом случае реализованТам всего понемногу. Знак там отдельно и явно, мантисса совсем беззнаковая, а экспонента хранится хоть и без знака, но со смещением формат принципиально ничем от 2's complement не отличается, просто диапазон на положительные и отрицательные разбит не по 0 ("слева" от нуля отрицательные (0000...0001 = 1, 0000...0000 = 0, 1111...1111=-1), а посередине ("слева" от "середины" беззнакового числа отрицательные: 1000...0000 = 1, 0111...1111 = 0, 0111...1110 = -1).
>>1510406У тебя шрифт говно, я думал, что там 0.31. Если там L маленькая, то она для спецификаторов плавающей точки игнорируется нахуй, нужно именно большую.
>>1510170>>1510406>>1510408Короче, я понял. У тебя гцц под виндой. Скажи ему, что у тебя -std=c99 или -std=c11, а то у него по умолчанию -std=gnuчто-то-там, и он в таком режиме не делает костылей вокруг msvcrt, чтобы %Lf работал. Почему именно так - не знаю, и задумываться лень. Спать надо.
>>1509541блядь это говно полностью загружает ядро процессора если двигать окно за курсором, причем если обычное окно двигать руками, то загрузка в 3 раза меньше. как это делается блядь?
>>1510191>Если интересно - задавай свои ответы.Мимо начинающий embedder, задам пару вопросов по теме, мне интересно.1) На ассемблере уже больше ничего не пишут, только на си и с++?2) Используете ли "программистские штучки" в своей работе, вроде гита, гитхаба (системы контроля версий), код ревью и т.д.?3) Есть ли разделение на джуниоров, миддлов и сеньоров, как в айти?4) Как делаете тестировку программного обеспечения?5) Как проходит проверка программного обеспечения на правила MISRA С?
>>1510465Не он но отвечу:1) ????2) Да, естественно используем, только это не программистские штучки, и немного не так как коммерческие лохи3) в некоторых местах уже есть, в телекомах например щас уже почти везде так, в остальных местах Нотация и служебные звания как у заводских работяг ну типа старший инженер пидорасович4) методами тестирования5) никак
Визуал студия постоянно фыркает на функции вроде memcpy(), fopen(), strcpy() и т. п., навязывает версии с суффиксом _s._s-версии - они стандартные или только микрософт?
>>1500890 (OP)Раз тут тред про CLang, анон, поясни как скомпилировать эти файлы https://github.com/Wind4/vlmcsd с "языка шланг" в exe - gcc-компилятором.
>>1510495>_s-версии>только микрософт>>1510520Устанавливаешь cygwin (или что там сейчас ходовое на шинде), качаешь исходники, заходишь в консольке по адресу исходников и запускаешь gmake (блядь, каким же надо быть пидорасом, чтобы в 2020 использовать make, и не просто make а, блядьб, требовать gmake).
>>1510535Пффф, этот кинкгвин хуй поставишь на XP. Не уже-ли без кигвина нельзя сбилдить шланг в win32 exe?
>>1510605В том то и дело, что работает, но только на XP.На win8.1 не хочет пахать.Вот я и хочу поколупаться в коде, может чё дописат надо чтоб робило. Но для начала надо сбилдить. Где этот gmake в mingw?Вижу только make, только он чуток другой там - mingw32-make.
Анон, что скажешь по поводу серии книг Антона Столярова «Программирование: введение в профессию»? http://stolyarov.info/books/programming_introВкатываюсь в C со второй попытки, сначала курил K&R, потом поступил на бассейн школы 21, в итоге слил большую часть заданий, потому что начал баловаться хаками типа while(*p++) не догнал про отличие между массивами и указателями на массив, и вообще передачу значений функциям обращался к Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management", но времени на спокойное ботанье было мало, не взяли по итогам. Интерес немного поугас, поботал C#, и стало тоскливо.Наткнулся на Столярова и снова начал ботать пошло очень бодро, действительно чётко объясняется про работу с указателями, понял как работают заголовки, линке. В целом аргументированно поясняет за плохой, хороший стиль, за Unix. Как по мне книжки лёгкие с юмором, только часть с командами на i386 занудная.Кто ещё интересовался проектом?
>>1507420>2) Как правильно сделать некоторые переменные библиотеки статическими глобальными?Разобрался. Их нужно перенести из хеадера в начало с-файла перед функциями, в которых они используются, и добавить перед каждой из них static. Тоже самое делается с функциями - из .h файла убираются декларации функций, которые мы хотим сделать статическими, а в .с файле перед функциями нужно поставить static, и ещё inline можно поставить до кучи, если надо(static inline).
>>1510668Таким образом в .h файле у нас "интерфейс" библиотеки - внешние функции(заголовки) и глобальные переменные, а в .c файле "начинка" - внутренние функции и переменные, видимые только в этом файле(и тела функций, объявленных в .h файле).
>>1510639>while(*p++)Для ньюфага это нормально. Не понятно только почему ты думаешь, что такая фигня могла тебе что-то завалить. Чё за бассейн школы? К и Р кстати не читай это залупа, Оно в шапке только из-за эстетики. Читай две другие книги из оппоста. А ваще читай Страуструпа как нормальный человек, а к этому треду вернёшься позже
>>1510912Я уже сам написал с моим хуёвым знанием си. Непонятно только почему мы в функцию передаём не указатели на переменные, а сами переменные
>>1510930То есть указатель на float это всегда массив? И поэтому компилятор не ругается и даёт взять индекс у этого указателя?
>>1510938yoba и &yoba[0] это одно и тоже, потому что yoba[a] это по определению *(yoba+a), если подставить получишь &•(yoba+0) или yoba.Но массивы это не указатели. У них как минимум sizeof разный.
>>1510941Опять ньюфажеская платина.int i = 1;int y[] = {2,3};Что хранится в первой переменной? Что хранится во второй переменной? Адрес первого элемента? А вот и нихуя.
>>1510495> _s-версии - они стандартные или только микрософтДа, они типа стандартные (C11, Annex K), но это приложение необязательное и смысла в нем мало, поэтому кроме MS его никто не хочет реализовывать. Но вот фыркает она совершенно зря, поэтому затни ее нахуй -D_CRT_SECURE_NO_WARNINGS и не обращай внимания.
>>1510973Ни в чем, в первом случае циферка в [] посчитается автоматически, в зависимости от количества инициализаторов. Сравни с: int x[] = {2, 3}; int y[1000] = {2, 3} и int x[] = {1, 2, 3}; int y[2] = {2, 3}.
>>1510981А вот на стекоферфлоф попалась такая еботняАvoid bubble(int array[], int size) {}это тоже самое чтоvoid bubble(float *array, int size) {}?
>>1510992Скоро у всех будет пригорать, потому что для упрощения статического анализа в C21 обдумывают возможность притащить VLA в стандартную библиотеку и для новых функций делать сигнатуры вида int foo(int num, int array[num]). Это квинтэссенция языка: тут и массивы переменной длины, и преобразование массива в указатель в аргументах, и порядок аргументов изменен с логичного на обратный в угоду кривому синтаксису.
>>1511065Ты читать умеешь? Оно есть, но в стандартной библиотеке функций типа memset(size_t length, char mem[length], int c) пока нету.
>>1510465Атвичаю.1) Пишем на Си. В ассемблер изредка лезем в ознакомительных целях и в процессе отладки, тупо посмотреть, где какой регистр перещелкивается. 2) Используем гит и гитхаб. Код ревью есть в виде "эй, Уася, пусти меня за комп, я твой код погляжу" со стороны старшего программиста. 3) Чёткого разделения нет. Но есть градация по уровню ответственности, как бы сказать, по твоей значимости для проекта. Кто-то пишет ядро, кто-то дописывает мелкую периферию. Со временем ты прокачиваешь квалификацию, берешь на себя всё больше и становишься главнее. 4) Тестировку делаем путем прошивки в макетный образец и проверки жизнеспособности прибора. Отдельных виртуальных тестов нет.5) Никак, даже не знаю что это.
>>1511185>Используем гит и гитхаб>"эй, Уася, пусти меня за комп, я твой код погляжу" со стороны старшего программиста.Старшего программиста еще не обучили смотреть коммиты в гитхабе?
Аноны, я тут очередь пытаюсь реализовать очередь с проверкой опустошения/переполнения, в которую один поток будеть все "пушить", а пара других потоков - забирать. https://pastebin.com/dnq12VpUтут возможны не относящиеся к вопросу проебы - просьба не обращать вниманияСогласно документации, pthread_cond_signal отличается от pthread_cond_broadcast тем, что разблокирует at least один поток, висящий на pthread_cond_wait. Моя же логика предполагает, чтоб ровно отцеплялся exactly один поток. Как это сделать, суканахуйблджад?!?!!
>>1511470Хм, у меня в glibc-doc написано: > pthread_cond_signal restarts one of the threads that are waiting on the condition variable cond. If no threads are waiting on cond, nothing happens. If several threads are waiting on cond, exactly one is restarted, but it is not specified which.А вообще, если не просто glibc, а какой-то POSIX-дроч, то я, честно говоря, нихуя не понял в твоём коде, хотя я немного нетрезв._add and _remove()...Оба берут мьютекс. Я так понял, мьютексв структуре это типа объект для защиты структуры от конкурентного изменения, самый такой общий мьютех.Ты в обеих функциях его берёшь, а внутри кидаешь сигналы по поводу признаков пустоты, полноты. В области, заблокированной этим мьютексом?У тебя и ждёт, и кидает в этой области, но в ней может быть один, или че? Не поня...pthread_mutex_lock(this->mutex); // Чтобы никто не вошёл... if QUEUE_EMPTY(this) pthread_cond_wait(&this->empty, &this->mutex); // Жаль, что никто не кинет, потому что не войдёт?!
>>1511649pthread_cond_wait сама разблокирует мютекс и блокирует обратно. Если бы это делалось руками, не исключен случай, что как раз между pthread_mutex_unlock и pthread_cond_wait другой поток сделал бы pthread_mutex_lock и pthread_cond_signal.
>>1511649Ну охуеть теперь. Короче, суммарно количество возвратов pthread_cond_wait равно количеству вызовов pthread_cond_signal, но в отдельный момент времени может перекосить. По ходу, надо оставлять такой запас до переполнения, сколько ядер процессора, и все будет ок. Главное, что эти фейлы не аккумулируются.
>>1511990Я просто к зеленому привык, потому что обычно на ЭЛТ сижу, а там желательно, чтоб только один канал горел из RGB при отображении высокодетализированной монохромной графики (несведение).
>>1512151Работа линукс систем кернел анус девелопером имеется вообще или это только для бородатой илиты?
>>1512163Сейчас продвигается импортозамещение, в ближайшие 1.5-2 года появится пара контор(одна, кстати, уже собирается внутри Я), занимающихся православным линуксом для государства, присасывайся и получай лидерские должности пока не поздно.
Драсте. Как мне получить строку, в случайных местах разделенную пробелами и символами переноса строки? Символ окончания eof
>>1512631Олимпиаду пишу))) Она какая то нереальная. Там одно из заданий узнать какой текст в картинке зашифрован. Мне даже в асм треде не смогли помочь
>>1512701Очень похожа просто формулировка на тестовое в одну из контор в моем городе.Там просто "найдите текст" и никаких подсказок?Мусорные биты паддинга смотрел?
Объясните дауну, почему когда я инициализирую массивfloat array[10] = {};И потом заполняю егоarray[0]=5;array[1]=34;array[2]=79;Он заполняет оставшиеся пустые элементы последним записанным значением,то есть вот так{5, 34, 79, 79, 79, 79, 79, 79, 79, 79}
>>1500890 (OP)Доброго всем дня, есть вопрос - нужно будет учить Ардуино и учить на нем писать малолетних дебичей. Ранее освоил такое недоразумение, как RobotC для Ev3. Какие гайды посоветуете курить?
>>1512852> почему когда я инициализирую массив> float array[10] = {};Он заполняется нулями.> Он заполняет оставшиеся пустые элементы последним записанным значениемЭто не он, это ты. Ищи у себя баг при выводе, например.
>>1500890 (OP)Так чё, как сконпелировать шланг на XP без пердолинга? Хуле cygwin 40 гигов на диске сожрал? Мне ж под прон уже не осталось.
Жизнь заставила ознакомится с С, после одноги из смузихлёбных языков. Оказывается у C вполне современный синтаксис, который позволяет делать вещи типаint z = 10;while ((c = getchar()) != EOF ) {};В связи с этим два вопросаПочему считатеся что у C доисторический ситнаксис? И когда уберут семиколонс вконце строки?
>>1500890 (OP)Нужна библиотека MPI, что-то не могу найти её в MinGW, кто-нибудь знает где её можно взять?
>>1513863Не знаю что там в го и свифте, но в конпеляторах сишки по семиколонам шаги лексического анализатора завязаны
>>1513890Ахуеть ну вон в питухоне лексический анализ по эскейпам и табуляции, тебе в любом случае придется чем-то эти семиколоны заменить
>>1513912Зачем их заменять, если просто можно добавить вариант с \n, оставив семиколон для однострочных высреров и обратной совместимости, поехавший? При чём тут табуляции? Про фигурные скобри речи не шло.
>>1513735Да зачем я вообще учил этот питон? Думал что пригодится для нейронок, лучше бы заместо учил бы Си и сейчас бы не сидел над ним.
>>1513914int a = foo() + bar() + baz();Давай, добавь сюда \n, оставив ; для обратной совместимости. Школьник не знает, сколько крови ASI (automatic semicolon insertion) выпило людям в жс.
>>1513985>Школьник не знает, сколько крови ASI (automatic semicolon insertion) выпило людям в жс.А нешкольник, видимо, ни разу в жизни не писал конпеляторы. Блядь, эту хуйню любой парсер, имеющий представление о приоритетах операторов распарсит тебе это говно, жс макаки либо не осилили алгоритм Пратта (лол), либо там как обычно какая-то неисправимая прослойка легаси говна (скорее всего).https://ideone.com/sdmom6 — сложна
>>1513729>И когда уберут семиколонс вконце строки?В твоем примере он не нужен, ну или {} не нужны если оставишь ; Не уберут никогда, это разделитель, поскольку стилистику как в питухоне никто не навязываешь, можешь все одной строкой перемогать.
>>1514025>о приоритетах операторовКокие на хуй приоритеты, препроцесор заменяет новую строку, табы и прочую залупу на пробел и все. Че там ЖС макакам не нравится, не понимаю.
>>1514029>Кокие на хуй приоритетыhttps://en.wikipedia.org/wiki/Pratt_parser>ебучий додик даже не в курсе как парсятся выражения>препроцесор заменяет новую строку, табы и прочую залупу на пробел и всеНу так даже лучше, меньше еботы лексеру, лол. Перейди по ссылочке, потыкай алгоритм, ахуеешь, до чего технологии дошли.
>>1514025Твой пример по ссылке наглядно показывает почему точки с запятой нужны - глазам проще отделять стейтменты от форматирования Их отсутствие это понты ради понтов
>>1514050>глазам проще отделять стейтменты от форматирования В ванлайнерах — да.В нормальном коде — нет, это рудимент, примерно как хвост у людей, лол.
>>1514025> распарсит тебе это говноТы рано начал о компиляторах думать, сам сначала распарси. Это одно выражение или три отдельных?
>>1514095>Мамку твою потыкал,Деда твоего потыкал.>Твой лексер здесь нахуй нинужонВ функции main() все пиши, как gnuтые диды зовещале.>>1514081>Ты рано начал о компиляторах думатьНу ты о них вообще не думаешь, просто хуйню срёшь, не понимая о чём срёшь.> Это одно выражение или три отдельных?Это одно бинарное выражение с ещё одним вложенным бинарным выражением.
>>1514103> Это одно бинарное выражение с ещё одним вложенным бинарным выражениемТак вот это три отдельных выражения: перед вызовами bar() и baz() стоит унарный плюс, мне так захотелось. Только наличие или отсутствие точки с запятой отличаетa() + b() + c() от a(); +b(); +c(); Если в Си притащить \n как разделитель, подобные неоднозначности полезут отовсюду. Или это будет уже другой язык с другим синтаксисом, не совместимый с существующим кодом, такой Си никому не нужен. А теперь иди нахуй. Если нравится питон - пиши на питоне, в обратную сторону совместимость с ; как раз отлично работает.
>>1514127>это три отдельных выражения>мне так захотелось>подобные неоднозначности полезут отовсюдуДружочек, ты хоть сам-то понимаешь, как ты только что жидко сиранул себе в штаны?
>>1514141Мы разговариваем не о том, как сейчас, а о том, что было бы, если бы выражения разделялись еще и \n. Ты правда настолько тупой?
>>1500890 (OP)Мне кажется тут у нас школохрюн завелся, который постоянно всплывает с ахуительными предложениями
>>1514149Да нет, ты просто тупой долбоёб который даже не представляет как работает парсер, и воюет с мельницами.
>>1514153На чём? На том, что в твоёи манямирке парсеры не могут посмотреть следующий символ? У тебя вся аргументация уровня "мни так зохотилось", не понимаю, почему ты продолжаешь срать.
>>1514159Парсер может. Но текущая грамматика Си позволяет мне использовать унарные операторы, и это означает, что твой парсер сломает существующий код в любом случае, потому что в существующем коде могут встретиться оба варианта: и строки с унарными операторами, и выражения с бинарными операторами, разбитые на несколько строк. Не нравится пример с унарным плюсом? Он слишком надуманный, хотя и может быть сгенерирован каким-нибудь макросом? Вот тебе другой код:void foo(int x) {if (x)returnbar(x);}Ты притащил \n в дополнение к точке с запятой, твой компилятор видит этот код. Дальше что? Когда вызывать bar(): при ненулевом x или наоборот при нулевом? Опять-таки, ты можешь как угодно определить новую грамматику, новый парсер, но в одном из двух вариантов ты сломаешь существующий код, а> не совместимый с существующим кодом, такой Си никому не нужен
>>1514189Подожди, сейчас этот необучаемый кукарекнет, что нехуй так писать. После всего вышенасранного ты все еще надеешься, что это шизло поймет абстракцию и предположит на месте bar какой-то длинное выражение? Анончики, давайте дружно не будем кормить залетного гормона стресса.
>>1514189Поделись лучше лайфхаком, как в VIM одним чихом делать красивые колоночки бэкслешей справа (многострочные дефайны).выстрел на удачу - вдруг сталкивался
>>1514189О, наконец-то ты нормальный пример притащил! Через 2 часа срачей.> Опять-таки, ты можешь как угодно определить новую грамматику, новый парсер, но в одном из двух вариантов ты сломаешь существующий кодЕсть ещё третий вариант, который ты пропустил: добавить ещё один этап компиляции (читай — промежуточное представление), в котором уже будут выведены все типы и можно будет резолвить подобные конфликты. Так, собственно, работают все языки с полноценным выводом типов (где они выводятся даже на уровне аргументов функций) и кучей синтаксического сахара (окамл, скала, хаскелл итд). Для избавления от ; это дохуя оверкилл, но если думать о другом сахаре — заебись идея, имхо. Как плюсы, но без кучи говна.
Посоны, как в Linux узнать, сколько реальных процессоров? sysconf(_SC_NPROCESSORS_ONLN) считает виртуальные...
>>1514578А че, идея с cpuid плохая?https://stackoverflow.com/questions/31402979/how-to-get-number-of-cores-on-linux-using-c-programming
>>1514632Думаю, он имел в виду под реальными число физ. ядер, а под виртуальными SMT или что-нибудь ещё...
Есть лаба по сишнику, в stm32f769 записать программу на атолике, чтобы по нажатию поочередно включились светодиоды
>>15146681. Генерируешь проект в КУБЕ.2. Берешь и мигаешь.GPIOA->BSRR |= GPIO_BSRR_BS1;GPIOA->BSRR |= GPIO_BSRR_BR1;
>>1514630Гиперпоточность Intel всего лишь позволяют делать вдвое меньше медленных переключений контекста между сотнями процессов ОС - каждое ядро без задержек крутит барабан между двумя потоками, отдавая им по полмощности. Я же распараллеливаю не ради логики, а ради производительности, и при кол-ве потоков равном числу физ.ядер уже выжимаю всю мощь, а дальше только проигрываю из-за мютексов-хуютексов. В теории возможны неточности, но я затестил, и все подтвердилось.>>1514632процессОРЫ
>>1514634Ядра же не делятся на труъ и не-труъ. Просто каждое труъ-ядро может косплеить два не-труъ-ядра.
>>1514630Ой, я не сразу толком воспринял твой ответ. Пересмотрел ссылку и увидел про libcpuid. Спасибо, анон.
посогитк разобраться с атрибутом constЕсть функцияvoid copy(char to[], char from[]) { int i; i = 0; while ((to = from) != '\0') { i = i + 1; }}IDE говорит Pointer parameter 'from' can be pointer to const. Щито это такое то, я думал это только в С++ есть
>>1515183А, это абу скобки съел.Вощем переименуй файл из .cpp в .c чтобы иде знал что это си, или сделай != 0Тестируется окончание строки нулем.
>>1515180Если ты сделаешь copy("yoba", "peka") твоя программа упадёт потому что йоба это константа даже если язык считает что это char*
>>1515216>даже если язык считает что это char* Что значит "даже если считает", константа и есть char★, только эта память рид-оунли, писать нельзя. Просто компилятор не отлавливает этот момент, поэтому программа падает не на этапе компиляции, а во время работы в момент неправильного обращения к памяти.
>>1514957Как таковые отдельные - да, но если одно не-труъ загружено, то некоторые >>1514956 не хотят использовать ещё одно не-труъ.>>1514956Ты точно туда ответил?> В теории возможны неточностиЭто точно.>>1514961Есть либкпуид, а зачем тебе он?Там есть ответ с inline assembly, инструкцией CPUID, угу... В теории, самый быстрый способ
Как правильно сделать дебаг в крестах/сишке? Хочу что-то типа такого #define debug_enabled 0void debug(char line[]) { if (debug_enabled) { std::cout << line << std::endl; }}gcc -Ddebug_enabled=1 main.cpp
>>1515413Ну я лично делаю так:В коде #ifdef _DEBUG/ Debugging code*#endifgcc -D_DEBUGА если и нет дебага, то не дефайню.Зачем тебе значения типа true, false?Да и у тебя какая-то лишняя проверка происходит.
>>1510605поставил cygwin для XP, и даже получилось вроде сбилдить что-то 64-битное. Запускал компиляцию так: "make CC=gcc"Не подскажешь как x86 версию exe-шника получить? Ну, чтобы win32 exe это было.Насколько я помню, gcc компилирует одиночный .c файл в win32.exe так:>gcc -m32 source.c -o destination.exe
>>1515418Зачем тебе префикс? Подчеркивания перед именами зарезервированы для компилятора. Просто -DDEBUG и внутри:#ifdef DEBUG...#else// Не забываем.#define NDEBUG#endif>>1515413Излишнее доверие к оптимизатору до добра не доводит. Лучше код физически препроцессором выкинуть.
>>1515705> Подчеркивания перед именами зарезервированы для компилятораТочно только для него?Сам видел, вроде, либы, где подчёркивания юзались, не двойные, канеш, но одинарные точно.А здесь вообще незачем, агась, заглючил.
>>1515709> Точно только для него?Ну для стандарта и его реализации: имена __name (два подчеркивания) или _Name (подчеркивание и символ в верхнем регистре) зарезервированы для любых применений, _name (одно подчеркивание) - для глобальных переменных и функций. У тебя макрос, поэтому он подпадает под первый вариант.> Сам видел, вроде, либы, где подчёркивания юзалисьДа, многие пишут. Особенно если это #ifndef _XXX_H_ #define _XXX_H_. И это даже скорее всего никогда не приведет к каким-либо проблемам, но делать так все равно не стоит.
Сишники мои любимые, я искренне верю, что вы самые умные! Расскажите мне, СУКАНАХУЙБЛЯДЬ, что имели ввиду авторы introduction to algorithms - гниды ебаные???? Чьей матери за щеку они собрались присваивать z.p.p???????? В моем воображении ветка //case1 прекрасно фиксит RB-шность, вот только последняя строчка там в хуй не уперлась. Короче, жопа дымится, стены текут, не оставьте в беде, прошу, молю, благаю...
>>1515766Ой блядь, я тупой, там же z.p.p.p может тоже красным оказаться, и тогда хуй ты z.p.p перекрасишь. Но что ИМЕННО делает это присваивание?????????? Сука, как же я ору с псевдокода, призванного быть читаемым, а на деле еще более всратым, чем университетские лабы на асме.
Ладно, посмотрю, как они всю эту хуету разжевывают дальше. Чувствую себя ебаным кретином. Эх, вот бы дедушка Кнут никогда не старел и пилил актуальную годноту...
БЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯДЬ!!!!!!!!!!!!!!!!!!!! Я ЗАЕБАЛСЯ ЧИТАТЬ ЭТО ГОВНИЩЕ ЛЮТОЕ!!!!!!!!!!!!! Дохуиллион страниц разжевывания очевидного и нихуя не понятно, что таки имелось ввиду. Пидарасы, блядь, унтерменши, кто такую хуету пишет. Как будто языком не владеют или читателя-дауна троллить пытаются. Объективное говно. НОЛЬ оправданий в пользу такого слога, НОЛЬ БЛЯДЬ!!!!!! Посоветуйте что-то такое же комплексное, но нормальное, пазязя...
>>1515241Ну я примерно то же и сказал. Защита памяти вообще к типам не относится, то есть к языку программирования генерирующему код. const это лишь декоратор, пометка компилятору вывалить ошибку для удобства программиста. То есть, указатель это просто указатель, ему всё равно на какую память указывать.
имхо бинарные деревья это год мод. В реале и тебе и мне еще рано такое читать. попрогай немного для себя, освойся, составь для себя какой либо путь развития. Думаю что в этой книге описан сам концепт, на детали в таких кладут болт
>>1515872Просто я тем самым трахнул себя в жопу, когда вернулся к CLRS после недавней мысли "больше не прикоснусь". Лучше таки читать Кнута и немножко страдать от неактуальности среды, чем читать CLRS и множко страдать от общей всратости.
>>1516128Да я понимаю, что если чаще и больше читать, то мозг придрочится читать разные несовершенные тексты и без переедания кала извлекать норм инфу, но я ебал. Книги пишутся для всех, а не для неравномерно преуспевшего меня, но что-то к Кнуту у меня не возникает жалоб "тут пережевано, тут недожевано", по-честному все. Рассказывает, как умному человеку, и действительно врубается режим умного и все схватывающего человека. + задачки интересные.
>>1516128Я считаю, что когда что-то непонятно, для мыслящего человека естественнее остановиться и подумать, а не ускоряться в поисках подробных объяснений дальше по тексту, и хороша книга должна способствовать поощрять именно первый вариант, а то какое-то макаковоспитательство выходит...
Чё как. Нужно размерчик проги немного поджать. Уже переопределил все инты в int8_t, посредством этого сбросил около 4кб. Надо еще хотя бы 2кб ужать. Варианты?
>>1516411Прога представляет из себя мешанину из циклов и условий, думаю заебусь с асмом.>>1516357Что есть системколлы?
>>1516635>мешанину из циклов и условийДа нехуй делать. Никто не запрещает ставить локальные метки (с точкой) и отхреначивать логические блоки табами. В конце концов, можно попросить сишный конпелятор выплюнуть .asm и оптимизировать на свое усмотрение. Говорят, человек в теории до сих пор может вдвое лучше, чем -O3. Я понимаю, что тебе вес скинуть, а не ускорить, но с потанцевалом доминирования живых мозгов над алгоритмом все аналогично.
Сап, есть задача выполнить bash команду с помощью exec и все буквы в результате работы проги заменить на заглавные. Я написал её с пайпами, а теперь нужно с shared memory (shmget, mmap)https://pastebin.com/ndz3tH5m
Анон, N тредов назад советовавший мне прикрутить к своему архиватору алгоритм Бабушкина, ты содомит блядь. Я только сейчас загуглил и начал проигрывать.
>>1516999>>1516827>>1517127Пиздос, может вы еще ОС Попова или РусОС Горлова не знаете?>>1517113Что бы больше влазилов всякого
>>1517113Закон Мура. Могли бы - еще в 1970-м бы 128 разрядов сделали бы. Я в этом не шарю, но скорее всего это просто какой-то стандартный процесс на заводе, где все эти транзисторы уменьшают: столько-то месяцев на прототип, столько-то на испытания, столько-то на налаживание серии и т.д. и т.п. А каждый x2-шаг физически осуществим только с применением достижений предыдущего, то есть не могут они взять и в за один прекрасный полуторагодичный период x4 уменьшение ебануть. Брайан Керниган что-то подобное говорил про формирование конпелятора Сишечки, вроде "using sharp tool to make a sharper tool".
>>1516297libc активно используешь? Перепиши нужный функционал из либ, остальное выбрасывай.Вот например обертка над сисколлом write:static int write(int fd, const void* buf, unsigned int size) { long result; __asm__ __volatile__( "syscall" : "=a"(result) : "0"(__NR_write), "D"(fd), "S"(buf), "d"(size) : "cc", "rcx", "r11", "memory"); return result;}
>>1517227Да какой закон Мура, разрядность выбирается в зависимости от размера типичных данных, которые должна дробить машина.Разрядность МК в мире встраиваемых так и выбирают.64-бита хватит всем, ето точно. Больших объёмов памяти нет, большего кол-ва пикселей на дисплеях нет, для цветовых палитр больше не нужно.Ну и всякие ОС-ядерные переменные влезают.
Минуточку. Но ведь ничего не мешает на пентиум 2 объявить, что адреса её памяти теперь 64 разрядные. Биты в памяти одинаковые везде
>>1517550У них регистры 32 разрядные, не умеют оперировать 64 разрядными числами. Адрес это как бы число.
>>1517568то есть единственное что делает увеличение этого числа, это возможно засовывать больший объём памяти в комплютер?
>>1517587хеха это как раз псевдопрогресс как естьеще создатель тоталкоммандер, к примеру, много лет назад расстраивался по тому поводу, что его сначала заставили переписать прогу на юникод (а до этого она спокойно использовала расширенные кодовые страницы для азиатских языков для обеспечения локализации), а потом заставили и сделать 64разрядную версию программыон говорил, что это потребовало большого объема работы, но, по при это не добавив ни одной функциональной возможности
>>1517635>а это как раз псевдопрогресс как естьСегодня по твоему компутеры на том же уровне что и 20 лет назад? >что его сначала заставили переписать прогу на юникодКто заставил-то? Он сам придумал велосипед и решил потом его переписать, кекус.> а потом заставили и сделать 64разрядную версию программыЗаставили переписать говнокод с интами вместо size_t? Научили не говнокодить, всё правильно, лол.>при это не добавив ни одной функциональной возможностиНу так не будь там говнокода с велосипедами, и не надо было бы и переписывать. Он сам себе работу лишнюю создал.
Что за хуйня, оказывается память для всех блоков выделяется снизу вверх по коду? Почему так, в стеке же чем раньше вызвать что-то, тем раньше выделится место под это. Как это работает?
>>1517795расширенные кодовые наборы были как в ядре майрософт, так и в различных реализациях линуксаони справлялись со своей задачейюникод был следующим шагом, унификациейно, повторюсь, с точки зрения конечного функционала без разницы как оно внутри работаета программистам, тем не менее, приходится тратить уйму времени на переделку того что и так работает
>>1517922> память для всех блоков выделяется снизу вверх по коду? Память для автоматических переменных компилятор выделяет на стеке. Обычно сразу все твои переменные одним куском. Какой именно порядок будет внутри этого куска - зависит от компилятора, ключей компиляции и фазы луны. Не нужно на этом гадать.>>1517954> они справлялись со своей задачейНахуй пошел. У тебя в имени файла русские и французские символы - ты сосешь. У двух приложений разная ACP - ты сосешь при копировании данных. Вот это "не кладите компиляторы в директории с русскими буквами" пошло именно с тех времен, когда приложения сидели на всевозможных cp12151 вместо юникода. В своем тотал коммандере ты бы не смог на русской винде посмотреть аниму. Да даже выбрать аниму не смог бы - у тебя все тайтлы назывались бы "????? ???? ???" и "????-??? ?? ?????!". И удалить ее ты, кстати, тоже не смог бы. Ну нету у тебя на компьютере директории D:\Anime\????? ???? ???, нету!> с точки зрения конечного функционала без разницы как оно внутри работаетНу короч ты такой берешь сейчас приложение, написанное, ну например, на Visual Basic 6 (тот еще зверь: Unicode внутри, ACP снаружи), запускаешь в своей десяточке и копируешь из этого приложения русский текст. Что такое? Копируются вопросики? Как же так? Так это все потому, что ты у мамы программист, и у тебя по умолчанию английская раскладка клавиатуры. И ты меняшь раскладку на русскую, снова копируешь, и... все копируется! И других вариантов решения проблемы не было. Так вот и жили.
>>1517954То, что это было в ядре швиндовса явно не указывает на то, что это хорошая практика. Там ещё баги прошлых версий ради обратной совместимости эмулируют, это по твоему хорошая практика?Но мне больше понравилась предъява за 64 бита. Таких макак до си допускать нельзя, пусть раст сидит дрочит, если даже не знает какими типами индексироваться нужно, лол.
>>1517635>он говорил, что это потребовало большого объема работы, но, по при это не добавив ни одной функциональной возможностиКакая же там была говноархитектура
>>1518100>Там ещё баги прошлых версий ради обратной совместимости эмулируют, это по твоему хорошая практика?Это та самая причина, почему винда всегда будет на всех десктопах.
>>1518126В 10 очень много всего сломали. Вангую, что через несколько лет нативную поддержку 32-битных систем дропнут (как во многих линуксах и маках), и винду можно будет окончательно закапывать.
>>1518204Когда 32 дропнули даже на хипсторских маках — весь интернет засрали так, что воняет пол года спустя. Ты хоть представляешь, что будет, если сделать так с этой залупой, живущей ынтерпрайзом...
>>1517997ты хорошо написал, я все это вспомнил, все эти проблемы были и у меня в начале нулевыхно нехорошо посылать незнакомого человека вот
>>1518124не знаю, исходники закрытыно он долгое время писал tc используя delphi 3й версии и не хотел переходить на старшие версииговорил что только лишняя работа по переносу кодовой базы, опять же которая никак не скажется на функциональности приложения, но потребует много трудовых человеко-часов
Анончик, аллоцировал с mmap память под строку, хочу направить поток stdout в неё. В англоязычных интернетах нашёл только связку freopen("/dev/null", "a", stdout);setbuf(stdout, memory);Но она вроде как не работает, что делать?
Может кто-нибудь расскажет мне, почему FORTRAN такая хуита? Кому он нужен был вообще со всеми ограничениями?
>>1518372Вряд ли современные ученые учат языки программирования, максимум питон, а в основном сидят в матлабе наверное или в кастомных прожках написанных программистами.
>>1500973><libxxx.h> Это когда внутренняя (стандартная) библиотека компилятора, например iostrem или stdint.> "libxxx.h"Это уже подключаемая пользовательская библиотека(с гитхаба), находящаяся в одной папке с файлом main.c.
>>1518335Для mmap() я использую smh_open, который возвращает дескриптор. Я пробовал dup2 с ним, но не сработало
Почему не работает этот гениальный код?https://pastebin.com/DnSaquUkКак создать массив внутри отдельной функции и отдать его?
>>1518403>дед 60 лет>лиспЯ говорил про современных ученых. А старики понятно учили языки, ведь тогда компьютеры были такими, по другому ими и не могли воспользоваться, но сейчас ситуация обратная, скрипты решают даже в программировании, а ученые, напоминаю, даже не программисты.