Программирование

Ответить в тред Ответить в тред
C Programming Language #65 /clang/ Аноним # OP 10/11/20 Втр 17:01:08 18527101
C Propaganda.jpg 1965Кб, 2000x2610
2000x2610
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ https://wandbox.org/ или 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/n2479.pdf (февраль, с диффами)
- Последний черновик ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2583.pdf (октябрь)

Чем компилировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 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://github.com/kozross/awesome-c

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №62: https://arhivach.net/thread/616070/
- №63: https://arhivach.net/thread/623165/
- №64: https://arhivach.net/thread/623166/ >>1830513 (OP)
Аноним 10/11/20 Втр 17:14:23 18527262
Аноним 10/11/20 Втр 17:17:11 18527303
>>1852726
По С++ тред рядом в /pr/, воспользуйся поиском. Языки разные.
Аноним 10/11/20 Втр 17:20:06 18527354
>>1852726
Проще, компактнее, меньше рантайм, меньше оверхеда (да-да, даже vtable это индирект колл) больше охват девайсов.
А вот почему C, а не Zig
Аноним 10/11/20 Втр 17:21:19 18527375
>>1852735
Тогда зачем С++, а не С?
Аноним 10/11/20 Втр 17:35:14 18527496
>>1852735
Потому что правильно - Sieg. Чел слова писать не умеет, а ты хочешь его языком пользоваться
Аноним 10/11/20 Втр 17:57:36 18527767
>>1852737
Сложнее, громоздко, больше рантайм и оверхед.
Аноним 10/11/20 Втр 18:11:19 18527908
>>1852726
Си - кайфовый минималистичный читабельный язык для души.
Аноним 10/11/20 Втр 18:15:02 18527939
>>1852790
Но как без классов и объектов? Массивы передавать? А без оверрайдов и интерфейсов? Без дженериков?
Аноним 10/11/20 Втр 18:23:40 185279810
>>1852793
>Но как
Без задней мысли.
Аноним 10/11/20 Втр 18:55:49 185282411
>>1852793
Но объекты суть структуры с указателями на функции. И так далее.
Аноним 10/11/20 Втр 18:59:23 185282812
>>1852824
И где тут минимализм?
Аноним 10/11/20 Втр 19:07:05 185283513
>>1852735
>меньше оверхеда (да-да, даже vtable это индирект колл)
Платишь за то, что используешь.
Переизобретённое ООП в рамках С со структурой c указателями на функции — это тоже индирект колл.

Факты, которые ты привёл, верны. Но твой аргумент — invalid.
Аноним 10/11/20 Втр 19:28:40 185286914
>>1852726
По тому что С хватает для своих задач и не надо разбирать весь сахар чтоб написать программу.
>>1852737
За тем что С не хватает когда твой проект разросся и стал большим на столько, что ты сам выдумываешь плюсовый сахар вместо того чтоб взять готовый.
Аноним 10/11/20 Втр 19:55:42 185290315
>>1852828
А почему его тут нет?
Аноним 10/11/20 Втр 20:03:30 185291916
>>1852793
Ты шо ебу дал? Мы тут на мк пердолимся

СВОБОДУ ЖЕЛЕЗУ! ХУЙ ЖЭЭСУ! ЗИП ФАЙЛ!
Аноним 10/11/20 Втр 20:04:09 185292017
>>1852869
> ты сам выдумываешь плюсовый сахар вместо того чтоб взять готовый
С плюсовым сахаром принято тащить кучу говна. Например, шаблоны. Например, исключения.
Аноним 10/11/20 Втр 20:13:25 185292518
>>1852835
Насколько я понимаю, в с++ ты все же платишь больше, чем используешь, а иногда используешь лишнего.
Аноним 10/11/20 Втр 20:54:56 185297419
>>1852925
Я бы попросил привести пример, но тред не про это, так что не надо.
Аноним 10/11/20 Втр 23:34:52 185313120
>>1852920
>Например, шаблоны

Которые позволяют в компайл тайме в миллиард раз больше того что может сраный препроцессор ссей и всё это с проверкой типов вместо ссяшной стрельбы из пулемета по ногам копипастой и мисюзом.
Аноним 10/11/20 Втр 23:43:14 185314021
То есть С для всего, что имеет тактовую частоты не выше пары сотен мегагерц?
Аноним 10/11/20 Втр 23:59:07 185316122
Аноним 11/11/20 Срд 00:14:02 185316923
>>1853140
Если объяснять на пальцах, то ты в браузере читаешь текст выводимый через C-либу freetype и смотришь картинки через C-либы libpng, jpeg и так далее.
Аноним 11/11/20 Срд 00:23:04 185317324
>>1853131
Кстати, да, не понял его предьявы к темплейтам.
С эксепшенами ещё могу понять, сам отключал в некоторых проектах.
Аноним 11/11/20 Срд 00:33:14 185317925
>>1853140
Шизанутый, сколько всего разного может "пользоваться" сишными библиотеками? Сколько всего может использовать сишные библиотеки? А сипипишные, а? То то же.

А ты, наверное, обычный js-тролль, который тааааак любит БААААЛШЫЫЫЕ СЫСТЕЕЕМЫ на js, да ведь, толерантный хипстерочек?
Аноним 11/11/20 Срд 00:49:33 185318526
>>1853179
Ну тут ты немного не прав, многие С++ либы иногда могут иметь Сишный апи через extern "C" и описание функций, которые дёргают методы из классов.
Впрочем, у всех языков ffi обычно ассоциируется с вызовом именно сишных функций.
Аноним 11/11/20 Срд 00:53:40 185318727
>>1853169
Так, наверно, исторически сложилось, или из-за совместимости, или из-за линух-пердоль. Почему, кстати, они пишут на С?

>>1853179
Нет, но я вправду не имел дел с С/C++, поэтому пытаюсь понять. Суть не в том, чтобы система была большой, а чтобы программисту было удобнее и эффективнее работать. А железо уже давно слишком быстрое, чтобы разница в производительности была заметной.
Аноним 11/11/20 Срд 01:00:53 185319128
>>1853187
Чтобы избежать лишних прослоек.
Системщики - вообще страшные люди, крайне любят низкоуровневое программирование, байтоёбство и прочие вещи, которые всякие фронтэндеры считают ненужными и излишними.
А Си тебе как раз дает относительно низкий уровень абстракции и, вместе с тем, крайне широкие возможности по твику и решению тех или иных прикладных задач.
Я сам крайне охуел, когда у меня получилось на сях реализовать прогу для восстановления фотографий из RawData и парочку простейших фильтров для джипега. При этом, не было мест, в которых бы у меня был глобальный затык из-за непонимания парадигмы языка. Да-да, я тоже прошёл CS50.

Пойми один простой вещь.
Когда ты пишешь на Питоне - помни, что под каждой твоей строчкой крутится полсотни строчек сишного кода.
Да и не только на Питоне, лол.

А ведь чем ниже уровень - тем меньше вероятность глобально накосячить.
Аноним 11/11/20 Срд 01:10:06 185319529
>>1853191
>А ведь чем ниже уровень - тем меньше вероятность глобально накосячить
Наоборот: чем выше уровень, тем эффективнее и лучше отлажен код уровнем ниже. А сколько там строк для меня значения не имеет.
Аноним 11/11/20 Срд 01:12:41 185319630
>>1853131
Скажи, а оно мне надо?
Вот если у меня задача получать данные по спиайю каждые 100 микросекунд, брать бпф и выдавать спектр в уарт НАХУЯ МНЕ НУЖЕН ЭТОТ САХАР? чтоб больше запутаться?
>>1853140
С для того где его хватает, частоты не важны.
>>1853173
>не понял его предьявы к темплейтам.
Они не нужны, если у тебя маленький деревянный код, они только будут мешать чтению.
Аноним 11/11/20 Срд 02:07:45 185321331
>>1853196
Там, где они не нужны — они не нужны. Кто ж поспорит. Но в других местах нужны.
Аноним 11/11/20 Срд 02:15:39 185321732
>>1853185
Да, кстати. Спасибо, что поправил. Могут иметь и сишный интерфейс.

Ну, я как раз и про "привязку" ffi к C и имел ввиду.
Аноним 11/11/20 Срд 02:52:50 185322433
Аноним 11/11/20 Срд 09:29:33 185329634
Что несете.

Классы это структуры. Си с классами это Си, а не кресты.

А вот кресты это STL, эти аллокаторы, енумераторы и прочие говнокаторы, и джаваскрипт-однострочная дрисня с вложенными функциями. Короче любое говноскриптовое говно - черный ящик, которое хуй пойми как работает и в глазах программиста никак не соотносится к реальному коду - ассемблеру.
11/11/20 Срд 09:36:24 185329835
>>1853131
> Которые позволяют в компайл тайме в миллиард раз больше
Да. Только что-то сложное практически невозможно прочитать. Да, как и сложные макросы в Си. Но лучше от этого шаблоны не становятся.
Аноним 11/11/20 Срд 11:20:35 185333536
>>1853195
Что-то я орнул. Далеко не всегда.
Если так идти выше по абстракции - зачем вообще кодить?
Устраивайся менеджером и колошмать мозги подчиненным разработчиком: у них-то будет все лучше отлажено, чем у тебя.
Аноним 11/11/20 Срд 16:31:04 185363837
>>1852793
>Массивы передавать?
Указатель на первый элемент.
Аноним 11/11/20 Срд 16:32:45 185364038
>>1852920
>. Например, исключения.
Отключаются опциями компилятора.
При этом классы останутся доступны, а STL отвалится.
Аноним 11/11/20 Срд 16:46:04 185365539
>>1853640
> а STL отвалится.
Необязательно
Аноним 11/11/20 Срд 16:52:45 185366240
>>1853298
Да все оно читается замечательно. А если программа большая и сложная так вообще намного лучше чем 500 функций под каждый принимаемый тип с именем этого типа в имени.
МайКласс1sumМайКласс2()

А вот в маленьких программах где все прибито гвоздями и точно известно что и куда ты передаешь это действительно усложняет чтение.

>>1853638
Хранить глобально ничего никуда не передавать.
Привет эмбеддед.
>>1853640
И толку с таких крестов? Выше писали С с классами это не кресты.
Аноним 11/11/20 Срд 16:54:08 185366441
image.png 52Кб, 753x250
753x250
image.png 3Кб, 53x272
53x272
>>1853662
>И толку с таких крестов?
Много.

>>1853662
>А если программа большая и сложная
Аноним 11/11/20 Срд 17:00:10 185367242
>>1853335
Затем, что чем выше по абстракции, тем сложнее, то есть обладающий большим набором признаков и свойств результат. А чем этот набор больше, тем выше шанс, что он уникален и меньше тебя удовлетворяет.
Ты же на машинном коде все не пишешь?
Аноним 11/11/20 Срд 17:01:48 185367543
>>1853672
>Затем, что чем выше по абстракции, тем сложнее, то есть обладающий большим набором признаков и свойств результат. А чем этот набор больше, тем выше шанс, что он уникален и меньше тебя удовлетворяет.
Охуеть, кто-то ещё кроме меня с интеллектом итт
Аноним 11/11/20 Срд 17:45:38 185373044
>>1853664
Чё сказать хотел?кроме того что ты не умеешь создавать новые файлы.
Аноним 11/11/20 Срд 19:26:19 185381145
>>1853662
> И толку с таких крестов? Выше писали С с классами это не кресты.
У меня друг работал в геймдеве, писали игры для телефонов на крестах. И во всех проектах по дефолту прям были выключены исключения и rtti. Использовалась своя stl. Так что - такие кресты нужны. То что ты юзекейса не нашел - не означает что другие не найдут.
Аноним 11/11/20 Срд 22:26:08 185395446
>>1853730
Это не мой код, это мерзкий openssl, с которым приходится работать. Хотел сказать — посмотреть, какая помойка.
Аноним 11/11/20 Срд 22:27:46 185395747
Аноним 12/11/20 Чтв 02:26:08 185402748
>>1853954
>Хотел сказать — посмотреть, какая помойка.
Просто ты никогда не видел такого и возбудился.
Но при этом то же самое на С++ выглядело бы красивше.
Аноним 12/11/20 Чтв 03:57:43 185405049
>>1854027
>Просто ты никогда не видел такого и возбудился.
Видел конечно, но обычно мимо проходил, а тут вникать пришлось.

>Но при этом то же самое на С++ выглядело бы красивше.
Об этом и говорю.
Но так-то и на С было бы красивше чем то, что есть, если бы писали не так монолитно КАК ДАУНЫ БЛЯДЬ.
Аноним 12/11/20 Чтв 04:15:49 185405550
>>1853954
Так его вроде математики, а не программисты писали.
По крайней мере слышал такое объяснение, когда Heartbleed в нем нашли
Аноним 12/11/20 Чтв 09:44:49 185411851
>>1854050
Код пишет человек, а не язык.
Чем больше свободы в языке, тем более уебищный код можно написать. но это если программист рукожоп, а если программист грамотен, то и код будет тем лучше, чем больше у него возможностей.

Говоря просто, крутой язык (си) отражает способности программитста. Какой ты - такой твой код. Свобода означает безграничные возможности, но в то же время накладывает абсолютную ответственность. За свои действия отвечаешь только ты, полностью, никаких нянек вроде языка с анальными ограничениями и принуждениями тут нет, так что свои косяки свалить не на кого и за тебя красивый код никто не напишет и не направит "как надо". На си пишут только настоящие программисты, которые сами за себя отвечают и сами знают как им надо, а не ищут нянек, которые помогут и направят тупое дитятко на "правильный путь".
12/11/20 Чтв 12:17:30 185419252
>>1853191
бро, мож тоже пройти CS50?
Аноним 12/11/20 Чтв 13:28:29 185422853
народ, вы тут по операционкам шарите
скажите, я вот себе поставил линукс и проебался: не работают дрова вай фая и нет возможности подрубить кабель
начал вручную скачивать на одном компе дрова и их зависимости всякие, но в итоге ебусь уже день с тем, что одно трубует другое, а оно еще другое и еще и еще - короче пиздец
вопрос по теме: одна из вот этих нужны хуевин - gcc, но у него вереница блять зависимостей
где можно найти архив с уже всеми укомплектованными .deb файлами?
Аноним 12/11/20 Чтв 14:15:19 185424254
>>1854228
>с уже всеми укомплектованными .deb файлами
На фул образе дистра
Аноним 12/11/20 Чтв 15:52:35 185431055
image.png 18Кб, 713x151
713x151
image.png 24Кб, 498x464
498x464
image.png 14Кб, 974x507
974x507
пикрилы, программа просто останавливает свое выполнение после ввода переменной, в чем здесь проблема?
Аноним 12/11/20 Чтв 15:56:39 185432156
>>1854055
Да, и это видно прямо по коду.
Аноним 12/11/20 Чтв 16:47:35 185438657
Аноним 12/11/20 Чтв 17:00:10 185440258
Аноним 12/11/20 Чтв 17:23:50 185443559
image.png 86Кб, 1057x738
1057x738
Товарищи сишники, объясните пожалуйста несколько моментов в этом коде. Он сортирует массив указателей на строки. Почему в строке 7 мы приводим полученные войдовые указатели к типу "указатель на указатель на char", а потом разыменовываем? Почему не просто приводим к указателю на char? Также непонятна строка 14 ну и следовательно 15. Почему в качестве размера массива мы передаем именно такую константу?
Аноним 12/11/20 Чтв 18:11:39 185446960
>>1854310
АААА МОИ ГЛАЗААА
Ну очевидно же - что-то делаешь не так.
Может где-то не используешь нужную константу с указанием типа, или где-то в коде не то написано.
Аноним 12/11/20 Чтв 18:20:56 185448261
>>1854435
> Почему в строке 7 мы приводим полученные войдовые указатели к типу "указатель на указатель на char", а потом разыменовываем?
Потому что qsort передает в компаратор указатели на элементы массива. Выходит в функции будут char ×× переданы, но реальный тип void ×, его надо привести к char ×× чтобы после разыменования указателя был тип char × который требуется функции strcmp.
> Почему не просто приводим к указателю на char?
А ещё разыменовать void × нельзя, так как неизвестен размер типа void.
> Также непонятна строка 14 ну и следовательно 15. Почему в качестве размера массива мы передаем именно такую константу?
sizeof возвращает размер типа.
`sizeof a` вернёт размер в байтах всего массива(20 байт или 40 байт), sizeof (char ×) вернёт 4-8 байт(зависит от размера указателя).
Аноним 12/11/20 Чтв 18:23:23 185448362
>>1854469
очевидно, но я не понимаю в чем проблема. Не могу найти. И почему глаза болят?
Аноним 12/11/20 Чтв 18:51:08 185449963
>>1854482
Спасибо, разобрался.
Аноним 12/11/20 Чтв 20:08:36 185457164
>>1854310
В Си нету брейкпоинтов?
Аноним 12/11/20 Чтв 20:10:53 185457565
>>1854483
> очевидно, но я не понимаю в чем проблема.
Вот я тоже не понимаю, не вижу потому что код запутанный, полон неявных приведений int к float, перемножения и деления float на int. Плюс ко всему код плохо структурирован и его читать проблематично. В цикле у тебя вообще делится целое число 1 на целочисленную переменную i, если i не ноль(а оно не ноль судя по коду), то результат такой операции всегда 0 будет. И так далее. Просто запутанный и проблемный код.
> И почему глаза болят?
Код структурирован без какой-либо на то логики и формальных правил.
Аноним 12/11/20 Чтв 20:15:50 185458166
>>1854571
Нет. И в плюсах нет.
Аноним 12/11/20 Чтв 20:16:05 185458367
>>1854575
как бы ты тогда тешил эту задачу?
Аноним 12/11/20 Чтв 20:16:31 185458468
>>1854575
>результат такой операции всегда 0 будет
Ещё 1 может быть.
Аноним 12/11/20 Чтв 20:21:45 185458969
Аноним 12/11/20 Чтв 20:27:12 185459070
>>1854584
Таки да. Есть вариант, с `i == 1`.
>>1854583
Красиво и четко.
Эпсилон считать можно и не через pow.
Расписать формулу для члена ряда нормально.
Записать ее с использованием float литералов, и функций явно принимающих float(а может и double тебе нужен).
Структурировать код надо так, чтобы читать было проще, а не выглядел он как ебучая картина Пикассо.
По мере того как начало правильно считать и работать - вносить все ифы и прочее с ограничениями.
>>1854589
Кажется ты читаешь мои мысли, ахаха.
Аноним 13/11/20 Птн 03:55:59 185480671
>>1854310
Сканф_С???!!
Фабс(флоат)??
ты вообще дурачёк? сложно писать как все? надо выебнуться?
Аноним 13/11/20 Птн 04:14:38 185481272
>>1854310
вангую у тебя z всегда больше e и всё время растёт, поэтому цикл никогда не завершается
тебе надо не z с e сравнивать, а разницу между новым z и и предыдущим
Аноним 13/11/20 Птн 04:37:01 185481873
>>1854806
> Сканф_С???!!
scanf_s это безопасная функция scanf, предоставляемая шиндошсом. Под шиндошс с ней норм.
Аноним 13/11/20 Птн 10:37:31 185490174
>>1854310
>пик 2
Какой мерзкий пиздец с проверкой ввода. А ведь можно было просто поставить goto.
Аноним 13/11/20 Птн 11:00:42 185490975
>>1854901
Щас студенты, которых учат, что goto плохо, тебе пояснят твою неправоту.
Аноним 13/11/20 Птн 11:05:45 185491076
>>1854310
> пикрилы, программа просто останавливает свое выполнение после ввода переменной, в чем здесь проблема?

Отладочные принтфы запретили?
Аноним 13/11/20 Птн 11:11:00 185491377
>>1854901
Нет там пиздеца. Даже красиво как-то.

>>1854909
goto незаменим при написании конечных автоматов.
Вот там действительно макароны без goto получаются.
Аноним 13/11/20 Птн 11:32:18 185492778
>>1854310

Ну и да, вся матх.хэ расчитана на даблы, все функции работают только с даблами

float - онли для гейдева, что бы графон в 144 фпс и физон в нем же считать.

Используй даблы.
Аноним 13/11/20 Птн 11:40:08 185493379
>>1854913

typedef enum{
MOCHA,
PIDOR,
BLYADINA,
HUI
} State;

State s = HUI;
bool isFinished = false;
while(!isFinished){
switch(s){
case HUI:
...
case MOCHA:
...
break;
case PIDOR:
...
break;
case BLYADINA:
...
s = PIDOR;
break;
default:

}
}
Аноним 13/11/20 Птн 11:43:07 185493680
>>1854933
Даже не смешно. Ты попробуй реальный сложный автомат запилить.
Аноним 13/11/20 Птн 11:47:35 185493981
>>1854936
>Даже не смешно. Ты попробуй реальный сложный автомат запилить.

То же самое, только

State s = HUI;
bool isFinished = false;
while(!isFinished){
switch(s){
case HUI:
s = processHui();
break;
case MOCHA:
s = processMocha();
break;
case PIDOR:
s = processPidor();
break;
case BLYADINA:
s = processBlyadina();
break;
default:
printf("DA TY OHUEL SUKA");
isFinished = true;
}
}
Аноним 13/11/20 Птн 11:50:16 185494182
>>1854939
Да я уже видел что ты знаешь как работает оператор switch.
Ты хотя бы препроцессор для Си напиши беp goto.

Аноним 13/11/20 Птн 11:55:53 185494783
>>1854192
Пройди, это несложно.
Я не скажу, что курс много даёт, но будешь понимать в ЯПах чуть больше.
Аноним 13/11/20 Птн 11:57:37 185494984
>>1854228
>где можно найти архив с уже всеми укомплектованными .deb файлами?
Какой линукс ты себе поставил?
В убунте apt тебе автоматически все зависимости вытянет, как и любой пакетный менеджер.
Аноним 13/11/20 Птн 14:57:12 185507485
>>1854818
>scanf_s это безопасная функция scanf, предоставляемая шиндошсом.
Верно, но пользоваться ей не нужно.
Эти виндофункции _s оказались ошибкой.
Аноним 13/11/20 Птн 17:15:28 185525286
>>1854913
>Нет там пиздеца.
Вообще то есть адовое дублирование кода.
A
B
if(cond)
{
 do {
 C
 A
 B
 }while(cond)
}
Аноним 13/11/20 Птн 17:34:35 185526287
>>1855252
А, точно, есть.

while(1)
{
/.. код ввода тут .. /
if(cond_is_good)
break;
}
Аноним 13/11/20 Птн 22:40:34 185551788
>>1854118
повтори еще раз, непонятно же, заебешь
Аноним 14/11/20 Суб 13:28:16 185591089
>>1854818
Которая принимает сколько аргументов? а сколько ты передаёшь?
>Под шиндошс с ней норм.
Но зачем?
>>1854910
>Отладочные принтфы запретили?
Пиздец деграданты.
>>1855450
>Нахуй нужно, линукс даже на кофеварках.
Ну удачи, лол, особенно посмотрю на тебя в ЦОС с линуксом.
ты просто не понимаешь в чём разница между микроконтроллером и микропроцессором и области применения
>>1855538
>все подобные штуки будут писаться на си под rtos.
Ртос это и есть линукс(в 80% случаев) , пилится всё на бареметал.
>>1855832
Чтоб в фейсбук зайти.
А если серьёзно - проще поставить МК чем ебаться с логикой на транзисторах
>>1855841
классика маркетологов, а иван ерохин производит готовый продукт где ничего не надо качать и управлть с телефона, а где есть 4 кнопки, никаких головняков.
Аноним 14/11/20 Суб 14:50:02 185595290
>>1855910
> последняя строка
Два кофе этому господину.

Есть, короче, кофе машины. На них 2-3 кнопки - эспрессо, средний и большой американо. ВИСЬО. Хочешь капучино? Сбоку есть капучинатор: трубка мокается в стакан с молоком, нажимается еще одна кнопка, выплевывается теплая молочная пена.

И никаких скриптов.
Аноним 14/11/20 Суб 14:56:44 185595891
>>1855910
> Которая принимает сколько аргументов? а сколько ты передаёшь?
> Но зачем?
Давай посмотрим сюда:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l
>These versions of scanf, _scanf_l, wscanf, _wscanf_l have security enhancements, as described in Security Features in the CRT
Ага, идём дальше:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/security-features-in-the-crt
Ну тут и все становится на свои места, просто детект ошибок и адекватный вывод их, чтобы кто-то юзающий функции не выстрелил себе в ногу. Вполне полезно, особенно для бедного студента который лабу пишет
Аноним 14/11/20 Суб 16:23:48 185601292
>>1855958
Ок, используй.
>чтобы кто-то юзающий функции не выстрелил себе в ногу
Чтоб не выстрелить себе в ногу, надо не стрелять себе в ногу.
Заебали уже прохрамисты которые пишут так что оно может "выстрелить себе в ногу", пиши так чтоб оно не стреляло себе в ногу.
а выстрелить себе всё равно проблем не составит

>особенно для бедного студента который лабу пишет
Вот как раз студентики то пускай себе ногу и отстреливают, у них и время на это есть и на проде не упадет, того гляди поотстреливают себе ноги пока молоды так потом как вырастут этого делать не будут.
Аноним 14/11/20 Суб 16:41:13 185603893
>>1856012
> Ок, используй.
У меня нет винды. Я лишь поясняю что это за функции у МС имеются в наличии.
> >чтобы кто-то юзающий функции не выстрелил себе в ногу
> Чтоб не выстрелить себе в ногу, надо не стрелять себе в ногу.
"Если ты бездомный, просто купи дом"
> Заебали уже прохрамисты которые пишут так что оно может "выстрелить себе в ногу", пиши так чтоб оно не стреляло себе в ногу.
"Да вот возьми и купи дом. Нет денег? Заработай!"
> а выстрелить себе всё равно проблем не составит
"А быть бездомным может каждый, на это много ума не надо"
Примерно так твоя аргументация выглядит

> >особенно для бедного студента который лабу пишет
> Вот как раз студентики то пускай себе ногу и отстреливают, у них и время на это есть и на проде не упадет, того гляди поотстреливают себе ноги пока молоды так потом как вырастут этого делать не будут.
Дык они и отстреливают. Попадают потом на работу/стажировку, и там уже в твоих проектах стреляют в ногу. Пусть на примере этих функций узнают об возможностях пострелять в ноги, и может поинтересуются как эти проблемы обошли.
Аноним 14/11/20 Суб 18:38:13 185615494
Я вот прочитал это Brian Kernighan, Dennis Ritchie "The C Programming Language"
Но не нашёл там про оператор ",". Впервые увидел его применение в декомпилированном коде от IDA
Аноним 14/11/20 Суб 19:01:52 185616495
1605369710822.png 576Кб, 1080x1920
1080x1920
1605369710839.png 844Кб, 1080x1920
1080x1920
Аноним 14/11/20 Суб 20:26:12 185622996
>>1856164
У меня русская версия. Хз, наверно, пропустил.
Аноним 14/11/20 Суб 20:32:58 185623797
>>1856038
Один из лучших подходов сишечки это парадигма "оно то есть но если оно плохое то мы его не используем"
Вот это из разряда функций которые использовать просто не надо.
Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)

А при чем тут бездомные. Ты не можешь писать код предварительно подумав что и где он делает? Или тебе надо чтоб тебя ограничивали и говорили что так нельзя?
Так и появляются говносишники которые перешли из какой-то джавы с тотальным анальным контролем которые пишут говно из-за того что коданалищатор их не стукает по ручкам.

Как-то хреново отстреливают если не помогает.
Я как-то во время обучения настрелял достаточно чтоб трижды подумать над каждой строчкой
Аноним 14/11/20 Суб 22:07:52 185631398
>>1856237
> Один из лучших подходов сишечки это парадигма "оно то есть но если оно плохое то мы его не используем"
Тогда почему не удаляют?
> Вот это из разряда функций которые использовать просто не надо.
И почему же? _s ничем тебя особо не обязывает, а при наличии ошибок в коде - тебе может подсказать что ты сделал не так сам компилятор или crt выведет что-то.
> Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)
Ясно, у тебя все нинужно, если ты этому не можешь найти применение.

> А при чем тут бездомные. Ты не можешь писать код предварительно подумав что и где он делает? Или тебе надо чтоб тебя ограничивали и говорили что так нельзя?
Аргументация у тебя уровня дебила.
Я так понимаю, ты с большими проектами на Си не работал и большой командой? Все писал своими потными ручками, чисто свой код и из-за этого у тебя выработалась мания величия? Когда половина кода написана не тобой, и он весьма большой по объему - анализаторы вполне могут сократить время разработки приложения, банально предупредив о какой-то возможности наколоться. Нет, конечно, можно пойти в код, глянуть что за таинственная функция написанная каким-то давно уволившимся сотрудником, изучить как она работает, как тянет ворох других ваших функций, потратить денёк на дебаг, а можно просто увидеть выхлоп анализатора или warning компилятора и исправить сходу свой код на правильный вариант.
> Так и появляются говносишники которые перешли из какой-то джавы с тотальным анальным контролем которые пишут говно из-за того что коданалищатор их не стукает по ручкам.
Смешно, но знаю тонну джавистов которые сбежали от С/С++(причем работали в этой области от 10 лет) просто потому что их достало ебаться с памятью
> Я как-то во время обучения настрелял достаточно чтоб трижды подумать над каждой строчкой
И наверное пишешь 10 строчек в месяц, мня о том какой ты ниибацца охуенный погромист.
Аноним 15/11/20 Вск 09:31:01 185653599
>>1856313
Большой, старый проект
@
На Си
@
Я первый с анализатором
Аноним 15/11/20 Вск 10:56:18 1856573100
>>1856313
>Тогда почему не удаляют?
По тому что кто-то это уже использовал.
>И почему же?
А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?
>_s ничем тебя особо не обязывает
Кроме того что это это виндовая функция
> а при наличии ошибок в коде - тебе может подсказать что ты сделал не так
???? что там она подскажет??
>если ты этому не можешь найти применение.

Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)

> ты с большими проектами на Си не работал и большой командой?
Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)

А ты работал?

>Когда половина кода написана не тобой, и он весьма большой по объему
Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.

>анализаторы вполне могут сократить время разработки приложения
Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.
просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"

>Смешно, но знаю тонну джавистов которые сбежали от С/С++
Ок, я рад за них, при чём ту это?

>И наверное пишешь 10 строчек в месяц
Я пишу коммерческий код за который платят деньги.
А ты лабораторки в вузе?
Аноним 15/11/20 Вск 13:45:34 1856695101
>>1856573
>Кроме того что это это виндовая функция
Кек. Хорошо горит. Предлагаю всем в треде впредь постить только подобные майкрософтовские функции.
Аноним 15/11/20 Вск 15:57:13 1856798102
>>1856573
> >Тогда почему не удаляют?
> По тому что кто-то это уже использовал.
Я б удалил с новых версий языка, если их никто не использует из-за того, что это дурной тон.
>По тому
АХАХАХАХАХХАХАХА
Кажется препроцессор писал за тебя.

> >И почему же?
> А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?
Защиты от разьеба стека, которую предоставляет _s версия. Замечу, scanf обычный в gcc/glibc это все тоже делает, но без суффикса, ms решили не ломать обратную совместимость.
> >_s ничем тебя особо не обязывает
> Кроме того что это это виндовая функция
Говоришь как будто это что-то плохое.
О ГОСПОДИ, А ЕСТЬ ЖЕ ТОННА СИСТЕМ ГДЕ НЕТУ LIBC И СТАНДАРТИЗИРОВАННЫХ ФУНКЦИЙ, НА НИХ ПИСАТЬ НЕЛЬЗЯ, НЕ КАНОН, ВЕДЬ ТАМ НЕТУ ТОГО К ЧЕМУ ИМЕННО ДОЛБОЕБ ИЗ СИ ТРЕДА НЕ ПРИВЫК, КАКОЙ УЖАС
> > а при наличии ошибок в коде - тебе может подсказать что ты сделал не так
> ???? что там она подскажет??
Поюзай ASan/TSan, дядь, ты устарел.
> >если ты этому не можешь найти применение.
> Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)
Беру и пишу небольшие циклы do while где удобно. Чет не выгнали ещё за столько лет. Проблемы?
> > ты с большими проектами на Си не работал и большой командой?
> Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)
Ты хочешь сказать Си не подходит для большой разработки? Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.
> А ты работал?
Да. Вполне норм работаю в США.
> >Когда половина кода написана не тобой, и он весьма большой по объему
> Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.
Видать ты и поехал крышей после такого дебага.
> >анализаторы вполне могут сократить время разработки приложения
> Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.
"Иисус сказал что надо страдать и мы страдаем все, не только программисты, но особенно программисты, возомнившие себя выше других."
Не мог не вставить.
Зачем страдать, когда можно объяснить и рассказать где про это прочитать? Или ты один из тех программистов, возомнивший себя выше других, который находит в страдании обучение? Я вон учился в универе и не страдал, вполне неплохо обучился, прод не обваливаю, код крутится@лавеха мутится.
> просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"
Ни у кого насчёт нее претензий не было, кроме тебя.
> >Смешно, но знаю тонну джавистов которые сбежали от С/С++
> Ок, я рад за них, при чём ту это?
К тому что от таких говнохранителей как ты народ и перестает пользоваться байтоебскими языками.
> >И наверное пишешь 10 строчек в месяц
> Я пишу коммерческий код за который платят деньги.
Тоже.
> А ты лабораторки в вузе?
Смешно.
Аноним 15/11/20 Вск 16:24:00 1856817103
>>1856798
>Я б удалил с новых версий языка,
Охуенно, чтоб обновился и твой легаси проект упал, заебись блять и хранить 10 компехляторов.
>Говоришь как будто это что-то плохое.
Использовать что-то особое когда есть обычное с таким же функционалом.
>Ты хочешь сказать Си не подходит для большой разработки?
>Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.
Да, я вижу когда при разростании проекта наступает момент когда "на плюсах было бы проще"
>Зачем страдать, когда можно объяснить и рассказать где про это прочитать?
За тем что когда ты учишься - это замечательное время обучиться навыку решения говнопроблем и поиска ошибок САМОСТОЯТЕЛЬНО, если ты его обрёл без страданий - честь тебе и хвала, как видешь, вопрашающий не обрёл и вместо того чтоб разобраться и немножно пострадать выбрал "простой путь" а не пройдя хоть пару раз по сложному он в дальнейшем не сможет по нему сам пройтиу него просто банально не будет на это времени
>Ни у кого насчёт нее претензий не было, кроме тебя.
эээ и что? ну у меня есть.
>К тому что от таких говнохранителей
Говнохранителей чего? того что не надо в "свой особый путь"
Если я тебе скажу что я не использую функцию Ссканa ты мне тоже скажешь что я не прав?
Аноним 15/11/20 Вск 16:36:47 1856829104
>>1856817
>отвечать шизу/ларперу/троллю
Аноним 15/11/20 Вск 17:04:39 1856851105
Wat-Pigeon-Funn[...].jpg 77Кб, 631x488
631x488
>>1856573
>Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)

Что за ёбань я читаю вообще. Может вам и goio удалить хочется?

Мимокрок
Аноним 15/11/20 Вск 17:05:05 1856852106
Аноним 15/11/20 Вск 17:22:47 1856863107
>>1856237
>Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)

Мой любимое использование do { / code here / } while(0); для избежания использования большой вложенности операторов if

Ибо: if(condition) break; между которыми помещается код.
В результате, после небольшой привычки, код читается даже легче и выглядит пристойнее, чем куча вложенных if()
Аноним 15/11/20 Вск 18:05:07 1856892108
Аноним 15/11/20 Вск 20:37:57 1857022109
>>1856573
> Do while
Любой случай, где заранее известно, что условие истина, но стоимость вычисления условия нетривиальна.
Или же случай, где условие не определено до завершения итерации. Примеров море, но мне лень копировать.
Аноним 15/11/20 Вск 20:40:49 1857025110
>>1856573
А как ты определил, "как все"? Покажи статистические исследования с методикой. А то выянсится, что ты один так пишешь.
Аноним 15/11/20 Вск 21:05:05 1857051111
>>1857025
Капитан Кросс-Платформенность утверждает, что тупо весь пингвинячий код написан без этой функции. Какие еще вам нужны доказательства?
Аноним 16/11/20 Пнд 00:39:45 1857202112
func.jpg 61Кб, 997x506
997x506
>>1856863
> do { / code here / } while(0);
Это именно тот случай, я когда встретил это решение то просто охуел от лаконичности.
>>1857022
>Примеров море, но мне лень копировать.
Они все замещаются форами или обычным вайлом.
А читать код где кто-то решил показать всё на что он способен и как познал всё до чего можно только дотянуться это пиздец.
>>1857025
пик
Аноним 16/11/20 Пнд 00:44:15 1857209113
>>1857202
>Они все замещаются форами или обычным вайлом.
Всё замещается на mov.
Аноним 16/11/20 Пнд 01:08:30 1857232114
>>1857209
здраствуте MISRA C rules - 3е правило прямо запрещает срать асемблером куда попало.
Аноним 16/11/20 Пнд 02:59:27 1857312115
>>1856817
> >Я б удалил с новых версий языка,
> Охуенно, чтоб обновился и твой легаси проект упал, заебись блять и хранить 10 компехляторов.
Порой бывает старые проекты не собираются на новых компиляторах. Бывает. Может ты не сталкивался, а я сталкивался.
> >Говоришь как будто это что-то плохое.
> Использовать что-то особое когда есть обычное с таким же функционалом.
Тебя ничего не обязывает юзать что одно, что другое. Если платформа что-то предлагает получше, почему не заиспользовать? Я не вижу в этом ничего плохого.
> >Ты хочешь сказать Си не подходит для большой разработки?
> >Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.
> Да, я вижу когда при разростании проекта наступает момент когда "на плюсах было бы проще"
Я с таким сталкивался только из-за либ которые есть на С++, а на Си - только хуярить самому wrapper.
> >Зачем страдать, когда можно объяснить и рассказать где про это прочитать?
> За тем что когда ты учишься - это замечательное время обучиться навыку решения говнопроблем и поиска ошибок САМОСТОЯТЕЛЬНО, если ты его обрёл без страданий - честь тебе и хвала, как видешь, вопрашающий не обрёл и вместо того чтоб разобраться и немножно пострадать выбрал "простой путь" а не пройдя хоть пару раз по сложному он в дальнейшем не сможет по нему сам пройтиу него просто банально не будет на это времени
Ну мы ему ответили. Он не станет программистом, вероятнее всего. Или хорошим программистом не станет. Меня это устраивает, меньше конкуренции в будущем.
> >Ни у кого насчёт нее претензий не было, кроме тебя.
> эээ и что? ну у меня есть.
А я у меня нет.
> >К тому что от таких говнохранителей
> Говнохранителей чего? того что не надо в "свой особый путь"
Каждый имеет право на свой путь в программировании, выбрать самому как учиться, выбрать какие функции юзать.
> Если я тебе скажу что я не использую функцию Ссканa ты мне тоже скажешь что я не прав?
Да и я их не использую. Но если будут юзать(даже для чтения ебаного stdin) - ну и норм, это ж не я написал, главное чтоб работало правильно.
Аноним 16/11/20 Пнд 03:24:58 1857320116
>>1857202
> пик
А теперь по всем проприетарным виндоус прогам и самой винде.
Аноним 16/11/20 Пнд 09:01:19 1857454117
>>1857202
> они все замещаются фор
Ты ебобо или зелёный?
Аноним 16/11/20 Пнд 10:18:22 1857476118
what is your op[...].png 47Кб, 190x200
190x200
>>1857202
>Они все замещаются форами или обычным вайлом.
Да-да, конкструкция с бесконечным циклом и if-break-ами существенно лучше, конечно читается. Аллоэ, за это тред кто-то конкретику про do-while принесёт, или лишь бы кококо?

>>1857320
Чтобы что?

>>1857312
>Тебя ничего не обязывает юзать что одно, что другое.
<Но давайте выпилим цикл с постусловием, он меня напрягает, похуй на совместимость.

Чот биполярочка
Аноним 16/11/20 Пнд 13:57:36 1857609119
Аноним 16/11/20 Пнд 14:14:46 1857619120
>>1857232
Думаю это была отсылка к тюринг полному языку использующему только mov.
Аноним 16/11/20 Пнд 14:25:40 1857622121
>>1857619
ADD, NEG, MOV (aka LOAD & STORE). RCL, AND, OR, XOR, JZ, JС, JMP.

Пока не проверял, но почти что 100% на этом базисе можно написать любую программу.

Нужно вычитание? Используй вместо него NEG и ADD.
Нужно сдвинуть регистр на один бит влево - используй 31 сдвиг через перенос вправо. Нужен нециклический сдвиг? Сделай перед сдвигом AND по маске. И т.д. по аналогии.

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



Аноним 16/11/20 Пнд 14:30:19 1857625122
Аноним 16/11/20 Пнд 14:42:43 1857637123
>>1857476
> >Тебя ничего не обязывает юзать что одно, что другое.
> <Но давайте выпилим цикл с постусловием, он меня напрягает, похуй на совместимость.
> Чот биполярочка
Явно вижу ты не следишь за обсуждением или толком его не читал, потому что отвечаешь на пост человека, который за наличие do-while в си, который срется с противником оного и чет заливаешь за биполярочку. Сессию как сдавать будешь, если ты читать не в состоянии?

мимокрокодил
Аноним 16/11/20 Пнд 14:46:10 1857639124
>>1857625
Я знаю что ты шутишь, но я не привык сдаваться.
Тебе нужен процессор с одной инструкцией MOV?
Это возможно.
Ты можешь зарезервировать несколько физических адресов и сделать процессор с одной инструкцией.
Например, по адресу 0x10000 находится ячейка, при записи в которую процессор переходит на адрес, записанный в неё.
Вот тебе уже и JMP родился.
по адресу 0x10008 запписываешь первый операнд.
По адресу 0x10010 запписываешь второй операнд.
По адресу 0x10018 ты читаешь сумму записанных чисел
По адресу 0x10020 ты читаешь разность записанных чисел.
И так далее.

Вот видишь, оказывается процессор с одной инструкцией возможен. Реализацию условных переходоы мне придумывать лениво, но полагаю что и эта задача решаема.
Аноним 16/11/20 Пнд 14:56:07 1857647125
>>1857639
Не знаю, зачем ты это пишешь - конечно язык с одним mov уже давно сделан.
Аноним 16/11/20 Пнд 15:01:21 1857655126
>>1857639
Вроде как тема эта уже изучена как URISC процессоры. Было бы прикольно чтобы кто-то написал под сие дело компилятор Си, а то дальше ассемблеров дело не доходило.
Аноним 16/11/20 Пнд 15:37:27 1857686127
>>1857622
> о минимальном
Зачем же ты принес половину 8080?
Читай труды Алана Тьюринга.
Аноним 16/11/20 Пнд 15:56:34 1857699128
>>1857637
Извини, в сортах анона не разбираюсь. Постер отвечает на фразу о невозможности компилить старый код новым комилятором после гипоететической правки синтаксиса чем? «Ну и что, и так сейчас бывает».
Аноним 16/11/20 Пнд 16:31:33 1857730129
movfuscator
Аноним 16/11/20 Пнд 16:33:44 1857733130
Аноним 16/11/20 Пнд 17:13:05 1857772131
>>1857733
Это да, но под х86.
А мне б Си компилятор под какой-то bitbitjmp или subleq URISC процессор, такого вроде как нет.
Аноним 16/11/20 Пнд 18:05:48 1857800132
>>1857476
Давайте выпилим будем придерживаться кодстайла и не использовать все виды цыклов только по тому что можем.
Аноним 16/11/20 Пнд 18:06:41 1857802133
>>1857800
Пиздец в си-треде дауны сидеть, дувайл слишком сложный, не надо использовать, вдруг не поймет кто-нибудь.
Закрываю нахуй.
Аноним 16/11/20 Пнд 18:23:12 1857809134
>>1857802
Мы не дауны!
Дауны не мы... Это тебе в кое-какой другой тред...
Аноним 16/11/20 Пнд 20:08:42 1857898135
>>1857800
> не использовать все виды цыклов
Пчел, в этом недоязыке даже until нет
Аноним 16/11/20 Пнд 23:23:38 1858024136
Можно ли с помощью signal() выловить точку, где происходит SIGSEGV?
Нужно узнать текущий вход и желательно функцию.
Аноним 16/11/20 Пнд 23:38:06 1858033137
>>1858024
А чем gdb не угодил? Им и вылавливай.
Аноним 17/11/20 Втр 03:05:33 1858085138
>>1858024
Отловить SIGSEGV можно.
Вывод стэктрейса можно сделать через backtrace() на линуксах, или чем-то другим если система другая.
Потом можно названия функций и смещения конвертнуть через утилиту addr2line в названия файлов и номера строк, если нужно.
Аноним 17/11/20 Втр 10:04:27 1858251139
Аноним 17/11/20 Втр 12:59:16 1858333140
Снимок экрана 2[...].png 65Кб, 701x808
701x808
Господа СИшники. Реквестирую помощи. Почему так? Почему выводится какая-то хуйня? По долгу учебы надо писать на Си, на питоне все замечательно работает, на Си же выводится неведомая хуйня. Сложность задания не играет роли. Выводится непонятное число, хз откуда, как исправить - тоже. В гугле инфы по этому вопросу нет, одногруппники сами охуевают. Без вас не обойтись.
Аноним 17/11/20 Втр 13:05:53 1858338141
Снимок экрана 2[...].png 163Кб, 1576x605
1576x605
>>1858333
Именно такая фигня с массивами. Неадекватное поведение даже не только в этом примере, а в других. Вывод на экран тоже, может вывести первые 2-3 элемента ОК, потом какую-то хуйню. Или 1 элемент потом опять невнятное число. К сожалению, писать на других языках запрещено, с радостью бы писал, приходится работать с этим языком.

Например здесь, просто скриншот, в онлайн компиляторе вообще другой вывод, отличный от моего. Почему так он себя ведет и как этого избежать? А да, & пробовал ставить и убирать, вывод не меняется. Не в нем дело.
Аноним 17/11/20 Втр 13:14:52 1858343142
>>1858333
Ты n в инициализации массива-то использовать не хочешь?
Аноним 17/11/20 Втр 13:15:50 1858345143
Аноним 17/11/20 Втр 13:23:48 1858351144
>>1858343
Не дает. Ошибка компиляции. Пробовал
>>1858345
и что? Вывожу 2 значения. После джавы и питона не вижу ничего плохого. Тип один и тот же. & убирал , не помогает, так же пробовал %d%d , тоже не помогает
Аноним 17/11/20 Втр 13:31:38 1858358145
>>1858333
А что тут объяснять? Ты создал массив из 0 элементов. Навсегда. А потом обращаешься по индексу за его пределами.
list = tmp никакой памяти не выделяет, новых элементов не создает.
Аноним 17/11/20 Втр 13:32:18 1858359146
>>1858351
>не вижу ничего плохого.
Просто значок & рандомно добавлять-убирать, действительно, что тут такого.
Аноним 17/11/20 Втр 13:34:32 1858361147
>>1858358
int list[] = {0};

Помогло это. Пиздец. Я думал Си может в динамику.
>>1858359
На войне все средства хороши, я должен попробовать.

Спасибо за помощь
Аноним 17/11/20 Втр 13:36:54 1858365148
>>1858351
Долбаеб ебаный тебе уже указали на твои ошибки ты продолжаешь высирать полотны малолетнего бреда
int[] пустой чанк памяти которым ты отстреливаешь себе ноги
printf %d на pointer возвращает адрес ссылки
Аноним 17/11/20 Втр 13:40:50 1858370149
>>1858361
Размер таких массивом должен быть известен на этапе компиляции. В gcc есть расширение, позволяющее писать arr[n], но это не стандарт.
Тебе в твоём случае надо заалоцировать через маллок массив и освободить эту память в конце
Аноним 17/11/20 Втр 13:46:38 1858374150
>>1858365
Ну ты прав. Я долбоеб , правда не малолетний. И ошибки указали, я их исправил и все заработало, я на Си никогда не писал до этого.
>>1858370
спасибо
Аноним 17/11/20 Втр 13:50:11 1858375151
>>1858361
>int list[] = {0};
Нет, это только полдела. Так ты создаешь массив с одним элементом. Если ты будешь обращаться [1], [2] то так же вылетишь.
Аноним 17/11/20 Втр 14:17:20 1858389152
>>1858361
>int list[] = {0};
Компилятор сопоставит общее количество элементов в "{}" и засунит это в []
Тут у тебя хуйня эквивалентная list[1] = {0}
Для динамики маллокейти
Аноним 17/11/20 Втр 21:49:54 1858878153
>>1858389
>маллокейти
так это же потом руками удалять придеться
Аноним 17/11/20 Втр 23:03:58 1859017154
Аноним 17/11/20 Втр 23:04:28 1859019155
>>1858370
>> В gcc есть расширение, позволяющее писать arr[n], но это не стандарт.

Это опциональная часть стандарта, называется VLA, в кланге тоже есть
Аноним 17/11/20 Втр 23:11:59 1859026156
>>1858878
Надо юзать alloca(), мне так дядька с 40 годами опыта программирования на Си советовал, пока не сдох, было ему 65 лет, эх
Аноним 17/11/20 Втр 23:34:10 1859057157
>>1858361
Это не помогло, это тебе кажется.
Динамика в С не нужна делается ручками.
>>1858374
Незаработало.
Аноним 18/11/20 Срд 00:15:47 1859105158
>>1859026
Да на стеке можно с запасом выделить и всё.
типа

int list[10000]; // Хули нам, кабанам, 40 килобмайт не память.

Но за название list надо по рукам бить - массив это не списоок.
18/11/20 Срд 00:19:24 1859108159
изображение.png 291Кб, 782x800
782x800
Такой вопрос, пишу учебный консолечный квест. Нужно чтоб происходила ротация определенных событий в мире, с долей рандома. Есть ли вариант вариант запихнуть реалтайм генератор эвентов в зацикленную функцию, пока игрок делает ходы. Хз, возможно ли это, но только си не передаст управление обратно игроку пока цикл бесконечный,а нужно чтобы он работал независимо от него. Может и хуйню горожу, но мсье хочет ебли. Или покатит только вызов функции с рандоматором?
Аноним 18/11/20 Срд 00:38:16 1859115160
Аноним 18/11/20 Срд 00:57:21 1859120161
>>1859108
Можно сделать новый поток и там генерить.
Можно вообще ничего не делать, а смотреть когда игрок сделал ход, сколько времени прошло, и в зависимости от этого насувать N событий.
Аноним 18/11/20 Срд 20:31:58 1859577162
>>1859108
У тебя чтоль общий цикл как блокирующие функции написан?
Если нет - в него в начало и пихай, там проверяй время (не на каждый же оборот цикла что-то должно происходить)

Если у тебя там уже есть потоки - создай ещё один и в нём делай что тебе надо с вейкап периодом когда тебе надо.

Аноним 19/11/20 Чтв 16:07:04 1860190163
>Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.
Кто читал? Сколько полезного узнали? Охочусь сейчас за всей инфой по хипу, немножечко не понимаю, надеюсь эта книжка мне поможет.
К слову, не могу понять - Если инкрементировать сам указатель до того как он станет нулевым т.е до конца, он останется на начальном или конечном адресе если делать дереференс?
Я проверил на принте, что он доходит до нуля, только не могу понять остается ли он там.
Аноним 19/11/20 Чтв 16:16:09 1860198164
Еще можете подсказать как можно создать массив чаров только после того как пользователь введёт текст? Например сейчас мучаюсь с прогой в которой есть функция которая принимает текст и сплитит все найденные слова в массив из массивов чара. Если с этим нет проблем, то со строкой неизвестно сколько пользователь может ввести. Как с этим справляются опытные программеры?
Аноним 19/11/20 Чтв 18:27:18 1860292165
бляьь да какого хуя всё на английском
как вкатиться тт блятб
Аноним 19/11/20 Чтв 18:44:20 1860301166
Аноним 19/11/20 Чтв 18:48:09 1860305167
>>1860292
It easi, jast start speek englesh. It simple :)
Аноним 19/11/20 Чтв 18:50:48 1860307168
1581305050756.png 202Кб, 800x572
800x572
Аноним 19/11/20 Чтв 19:05:22 1860320169
>>1860198
Выделяешь изначально сколько-то памяти и считываешь пока не встретится символ перевода строки. Если память кончилась раньше чем встретил символ выделяешь ещё в два раза больше и продолжаешь.
Аноним 19/11/20 Чтв 19:25:02 1860347170
dead per dead 19/11/20 Чтв 20:16:25 1860370171
>>1860198
У каждой строки есть разумный предел.
dead per dead 19/11/20 Чтв 20:20:29 1860373172
>>1860190
> станет нулевым
Ты не имеешь права.
Аноним 19/11/20 Чтв 23:01:45 1860522173
>>1860307
Какой это язык? Не гуглться.
Аноним 19/11/20 Чтв 23:17:08 1860532174
Аноним 20/11/20 Птн 00:11:07 1860567175
Пиздец, почему линукс такой уебищный, и почему на нем все ещё кто-то сидит? Вот щас не пользовался ноутом где стоит чисто убунта несколько дней, захожу - отвалился вайфай. Просто так, сам собой) и вэлкам многочасовой пердолинг в консольке и чтение форумов красноглазиков. Почему с виндой я уверен что я сегодня запущу компьютер, и у меня все будет также как и вчера, а с линуксом я даже не уверен что у меня он вообще запустится нахуй?
Аноним 20/11/20 Птн 00:28:29 1860583176
>>1860567
Скинь скриншотик, у тебякакое убунту?
Аноним 20/11/20 Птн 00:49:16 1860603177
>>1860198
typedef struct
{
char str = NULL;
size_t size = 0;
size_t cap = 0;
}string_build;
void push(string_build
s, char symb)
{
if (s->size >= s->cap){s->cap*=2; realloc(s->data,s->cap);}
s->size++;
}
Аноним 20/11/20 Птн 00:54:17 1860610178
>>1860567
Само собой в линуксе может только хуй твой отвалиться, быдло невежественное. Линукс нихуя без твоего ведома не сделает, даже убунта. Ты сам нахуевертил где-то с ним, вот и сидишь без вайфая.
Аноним 20/11/20 Птн 00:55:27 1860612179
>>1860610
В убунте вроде как автоапдейты от каноникал можно включить по умолчанию
Аноним 20/11/20 Птн 00:58:29 1860614180
>>1860603
void push(string_build s, char symb)
{
if (s->size >= s->cap){s->cap*=2; realloc(s->data,s->cap);}
s->size++;
s->data[s->size-1]=symb;
}
слоуфикс
Аноним 20/11/20 Птн 01:41:22 1860643181
>>1860567
Ты смог отключить обновления шинде? Просто погугли новости, сколько компов на ней окирпичилось
Аноним 20/11/20 Птн 01:43:55 1860644182
>>1860614
Неплохо бы указатель после реаллока на нуль проверять.
Аноним 20/11/20 Птн 03:25:29 1860686183
Аноним 20/11/20 Птн 03:31:02 1860688184
>>1860567
Раз на раз не приходится. Стабильность дров та ещё шняга, особенно если сетевуха realtek, китайцы не стараются делать норм драйвера, или отвал, или отсутствие дров обеспечено. Более или менее норм на интеловсих wifi, там драйвер являет собой лаунчер огромного блоба, который и под виндой юзается.
Поддвачну этого >>1860643, имею ноут на Windows 10. Он уже давно не включается. Он находится при запуске в состоянии попытки поставить апдейт, апдейт отваливается непонятно почему, работается и винда опять ставит апдейт. Мне в принципе похуй, я пекабоярин. Но винда походу там умерла окончательно.
Мне кажется нетестируемые CI/CD апдейты в ОС скоро сыграют в ещё более злую шутку(злоумышленники троянца отправят по всем компам в качестве апдейта). Таким может отличиться или винда, или та же убунта.
Аноним 20/11/20 Птн 03:32:40 1860689185
>>1860686
Хакир введет строку на 32 гигабайта и взломает твой асус.
Аноним 20/11/20 Птн 06:38:01 1860733186
>>1860603
Во как.
>>1860320
Понятно.
>>1860301
Уже проверил. Указатель после инкремента до нулевого значения остается на том же адресе. Нулевое значение идет после последнего элемента в указателе.
Аноним 20/11/20 Птн 09:49:40 1860786187
>>1860733
>Уже проверил.
Погоду на Марсе если только.
После дереференса нулевого указателя у тебя UB. Сегодня твой компилятор и твоя ОС привели к такому результату, на другом железе у другого человека будет другое.
Аноним 20/11/20 Птн 09:56:16 1860792188
>>1860786
В строке же всегда есть указатель на нул.
Аноним 20/11/20 Птн 09:59:47 1860797189
Аноним 20/11/20 Птн 11:15:18 1860854190
>>1860610
ты че слепой бля? Я же написал: не включал ноутбук несколько дней в последний запуск вайфай работает, щас нет. Да и это офк не первый раз проблемы с еблинуксом. После установки (офиц. версию с флешки, на чистый комп, без винды) у меня просто не регулировалась яркость экрана и не работала добрая половина клавиш Fn не работала. Ахуенная ОС. Только установил - сразу начинается пердолинг.
Аноним 20/11/20 Птн 12:41:02 1860942191
>>1860854
Кто ебёт, что ты несколько дней с этим выключенным ноутом делал, дебил? Может ты им в футбол играл, может уронил по пьяни. Ты нихуя не понимаешь в устройстве линукс, но уже имеешь наглость свой вонючий рот открывать. Программирование не для тебя, скройся.
Аноним 20/11/20 Птн 12:52:10 1860944192
>>1860942
>Ты нихуя не понимаешь в устройстве линукс,
Говно говна. С вкраплениями бриллиантов. Но бриллантов мало, а говна овердохуя.
Аноним 20/11/20 Птн 14:57:29 1861061193
>>1860567
> Почему с виндой я уверен что я сегодня запущу компьютер, и у меня все будет также как и вчера, а с линуксом я даже не уверен что у меня он вообще запустится нахуй?
Не будет. Даже с макосью. Хочешь стабильность - выключай автоапдейты и управляй пакетами сам, как делают все нормальные конторы. Или ставь hardenned gentoo centos
> захожу - отвалился вайфай. Просто так, сам собой)
Если ты починил, то ты знаешь почему он отвалился и как сделать чтобы он не отваливался. Если не знаешь, то ты ещё не починил.
Аноним 20/11/20 Птн 18:54:08 1861302194
pic1.png 35Кб, 1002x868
1002x868
pic2.png 60Кб, 1002x484
1002x484
pic3.png 84Кб, 1002x868
1002x868
Знаю, что вопрос не совсем тематический. Но все-таки тут происходит низкоуровневое дрочево, поэтому, надеюсь, кто-то может мне пояснить за следующую фигню. Судя по пик 2, uname -m система должна выдать мне cpu microarchitecture, в случае с i7 4800mq должно выводиться Haswell. Я же вижу i686. Какого хуя? Я же не капчую на проце из девяностых. uname -p должно выдать ISA. Опять же, какого хуя я вижу тут i686? Даже если учитывать, что проц запускается в Legacy mode (32 бит x86 архитектура), то разве самый последний ISA в случае x86 это i686? Есть же i786 (первые pentium 4 были 32-бит x86). С последней строкой вопросов нет -- это просто минимальное требуемое ISA для работы дистрибутива. Причем странно, что я вижу идентичный вывод в первой строке (пик 1) даже на amd ryzen. У него-то cpu microarchitecture тоже не может быть i686.
Аноним 20/11/20 Птн 18:58:09 1861306195
>>1861302
>случае x86 это i686
x86_64
Аноним 20/11/20 Птн 19:09:38 1861319196
>>1861306
Ты же видишь контекст. В данном случае имелось в виду, какой ISA является самым последним в случае с x86 32-бит.
Аноним 20/11/20 Птн 19:11:14 1861320197
>>1861302
cat /proc/cpuinfo

И не выёбуйся, если у тебя Linux.
Аноним 20/11/20 Птн 19:17:35 1861329198
>>1861320
>/proc/cpuinfo
Про это я знаю, но вопрос не стал менее актуален
Аноним 20/11/20 Птн 19:17:49 1861330199
>>1861319
>какой ISA является самым последним в случае с x86 32-бит
Погугли
Аноним 20/11/20 Птн 19:36:17 1861343200
>>1861330
Да не могу я найти ничего конкретно по этим моментам. Помимо этого, все еще интересуют все остальные вопросы, которые я задал в посте
dead per dead 20/11/20 Птн 19:48:48 1861352201
>>1861302
uname -m выдает тебе то, что авторы понимают под типом машины, не более того.
Аноним 20/11/20 Птн 19:52:14 1861356202
>>1861352
Хорошо, а что авторы могут понимать под типом машины в данной реализации в таком случае? Есть предположения?
20/11/20 Птн 19:56:08 1861359203
изображение.png 620Кб, 604x453
604x453
На связи снова дебик-кун. Жопная боль относительно рекурсии: https://pastebin.com/XfFzSv56
Код компилится, но после запуска неизбежно появляется сообщение об ошибке. Что делаю не так, хотя вроде следую той же логики в своем коде, и гугление дает похожие примеры.
Аноним 20/11/20 Птн 20:04:20 1861363204
>>1861356
> а что авторы могут понимать
Учи матчасть и не еби мозги анонам
Аноним 20/11/20 Птн 20:14:54 1861366205
>>1861359
Это нихуя не рекурсия, это - бесконечный цикл без условия выхода
20/11/20 Птн 20:20:25 1861372206
>>1861366
Чет не вдупляю, а как тогда эту шляпу написать правильно
Аноним 20/11/20 Птн 20:30:15 1861385207
>>1861372
В первом варианте есть условие, по которому функция не вызывается заново, в твоем - условия нет.
Аноним 20/11/20 Птн 20:58:35 1861422208
>>1861329
Нет никакого вопроса. Ты путаешь идентификацию системы и идентификацию модели процессора.
Аноним 20/11/20 Птн 21:05:30 1861429209
>>1861302
Я думаю что они просто тиснули что-то типа наименьшего общего элемента. Может быть у тебя система и не использует инструкции 786, кстати.
20/11/20 Птн 21:26:19 1861443210
изображение.png 64Кб, 846x186
846x186
>>1861385
Почему она должна заново вызваться? Для справки, рекурсии в учебнике посвящено пол темы, и за зацикливание ни слова, только весьма странное описание ее работы на пике. Мне вот допустим нужно чтоб в вызове себя она просто перемножала любое число и все
Аноним 20/11/20 Птн 21:31:21 1861446211
>>1861429
>Я думаю что они просто тиснули что-то типа наименьшего общего элемента.
Таковым является i386, и дистр действительно собран под эту ISA -- на i386, i486, i586, i686 и i786 заведется.
>Может быть у тебя система и не использует инструкции 786, кстати.
Вот я и не могу понять, а почему? Ведь 786 был 32-бит x86 несколько первых поколений пня четвертого. То есть почему бы в Legacy Mode процу не исполнять именно ISA i786? Почем проц работает в i686?
Аноним 20/11/20 Птн 21:33:01 1861447212
>>1861422
Но в lscpu белым по черному написано Architecture: i686. То есть проц работает в режиме ISA i686. Почему? Ведь последним ISA для 32-бит x86 архитектуры является i786
Аноним 20/11/20 Птн 21:38:28 1861449213
>>1861447
i686 - это под какую версию архитектуры x86 собрали бинари, команды процессора новее чем описанные в мануале pentium pro не должны использоваться. На этом все.
Аноним 20/11/20 Птн 21:42:50 1861451214
>>1861443
Поставь себя на место компьютера и выполняй по шагам.
foo()
{
x=1;
foo();
x=2; //сюда ты не дойдешь никогда
}
Аноним 20/11/20 Птн 21:56:59 1861459215
>>1861449
Хорошо, то есть ISA процессора в linux узнать невозможно? Ведь мы видим только i686 -- какая архитектура ISA минимально поддерживается ядром системы.
И тогда к чему относится вывод команды uname -i? Там вообще i386, это что?
Аноним 20/11/20 Птн 22:23:38 1861468216
>>1861459
Точную ISA? Это зависит от архитектуры, конечно же.
В принципе если в выхлопе увидел намек на x86, дальше можно чекать только поле Flags из файла /proc/cpuinfo, там в принципе описаны все фичи/инструкции которые поддерживает процессор. Ну или юзать cpuid.
Допустим архитектура i686, но в flags светится команда popcnt, на оригинальном i686 ее не было, а на твоём процессоре есть, ты можешь написать код который её дёргает, система не кинет тебе SIGILL, хоть и система рассчитана на работу на пентиум про.

Можешь ещё глянуть как написана утилита uname. https://github.com/wertarbyte/coreutils/blob/master/src/uname.c
По сути любое получение инфы, это какая-то уже predefined информация из ядра или glibc.
Аноним 20/11/20 Птн 22:26:47 1861469217
>>1861459
Обратись к поставщику своей ОС
Аноним 20/11/20 Птн 23:30:25 1861509218
>>1861468
Я имею в виду, что то, что мы получаем с помощью uname -m -- это информация о том, для какой архитектуры было скомпилировано ядро. В данном случае, для i686. uname -p (по идее) должно выдавать ISA проца. Так как система у нас 32 битка и скомпилена для i686, то проц должен работать, как минимум, в режиме i686 (что он и делает), однако, почему сам проц не работает в режиме i786 (который совместим с i686) который является самым последним и свежим набором команд 32-бит x86 архитектуры?
Я, вообще, правильно понимаю логику или где-то проебался? Я просто уже десяток топиков прочел, везде разные ответы. Также я все еще не понимаю, что выводит uname -i (в данном случае i386)
Аноним 21/11/20 Суб 01:56:40 1861573219
Аноним 21/11/20 Суб 05:08:11 1861621220
>>1861509
Ты логику не понял. Ядро хоть и собранно под i686, можешь на нем гонять инструкции от более новых версий isa если они доступны на данном процессоре. Собранное ядро под i686 не заставляет твой процессор гонять только инструкции для i686, не ограничивает в рамках одной isa, а на новые инструкции проц не будет кидать исключения с неправильной инструкцией.
Исключения наверное lm, который уже x86_64.
Такая тема на каком-то arm или powerpc вероятнее всего не сработает, считай это фичей х86
Аноним 21/11/20 Суб 05:29:38 1861626221
Аноним 21/11/20 Суб 10:07:39 1861717222
>>1852710 (OP)
Короч аноны. Говнокод лонгрид. Мучает меня вопрос...

Пишу под встраиваемки. Часто нужно свапать параметры при изменении в разные места. Например в ПЗУ и на дисплей. Или только на дисплей, а другое на ПЗУ, треть только на ПЗУ.
Четвертое имеет размер не в байт а в 4. И тд и тп.

Причем ок, когда подобной хуйни 5-6, 10, 20.. Можно обойтись пару тройкой энумов и нормально это распихивать и по адресам дисплея и по адресам ПЗУ.

А вот че делать когда их 100 и выше?
В один момент, у меня было 14 C файлов с const массивами, создававшими таблицу:
энум переменной - адрес ПЗУ, адрес дисплея, размер, флаги че с этим делать.
Причем ясен хуй файлы эти хранились отдельно от своих модулей, вместе, т.к. адреса расписывать руками заебнее, чем искать где переменные этого модуля.

Меня в один прекрасный момент это заебало, я решил - еепромы нынче дешевые пиздец и я могу просто ставить размером с ОЗУ, затеняя адреса на еепром.

И наговнокодил вот такую хуйню: https://ideone.com/vDFqUt
Что бы внутри непосредственно модуля, делать вот так: https://ideone.com/t3d5Hn
Сохранение переменной выглядит теперь вот так: VAR_Save(var_props[VAR_ENUM], new_value, NULL);
VAR_Save или Load собственно читает инфу о переменной по адресу в ПЗУ и выполняет действия требуемые в описании.
Например добавляет адрес и размер в очередь на отправку значений на дисплей или в ПЗУ.


Главная особенность этой хуйни, она почти не жрет ОЗУ, жрет столько сколько занимает непосредственно переменная.
При этом обеспечивает моментальную реакцию на изменение.
Это все заебись, только все равно не особо удобно. Если требуется внести изменения в таблицу - милости прошу перепахивать всю хуйню.
Далее, милости прошу соснуть хуйца, если забыл где-то сделать VAR_Save, а просто напрямую записал.

Какие варианты есть еще?
Прям отдельная аля база данных? Но это прям совсем хуйня, т.к.:
- жрет охуеть ОЗУ, на 1 байт будет оверхед из 5-6 байт. Учитывая что большинство переменных такие считай 5х требуемый размер.
- еще более медленное говно, пусть и не сильно.
- требуется либо динамическая регистрация, что еще сильнее разжирнит размер в ОЗУ, один хуй потребует таблиц адресов (ну или при каждых изменениях - сохраненные настройки ВСЕ, т.к. адреса поехали).
- снова городить таблицы внутри, что возвращает меня к первоначальной проблеме.
- один хуй останутся функции чтения\записи










Аноним 21/11/20 Суб 10:08:11 1861719223
>>1861717
>свапать
>свопать
быстрофикс.
Аноним 21/11/20 Суб 10:21:09 1861726224
Аноним 21/11/20 Суб 10:42:40 1861743225
>>1861726
Не спал ночь думал. Решил анона спросить.
Аноним 21/11/20 Суб 13:50:26 1861858226
>>1861743
Не думаю что кто то вообще понял о чем идет речь.
dead per dead 21/11/20 Суб 15:59:02 1861956227
>>1861719
Все равно не понятно.
Аноним 21/11/20 Суб 19:57:26 1862190228
Сап, поясните за битовые сдвиги. Как их воплощать. И с чем использовать. Пару примеров было бы круто увидеть. И где можно прочитать про это?
Аноним 21/11/20 Суб 21:56:07 1862276229
>>1862190
Операторы такие, биты в регистрах сдвигают.
>> и <<
Операторы
Было в регистре число 5 = 101b
Сдвинул влево на 2 позиции, стало число 10100b = 20, сдвиг влево по сути умножение на 2(522).
Сдвинул на 2 позиции опять же число 101b, вышло 1b = 1, сдвиг вправо по сути деление на 2 целочисленно((5/2)/2).
Ещё есть сдвиги разные в процессорах, и сдвиги циклические. Всё это в инете почитаешь.
Аноним 22/11/20 Вск 00:47:55 1862385230
>>1861626
> Всего сообщений: 87
Аноним 22/11/20 Вск 00:52:05 1862390231
>>1862190
>Сап, поясните за битовые сдвиги.
сдвиг на один бит влево равносилен умножению на 2
сдвиг на один бит вправо равносилен делению на 2
сдвиг на два бита - на 4
сдвиг на три бита - на 8
etc.
Аноним 22/11/20 Вск 01:21:06 1862410232
Стикер 0Кб, 512x512
512x512
>>1862390
сдвиг на тридцать три бита - UB
Аноним 22/11/20 Вск 01:28:34 1862418233
Аноним 22/11/20 Вск 10:05:05 1862535234
Аноним 22/11/20 Вск 11:24:54 1862571235
>>1862276
окей, то есть, каждый сдвиг на >> 1 будет умножать на число в два раза больше: 1>> 2 | 2 >> 4 |3 >> 8| 4>> 16 и т.п.
И на сколько можно двигать позиций максимум 32 я так понимаю?? И еще вопрос один глупый вопрос, как переводить с двоичной допустим в 10-ричную. Можно ли при помощи сдвигов это реализовать? Препод нам ляпнул про сдвиги, но объяснять не стал, сказал что еще рано (ебать рано - почти все темы ебнули, а про сдвиги так и не объяснил)
Аноним 22/11/20 Вск 13:33:04 1862697236
>>1862571
Зависит от размера переменной.

Второй вопрос смешной. Внезапно, представление целочисленных регистров и переменных только в битах(и байтах). Считай что запись десятичного числа в переменную уже переводит его в биты.
С битовыми сдвигами можно легко биты эти вывести.
Аноним 22/11/20 Вск 15:05:48 1862754237
>>1862571
> как переводить с двоичной допустим в 10-ричную.

А вот тут тебе уже без настоящего деленя не обойтись.
Вообще такого понятия как перевод из одной системы исчисления в другую для компьютера не актуален. Если закрыть глаза на существующую в 8086 десятичную арифметику, которая давно никем не импользуется. Поодумай эту мысль.

А теперь о том, как вывести на уэкран число в десятичном виде.

Берёшь массив char элементом на... ну 10 хватит.

Делишь переводимое число на 10. К остатку прибавляешь ASCII код нуля и пишешь в последний элемент массива. Проверяешь частное - если не ноль, то повторяешь операции, и записываешь в предпоследний элемент массива, иначе в массиве ASCII коды цифр преобразуемогоо числа.

Смотри пример. Число 0xC. При делении на 10 остаток равен трём и частное равно единице. Три записываешь, единицу делишь снова на 10, получаешь один в остатке и ноль частное. Вот у получилист у тебя цифры 3 и 1. Но поскольку ты записываешь их в массив с конца, то будет 1 и 3, т.е. 13.



Аноним 22/11/20 Вск 15:17:53 1862762238
>>1862571
> как переводить с двоичной допустим в 10-ричную
int number = 100500;
char str[16];
sprintf(str, "%d", number);
d тут значит decimal.
Попробуй ещё %o, %x. octal, hexadecimal
Аноним 22/11/20 Вск 15:24:07 1862763239
>>1862762
Такая-то тонкота. Как будто в тред скриптовых языков вкатился.
Аноним 22/11/20 Вск 15:37:41 1862770240
>>1862762
очень интересно, но ничего не понял
Аноним 22/11/20 Вск 15:43:08 1862772241
Аноним 22/11/20 Вск 15:57:04 1862779242
>>1862762
Смешно, но это реально один из самых простых способов перевести число. Ещё можно itoa юзать, но она не стандарт.
Аноним 22/11/20 Вск 18:30:28 1862914243
>>1862754
Я так понимаю для 16 ричной системы будет 0xF?
Аноним 22/11/20 Вск 18:35:51 1862924244
>>1862914
Нет, это же 15. 0x10 = 16.
Аноним 22/11/20 Вск 18:41:02 1862937245
Аноним 22/11/20 Вск 18:43:13 1862941246
>>1862924
0xC - если 13, то по логике 16 - 0xf?
я в паутине не понимания
Аноним 22/11/20 Вск 18:45:00 1862945247
>>1862941
У него очевидная ошибка.
9 = 9
A = 10
B = 11
C = 12
Аноним 22/11/20 Вск 18:50:27 1862952248
>>1862945
окей, так. Мне в руки попала программа. Перевода с 10 в 16-ричную.
Так там мужик объясняет, что в конце нужно добавлять 0xf для перевода в 16-ричную. объясните мне что да как, за сегодня только еще больше путаницы произошло в моем мозгу. Возможно я что-то не так понимаю
Аноним 22/11/20 Вск 18:53:51 1862956249
1603912068018.jpg 11Кб, 500x186
500x186
1470833763484.png 5Кб, 259x194
259x194
>>1862952
Совершенно нет желания этим заниматься. Это разжевывается в любом учебнике информатики примерно в начале.
Аноним 22/11/20 Вск 18:53:55 1862957250
>>1862952
кому в общем верить? Каждый говорит по разному.
Аноним 22/11/20 Вск 18:56:45 1862959251
>>1862956
0123456789 A -10; B - 11; C - 12; D - 13; E - 14; F - 15; теперь понимаю. Спасибо
Аноним 22/11/20 Вск 18:58:07 1862961252
>>1862959
Да, F это самая большая однозначная цифра, после нее идет 10. Как в десятичной после 9.
Аноним 22/11/20 Вск 22:42:19 1863202253
>>1862945
Да, походу я сморозил глупость.
Аноним 22/11/20 Вск 22:51:59 1863209254
>>1862957

int val = 0x3e7211da;

int pos = 10;
char num[10];
num[--pos] = '\0';
do
{
num[--pos] = '0' + val % 10;
val /= 10;
}
while(val);

puts(num + pos)

Не проверял. Надеюсь что ты проверишь. Но я настолько крут, что в 99% этот код рабочий.

Аноним 23/11/20 Пнд 00:19:04 1863301255
Какая разница между statements и operator? Всё переводится как оператор, но я гуглил и нашел какую-то тухлую тему с форума по с++ где напиасли несколько постов непонятных, где ничего конкретно не сказали, только что у statements нет перевода "операция" вообще
Аноним 23/11/20 Пнд 00:52:12 1863322256
>>1863301
Statement переводится примерно как "выражение". Проблема в том, что Expression тоже переводится как выражение.
Гадать не нужно, все описано тут
https://en.cppreference.com/w/cpp/language/statements
Есть statement, скажем условно что это утверждение.
statement может быть разных видов, например expression то есть выражением.
Выражение (expression) состоит из operators с операндами как сказано тут
https://en.cppreference.com/w/cpp/language/expressions
Аноним 23/11/20 Пнд 01:29:36 1863343257
>>1863209
Как же красиво это наебнётся - любо-дорого посмотреть.
Аноним 23/11/20 Пнд 03:02:41 1863391258
>>1863322
>Statement переводится примерно как "выражение"
Проиграл с этого академика
Аноним 23/11/20 Пнд 04:45:56 1863409259
объясните вкратце, хуки легко детектятся какими-нибудь античит системами? можно ли со 100% гарантией только получать информацию от приложения (игры) и не получить бан, без попыток подмены адресов в его памяти? если что, я не читер и никакого преимущества над другими я не получаю в данном случае (игра вообще сингл, просто требует наличие аккаунта и подключение к сети). хочу сделать для себя небольшого хелпера, который структурировал бы инфу по моему алгоритму в отдельном процессе. хуки не писал ни разу
Аноним 23/11/20 Пнд 05:34:11 1863427260
>>1863209
Ты используешь do while, а значит по мнению местного шизика тебя б уволили к хуям собачьим.
Аноним 23/11/20 Пнд 06:17:19 1863432261
244Кб, 431x419
431x419
лежало значит у меня это кольцо неделю, потом поставил 30с и спустя еще одну неделю его купила дедайка
???
??
?
кто кого наебал?
Аноним 23/11/20 Пнд 07:31:38 1863440262
>>1863432
Ты его. Это лютый оверрейт который форсят авторы гайдов чтобы лутать орбы с лохов.
Аноним 23/11/20 Пнд 07:33:42 1863441263
Аноним 23/11/20 Пнд 08:37:54 1863454264
>>1863441
да я мисанул по треду. расскажи про хуки тогда >>1863409
Аноним 23/11/20 Пнд 08:40:45 1863456265
>>1863440
хз, я просто увидел топ моды и поставил цену на обум. я уже и забыл про это кольцо, еще немного и сдал бы вендору. не знаю ни один билд, кому бы такая солянка зашла даже за 30с. с другой стороны, уже конец лиги, мб месяца полтора назад на него еще и был бы спрос...
Аноним 23/11/20 Пнд 12:07:03 1863563266
Решаю задачки на сайтах типа кодварса. Не могу разобраться со строками. Перестановка порядка слов к примеру, или перевернуть слово и потом переставить порядок. Или тот же малок для алокаций памяти для массива из указателей на строки. Короче голова болит, что делать? Может есть какие нибудь ресурсы или книжки где все разжуют, без решений.
Аноним 23/11/20 Пнд 12:39:23 1863583267
>>1863563
Тетрадка в клетку. Пишешь в клетки слова по буквам. Все диды так делали.
Аноним 23/11/20 Пнд 12:54:20 1863587268
>>1863583
А разве наши диды не ваевали, когда где-то в США диды строки в тетрадки писали?
Аноним 23/11/20 Пнд 13:05:40 1863597269
Аноним 23/11/20 Пнд 13:09:29 1863602270
>>1863583
А по малокам книжки есть какие?
Аноним 23/11/20 Пнд 13:15:15 1863607271
>>1863409
с 100% гарантией ты вообще нихуя не сделаешь.

что за игра?
Аноним 23/11/20 Пнд 13:50:52 1863626272
>>1863607
path of exile
сначала мне интересно было понять, как работает эта тулза https://github.com/SnosMe/awakened-poe-trade
она каким-то образом определяет предмет, на который ты ткнул в gui самой игры вплоть до получения свойств предмета, и показывает его цену на игровом рынке. покопался я в исходниках и нашел какие-то намеки на использование хуков, но целиком сам процесс именно этого приложения понять не смог. при этом, за это приложение не банят и на офф форуме игры его обсуждают/советуют + стримеры им пользуются.

сейчас я хочу сделать что-то подобное, только чтобы получать информацию о текущих квестах в игре. это нужно для того, чтобы бегать сюжетку максимально быстро и не сворачивать игру на гайд - не тратить время на это. игра построена так, что можно делать параллельно задачи в игре, даже если игра еще сама не говорит о них, а чтобы делать такое без гайда, надо прокачать героев 100 наверное и тупо вызубрить этот монотонный процесс. т.е. суть моего помощника в том, чтобы в реальном времени транслировать, если не в сам процесс игры, то в процесс этого приложения информацию о следующем действии. для этого надо как-то обрабатывать состояния квестов в процессе игры и получать от них информацию.
Аноним 23/11/20 Пнд 14:50:03 1863677273
>>1852710 (OP)
Что и чему позволяет осуществять наличие файловых дескрипторов, если есть PID'ы + fork(), open(), exit() и т.д ? Никакие гуглы и книжки по-програмиздски человеческим языком пояснить не могут.
Аноним 23/11/20 Пнд 15:10:35 1863706274
>>1863677
Из всего что ты перечислил, только open() имеет отношение к файловым дескрипторам. Собственно open() при открытии файла и возвращает этот дескриптор, с помощью которого ты осуществляешь операции с открытым файлом.

Аноним 23/11/20 Пнд 15:19:32 1863716275
>>1863706
Куда возвращает? Родительскому процессу? А дальше что происходит, род. процесс этот дискриптор параметром в его (родительских) вызовах использует? Для чего?
Аноним 23/11/20 Пнд 15:29:51 1863726276
>>1863716
Неправильные вопросы задаёшь. Это плохо.
>Куда возвращает?
Функция open() возвращает файлоый дескриптор или -1, если по какой-то причине не удалось открыть файл.

>Родительскому процессу?
Тому процессу, который вызывает функцию open()

> А дальше что происходит, род. процесс этот дискриптор параметром в его (родительских) вызовах использует?

Дальше ты используешь этот дескрпитор в функциях write и read, f так же close()/

>Для чего?
Чтобы писать в файл и читать из файла.

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

exit() вообще не использует файлоые дескрипторы, а просто завершает программу. При этом ОС сама закроет все открытые файлы. Но лучше это делать явно.

Аноним 23/11/20 Пнд 15:36:44 1863730277
>>1863726
Т.е процесс 1 вызывает open() для открытия файла 1, и если у вызова(?) этого не получается, то он возвращает процессу 1 дескриптор -1? А дальше при попытке вызвать read() или write() процессом 1 в них (read/write) передаётся уже полученный дескриптор -1 в качестве аргумента?
Аноним 23/11/20 Пнд 15:38:46 1863732278
>>1863730
Если тебе функция open вернула -1, зачем дальше пытаться read/write? Выводишь сообщение об ошибке пользователю retry/abort либо завершаешь прогу.
Аноним 23/11/20 Пнд 15:53:29 1863742279
>>1863732
В таком случае в какой раздел вирт. адресного диапозона процесса записывается дескриптор? Получается когда процессор до него (дескриптора) доходит, он что-то вроде джампа к инструкциям завершению/приостановке процесса делает?
Аноним 23/11/20 Пнд 15:55:09 1863743280
>>1863742
А, блять, опять троллинг.
Аноним 23/11/20 Пнд 15:57:16 1863745281
>>1863743
Блять нет. Я реально не понимаю.
Аноним 23/11/20 Пнд 16:00:45 1863750282
>>1863745
Зачем тогда тебе программирование, да ещё на Си?
Аноним 23/11/20 Пнд 16:05:28 1863752283
>>1863750
Затем что я наверное способен это понять если буду досканально представлять что где и как происходит. Просто реально, куда именно внутри процесса дискриптор записывается? Как именно он на исполнение/своппинг/завершение повлиять может?
Аноним 23/11/20 Пнд 16:23:32 1863777284
>>1863752
Расскажи нам, что такое файловый дескриптор. Ты же читал какие-то книжки, а в книжках это объясняют. А если не читал или не понял, то почему дегенератские двачи должны тебе объяснить.
Аноним 23/11/20 Пнд 16:29:50 1863782285
>>1863777
"Проще говоря, когда вы открываете файл, операционная система создает запись, представляющую этот файл и хранящую информацию об этом открытом файле. Таким образом, если в вашем OS открыто 100 файлов, то в OS будет 100 записей (где-то в kernel). Эти записи представлены целыми числами, такими как (...100, 101, 102....). Этот номер записи является дескриптором файла. Таким образом, это просто целое число, которое однозначно представляет открытый файл в операционной системе. Если ваш процесс открывает 10 файлов, то в таблице процессов будет 10 записей для файловых дескрипторов."

То что это число выдаваемое процессам я понял, но как именно они на процесс влияют? Каким образом говорят процессу выполнять/невыполнять какие-то вызовы? Хуй мне на ротешник в разъяснений вопроса прилетает везде.
Аноним 23/11/20 Пнд 16:46:33 1863802286
>>1863782
> читает какие-то машпереводы
Вот оно че.
> Каким образом говорят процессу выполнять/невыполнять какие-то вызовы?
Это просто число, данные. Дальше процесс может передавать его как аргумент в другие системные вызовы. Что такое вызов функции, ты представляешь?
Аноним 23/11/20 Пнд 16:58:32 1863810287
>>1863391
Так он неправ или что? Я вообще ничего не понимаю
Аноним 23/11/20 Пнд 17:02:07 1863816288
>>1863802
>Что такое вызов функции, ты представляешь?
Не очень. Знаю что функция main все остальные вызывает, а её в свою очередь ещё какой то процесс (то-ли cli, толи инит). Да и честно сказать про стек подзабыл, помню что туда всё заносится по принципу FIFO до 1-8Мб, по-этому лучше указатели в случае динамических структур/массивов использовать.
Всё из-за того что практики по темам нихуя. Даже найти себе задачи проблема. А без этого всего и читать/понимать код/api не выйдет.
Аноним 23/11/20 Пнд 17:06:02 1863819289
>>1863810
В теле функции находятся statemets, один из них - expression statement:
[expression] ;
Expression составляется из переменных, констант и операторов, которые к ним применяются.

Аноним 23/11/20 Пнд 17:41:44 1863854290
>>1863816
Ебать у тебя каша в голове.
crt0 вызывает функцию main. (JFYI)

Короче, у тебя уникальный случай. Вот бывыают пустые головы, которые ничего не знают. Но у тебя в голове куча обрывочных сведений, смешавшихся в кашу. Такого феерического пиздеца надо ещё поискать. Тебе проше забыть всё что знаешь и начать изучать Си с "чистого листа".


Я бы, честно говоря, охуел бы и застрелился в голову, если бы внезапно узнал что ты мой студент.

Аноним 23/11/20 Пнд 18:05:08 1863893291
>>1863854
А ты Вы преподаете?
Аноним 23/11/20 Пнд 18:07:58 1863898292
>>1863854
>начать изучать Си с "чистого листа"
Может и так. Только вероятно опять из головы велетит от отсутствия практики.
Аноним 23/11/20 Пнд 20:15:35 1863975293
>>1863898
Прату попробой только делай задания после каждой главы.
Аноним 23/11/20 Пнд 20:38:10 1863991294
>>1863563
> Короче голова болит, что делать
Кодить на нормальном языке, от себя могу посоветовать python.
Аноним 23/11/20 Пнд 20:45:46 1863998295
Аноним 24/11/20 Втр 10:24:44 1864336296
>>1863991
От себя советую джаваскрипт.
Недавно, впервые в жизни, подумал прикоснуться к сетевой параше - написать серверок с передачей данных в удаленный браузер. На чем такое делать - в душе не ебу, но вспомнил, что уже пользуюсь удобным серверком из одного экзешника, в свойствах которого было написано "node.js". Так что решил тоже на ноде писать за неимением других мыслей. Проиграл с этого джаваскрипта. Пишешь хуйню от балды, на чистой интуиции, и оно работает! Просто ор выше гор. Язык почти соответствует парадигме, где беспардонно пишешь "сделай заебись" и норм.
Аноним 24/11/20 Втр 10:36:47 1864340297
>>1864336
Зачем ты удолил браузер? Восстанови.
Аноним 24/11/20 Втр 19:48:39 1864743298
2020-11-24 1841[...].png 17Кб, 661x391
661x391
2020-11-24 1841[...].png 7Кб, 569x250
569x250
2020-11-24 1842[...].png 24Кб, 655x524
655x524
Помогите ньюфагу-хеллоуворлдщику.
Кароч хочу я чтобы была возможность в строки писать на любом языке. Однако при компиляции я постоянно ловлю пикрелейтед 1. Но при этом OnlineGDB прекрасно с этим справляется. Почему так, и самое главное, можно ли это пофиксить?
Гугл подсказал следующее решение (пик.3), но оно какое-то геморное, не говоря уже о том, что я пока понятия не имею что это вообще такое.
Аноним 24/11/20 Втр 19:56:53 1864744299
1484112959430.png 47Кб, 1260x262
1260x262
>>1864743
Сменяй кодировку в терминале
Гугол говорит просто добавить в settings.json
"terminal.integrated.shellArgs.windows": ["-NoExit", "/c", "chcp.com 65001"],
Аноним 24/11/20 Втр 20:10:43 1864747300
Аноним 24/11/20 Втр 20:37:07 1864772301
>>1864744
Уточню что кодовая страница 65001 это utf-8 (не знаю насколько полноценно), мало ли тебе это важно.
Аноним 25/11/20 Срд 03:21:53 1865063302
>>1864743
>хочу я чтобы была возможность в строки писать на любом языке
Хотеть не вредно.
В си строк нет, есть только байты. Так что, если тебе нужны строки, ты сам должен их сделать из байтов. Иными словами, не понимая что такое строки и как работают разные кодировки, ты ничего не напишешь. Можешь разве что высрать говно, которое будет работать только у тебя на компьютере, а у остальных кракозяблы и краши.
>оно какое-то геморное, не говоря уже о том, что я пока понятия не имею что это вообще такое
Вот съеби и не возвращайся пока не поймешь. Или съеби программировать на питоне. В любом случае - съеби, пока что ты не туда зашел, петушок. Си не тот язык, где можно писать на авось сам не зная что.
Аноним 25/11/20 Срд 04:39:25 1865093303
>>1865063
>в си нет строк
В юнитфактори, быдло, подменяющее понятия.
покормил
Аноним 25/11/20 Срд 10:27:59 1865185304
vim.jpg 52Кб, 745x430
745x430
bash.jpg 82Кб, 408x622
408x622
Аноны привет. Подскажите, что я жопой прочитал.
1)fork() возвращает родителю PID ребёнка, ребёнку возвращается 0;
2)У ребёнка меняется PPID (Parent Process Id) на PID родителя.
Почему меня PPID ребенка не равен пиду родителя ?
Аноним 25/11/20 Срд 11:07:39 1865208305
>>1865185
Наверно родитель уже успел схлопнуться.
Аноним 25/11/20 Срд 11:17:24 1865217306
Аноним 25/11/20 Срд 11:18:32 1865218307
>>1865217
я залетел не в тот тренд?
Аноним 25/11/20 Срд 11:48:43 1865230308
>>1865185
Удали свой абортуалбох.

main()
{
int pid = fork();
if (pid == 0)
printf("%d %d %d\n", pid, getpid(),getppid());
else
printf("%d %d %d\n", pid, getpid(),getppid());
}


$ ./a.out
4868 4867 4834
0 4868 4867
Аноним 25/11/20 Срд 12:00:08 1865241309
>>1865208
Этот прав, ppid сына в юниксе тогда становится 1.
Аноним 25/11/20 Срд 12:19:48 1865263310
obeme.jpg 7Кб, 226x202
226x202
>>1865230
лол, спасибо анон. А что это получается мой виртуалбокс мне паскудит?
Этож сколько явного/неявного гемороя я хапану из за него.


/a.out
8769 8768 7373
0 8769 1490
Аноним 25/11/20 Срд 12:22:57 1865267311
image.png 54Кб, 300x168
300x168
Аноним 25/11/20 Срд 12:39:33 1865276312
>>1865263
> 8769 8768 7373
> 0 8769 1490
7373 должен быть пид твоей оболочки, а кто такой 1490?
Там должен быть пид родителя (8768) или 1.
Аноним 25/11/20 Срд 12:53:36 1865288313
>>1865263
> А что это получается мой виртуалбокс мне паскудит?
Нет, тебе врут, запусти pstree
Аноним 25/11/20 Срд 13:21:56 1865320314
>>1865276
pydof systemd = 1490.
с помощью pgrep методом тыка нашел что 7373 - pid баша.
получается что 7373 пид-баша, когда процесс родитель схлопнулся раньше времени(хер знает почему), как сказал анон >>1865208,
потомок вместо того чтобы получить себе в ппид пид-баша-7373, получает в свой ппид пид-системд-1490.
Аноним 25/11/20 Срд 14:07:23 1865366315
изображение.png 42Кб, 1220x791
1220x791
Хай! Начинающий программист, задание вывести строку если в она оканчивается на 3 кириллических символа. Встал вопрос, почему программа не работает. Вообще не понимаю почему, мог бы кто объяснить?
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <stdlib.h>

wchar_t get_wcs() {
wchar_t buf[81] = {0};
wchar_t
res = NULL;
int len = 0;
int n = 0;
do {
n = wscanf(L"%80[^\n]", buf);
if (n < 0) {
if (!res) {
return NULL;
}
} else if (n > 0) {
int chunk_len = wcslen(buf);
int str_len = len + chunk_len;
res = realloc(res, sizeof(wchar_t) (str_len + 1));
wmemcpy(res + len, buf, chunk_len);
len = str_len;
} else {
wscanf(L"%
c");
}
} while (n > 0);

if (len > 0) {
res[len] = '\0';
} else {
res = calloc(1, sizeof(wchar_t));
}
return res;
}

int main() {
wchar_t s = NULL;
s = get_wcs();
int n = wcslen(s);
if (/
1/(L'А' <= s[n-3]) && (s[n-3] <= L'я') && /2/(L'А' <= s[n-2]) && (s[n-2] <= L'я') && /3*/(L'А' <= s[n-1]) && (s[n-1] <= L'я'))
fputws(s, stdout);
}
Аноним 25/11/20 Срд 14:09:25 1865368316
>>1865366
если что, работать обязательно нужно с unicode символами
Аноним 25/11/20 Срд 14:11:14 1865370317
twoouts.jpg 90Кб, 542x460
542x460
>>1865320
кароче поставил задержку sleep(1) все начало работать корректно.

Если кому интересно.
1) Создается процесс батя ppid=7373, pid=8768, child_pid = 8769
2) Создается процесс ребенок ppid = 8768, pid = 8769, value = 0
3) запускаем наше файло. Мой терминал думает что программа завершена - выводит результат процесса бати, после чего думает что все закончено - уничтожает процесс бати, после чего ребенок получает в свой ppid pid systemd, сверху по иерархии процессов.

Единственное я не понял, почему два a.out? мы же делаем форк от текущего процесса где мы находимся т.е от баша. Должен же быть баш родитель, а a.out чайлд. Я же верно прочитал по схеме, что из баша создается один родитель и один ребенок(красным обвел), т.е за одну функцию fork() мы создаем +2 новых процесса?
От родителя создаем еще одного родителя, а от второго ребенка? wtf?)
Аноним 25/11/20 Срд 14:41:48 1865389318
>>1865370
Оболочка делает fork+exec и создает процесс a.out.
Процесс делает fork и создает копию.
Аноним 25/11/20 Срд 14:42:18 1865391319
>>1865370
Ты это по какому-то учебнику выполняешь?
Аноним 25/11/20 Срд 14:45:14 1865393320
>>1865063
Вот это бабах неосилятора.
Аноним 25/11/20 Срд 14:59:03 1865397321
>>1865366
Зачем усложнил?
Нужно в три раза проще.
Аноним 25/11/20 Срд 15:08:06 1865403322
Аноним 25/11/20 Срд 15:09:43 1865405323
>>1865368
Что такое unicode символы?
dead per dead 25/11/20 Срд 15:31:17 1865420324
Аноним 25/11/20 Срд 15:33:45 1865422325
>>1865405
UTF-8 кодировка, ну или UTF16, UTF-32
Аноним 25/11/20 Срд 15:34:59 1865424326
>>1865420
Сорян, забыл уточнить, но мне нужно через библиотек wchar.h
Аноним 25/11/20 Срд 16:02:38 1865443327
Аноним 25/11/20 Срд 16:05:05 1865444328
>>1865391
теоретическая часть у конькова/карпова откровенно дерьмовая. Теорию по Таненбауму.
Аноним 25/11/20 Срд 16:50:47 1865494329
Подскажите позязя
почему условие на '\n" не срабатывает?
while (arrayString != '\n'){
scanf("%c", &arrayString);
printf("Âû ââåëè ñèìâîë %d: %c\n", i, arrayString);
i++;

//arrayString = '\n';
};
Аноним 25/11/20 Срд 17:19:38 1865511330
>>1865494
Ну потому что arrayString у тебя указывает всегда на одно и то же место? Ведь ты только i увеличиваешь.
Аноним 25/11/20 Срд 20:01:03 1865638331
>>1865511
Макаба съила квадратные скобки ииндексы и кавычки у \n,, но символы считываются потом выводятся но условие в while не срабатывает. Если напрямую присвоить (под комментом) цикл прерывается. С-free win XP.
Аноним 26/11/20 Чтв 02:55:17 1865815332
image.png 61Кб, 1253x652
1253x652
Анон я написал свой первый мейкфал. ну нахуй это говно пиздец просто параша невыносимая
Аноним 26/11/20 Чтв 03:54:07 1865824333
>>1865815
А там разве нет никаких фреймворков ил типа того?
Аноним 26/11/20 Чтв 04:10:39 1865829334
>>1865815
А чем cmake вообще плох?
Аноним 26/11/20 Чтв 04:28:04 1865833335
>>1865829
Незнаю, но у меня жирный проект и специфичный дурной компилятор и я его всю жизнь ИДЕ билдил и там всегда пиздос был в мейкфайле. Но тут чет пришлось подразобрать его и вытащить сборку из IDE.

>>1865824
Есть но я стремался ибо вообще не ебал что они должны делать и как.
Конечно буду теперь их изучать. Вообще мейк такой блевотный, что надо что то безмейковое искать.
Аноним 26/11/20 Чтв 04:30:00 1865834336
>>1865833
>Вообще мейк такой блевотный, что надо что то безмейковое искать.
Есть Scons правда я не уверен что пидором не назовут
Аноним 26/11/20 Чтв 06:52:19 1865854337
>>1865829
Ничем, он просто не нужен, как и make.
Пользуются этим только шизоидные пердуксоиды, зачем-то пишущие виндовые программы линуксными инструментами. У некоторых голова из жопы выросла, что поделать, бывает.
Аноним 26/11/20 Чтв 07:42:03 1865860338
>>1865833
Мне cmake попроще кажется чем написание скрипта под make. Не агитирую за него, просто стало интересно что аноны думают о нём.
>>1865854
А как тогда приделывать CI/CD? Или надо на хосте поднимать IDE для сборки и тестирования проекта? Или обязательно системы сборки должны быть headless-IDE по сути которые должны хавать файлы проектов?
Аноним 26/11/20 Чтв 09:47:55 1865901339
2020-11-26103613.jpg 117Кб, 869x460
869x460
2020-11-26104031.jpg 67Кб, 676x398
676x398
2020-11-26104411.jpg 92Кб, 647x413
647x413
>>1865494
Бамп вопросу. С do while так же не срабатывает.
Аноним 26/11/20 Чтв 09:58:31 1865905340
>>1865901
Дауны, куда вы лезете без ВО
Аноним 26/11/20 Чтв 09:59:14 1865908341
>>1865901
Ты тред читал? Do while юзать нельзя, в уважаемых конторах за такое увольняют. Так Анон говорил!

В примере с do while ты чекаешь в условии цикла следующий элемент, ведь перед проверкой бахнул i++, естественно не будет работать
Аноним 26/11/20 Чтв 10:15:18 1865916342
Аноним 26/11/20 Чтв 10:26:40 1865925343
>>1865905
Никуда не лезу.
ВО есть, читаю Прату.
>>1865908
Спасибо помогло.
Аноним 26/11/20 Чтв 10:34:34 1865928344
Аноним 26/11/20 Чтв 10:35:54 1865932345
>>1865928
это какой-то символ?
Аноним 26/11/20 Чтв 11:12:42 1865958346
>>1865905
Шиз всравший 5 лет, спок.
Аноним 26/11/20 Чтв 13:29:03 1866046347
Аноним 26/11/20 Чтв 13:34:18 1866052348
Аноним 26/11/20 Чтв 13:35:24 1866055349
>>1866052
А так вообще четыре
"\n"
Аноним 26/11/20 Чтв 13:39:12 1866057350
>>1866055
просто в некоторых файлах энтер cr lf добавляет
Аноним 26/11/20 Чтв 14:00:23 1866068351
>>1866057
А зачем они это делают? Вот дураки.
Аноним 26/11/20 Чтв 14:06:46 1866074352
>>1866057
> cr
> lf
Ну вот видишь и тут по два символа.
Аноним 26/11/20 Чтв 18:30:42 1866285353
>>1865925
>ВО есть
У тебя справка от психиатра должна быть если ты такое осилить не можешь
Аноним 26/11/20 Чтв 19:16:41 1866315354
IMG202011262315[...].jpg 98Кб, 545x533
545x533
Ну шо, ребзя, вам задачка на вечер.
Аноним 26/11/20 Чтв 19:47:43 1866347355
>>1866315
Ну тут однозначно счетом древних русов.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов