C Programming Language #67 /clang/

 Аноним OP 08/01/21 Птн 20:41:22 #1 №1904954 
C Propaganda.jpg
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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. [email protected] "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 помогает читать сложные сишные декларации.

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

- №64: https://arhivach.net/thread/623166/
- №65: https://arhivach.net/thread/637465/
- №66: https://arhivach.net/thread/637469/ >>1873113 (OP)
Loading...
Аноним 08/01/21 Птн 21:04:45 #2 №1904970 
>>1904813 →
>ch = st;
Ты пишешь значение байта (т.е. 0x20) в адрес. Если нужно в ch зафиксировать адрес то: ch = st + i * sizeof(char);

И возможно далее fputs(0x20, stdout) приводит к сигсгеву. Асло если ты хочешь "поймать" правый крайний пробел, то очевидно лучше начинать с конца массива.

Аноним 08/01/21 Птн 21:07:48 #3 №1904973 
>>1904970
>ch = st + i * sizeof(char);
или же ch = &st;
Аноним 08/01/21 Птн 21:19:06 #4 №1904979 
>>1904970
В таких тонкостях памяти процесса я ещё не разбирался (и не особо знаю где инфу взять).
>ch = st + i * sizeof(char)
А зачем i + sizeof есть квадратные скобки могут разыменовать?
>Асло если ты хочешь "поймать" правый крайний пробел
По Прате надо было первый попавшийся.

>>1904973
>или же ch = &st;
Так это же вроде взятие адреса самой переменной указателя, а не значения по нему хранящегося.
Аноним 08/01/21 Птн 21:31:33 #5 №1904985 
>>1904979
>Так это же вроде взятие адреса самой переменной указателя
А, блять, так и надо было.
Аноним 08/01/21 Птн 21:38:39 #6 №1904990 
>>1904979
Макаба зачем-то съедает квадратные скобки.
Должно так:
ch = &st(i);
Только скобки разумеется квадратные. Так ты берешь адрес байта с пробелом. Без амперсанда - просто записываешь значение (0х20) этого байта в возвращаемый адрес.

>По Прате надо было первый попавшийся.
Тогда после лайна с получением адреса первого пробела напиши break; И как вариант - https://pastebin.com/wK2rePHk

Я правда так и не понял, чем тебе strchr() не угодил.
Аноним 08/01/21 Птн 21:49:15 #7 №1905005 
>>1904990
>Я правда так и не понял, чем тебе strchr() не угодил.
Угодил, на нём и переписал, просто было интересно в чём дело - в долбёжке в глаза.
Аноним 08/01/21 Птн 22:23:33 #8 №1905055 
не заебало пердолиться?
Аноним 08/01/21 Птн 23:40:41 #9 №1905132 
Меня вот заинтересовало почему бы просто не использовать типы из Rust в C? Они ведь действительно очень лаконичны и могуть быть определены, если typedef'нуть через громоздкие аналоги в inttypes.h? Ну и за'define'ить спецификаторы для scanf и printf. По типу https://pastebin.com/3hPbqxur

Как людям норм работать с int при написании целых ОС, когда там то 2 байта, то 4? Или вся суть заключается в том, чтобы взять самый быстрый тип int (обычно) и от него плясать беря чуть меньше или чуть больше уже в зависимости от ситуации?
Аноним 09/01/21 Суб 01:40:29 #10 №1905237 
>>1905132

Люди давно придумали stdint.h: uint8_t, uint64_t и прочее. А еще в ядре определены всякие __u8

Раст тут не новатор нихуя. Хотя мне тоже кажется странным килотонны UB закладывать в стандарт языка изначально.
Аноним 09/01/21 Суб 01:41:06 #11 №1905238 
>>1905237

Самофикс: разная размерность типов - не UB, а просто неопределенность, зависящая от платформы, разумеется.
Аноним 09/01/21 Суб 15:52:28 #12 №1905539 
>>1904954 (OP)
Есть желающие заработать 500р? Меня заебало мучаться с этим языком, хочу сдать и забыть уже, ибо это 1 предмет, все остальное мы пишем на человеческих языках.

Нужно на СИ написать функцию, аналог линуксовой команды find без использования system()
Нужно чтобы эта функция проходила по каталогу, который передан как параметр, выглядеть должна вот так
void find(char path, char type, charname){...}
Соответственно к примеру, find("Folder/", "-name", ".txt)" должна находить все файлы в Folder с расширением .txt. и выводить их в консоль. обозначает все файлы, find ("Folder/", "-type d", "t*"), должна найти в Folder все каталоги начинающиеся с t и вывести в консоль.

А , да, без всяких конченных либ, без conio.h, windows.h и тд, чисто либы, которые заложены в линуксовой среде так скажем, соответственно, это компилировалось с помощью команды gcc -ansi -Wall -o main main.c к примеру пусть файл называется main

Кому интересно - оставляйте свою телегу. Думаю, для людей, которые любят этот язык тут работы на минут 15-20.
Аноним 09/01/21 Суб 15:56:36 #13 №1905544 
>>1905539
двач удаляет звездочку, ну вы поняли короч, что 'звездочка.txt' это все файлы с расширением txt
Аноним 09/01/21 Суб 16:23:16 #14 №1905588 
>>1905539
https://codeforwin.org/2018/03/c-program-to-list-all-files-in-a-directory-recursively.html
sageАноним 09/01/21 Суб 16:37:11 #15 №1905602 
>>1905539
>аналог линуксовой команды find
Хуясе ты ибанат))00)
Find может даже твою мать найти и трахнуть прямо в консоле.
Аноним 09/01/21 Суб 16:43:29 #16 №1905610 
>>1905602
Ну это хорошо, в нашем случае версия упрощенная, остальной функционал я сам уж.
>>1905588
спасибо, это решает мою задачу. Так то у меня проект написан, основная ебля была с тем, чтобы искать все файлы, то бишь аналог звездочка.txt реализовать.
Еще вопрос.
Как добиться вывода в таком виде? Просто не очень понимаю, как динамически такие штуки делать.
Аноним 09/01/21 Суб 18:04:05 #17 №1905689 
>>1905610
Обмазать счетчиками и ифами. Ничего сложного.
Аноним 10/01/21 Вск 03:25:46 #18 №1906292 
Пишу по-фану файловый менеджер. Соответственно для открытия файлов нужно вызывать nano/vim/etc...

Интересуют 2 вопроса:

Как узнать у системы наличие одного из этих редакторов, кроме поиска бинарника?

Как вызвать запуск бинарника не через system("...").
По второму нарыл только всякие exec* функции, но у них не удаётся разобраться с передачей параметров запуска редактора, а именно пути к файлу. Т.е. я смог вызвать только запуск nano без аргументов.

Буду благодарен за ответ на любой из вопросов!
Аноним 10/01/21 Вск 03:35:16 #19 №1906293 
>>1906292
В линуксах дефолтный для юзера редактор лежит в переменной окружения EDITOR - его и используй.

А в чём проблема сделать строку с нужными аргументами и вызвать system ("$EDITOR путь-к-хуйне")
Аноним 10/01/21 Вск 08:22:50 #20 №1906345 
Есть один тупой вопрос, извините: в чистом си можно объявить и инициировать массив с нулями? На стаковерфло пишут, что можно int i[n] = {0}; но у меня компилятор не пропускает.
Аноним 10/01/21 Вск 08:44:38 #21 №1906346 
>>1906345
У тебя компилятор не пропускает потому скорее потому что n не константа
Аноним 10/01/21 Вск 09:25:55 #22 №1906347 
>>1906346
n - переменная, в неё значение до этого считается. Прикрутить фор и забивать им нули - решение неочинь, да?
Аноним 10/01/21 Вск 09:28:26 #23 №1906350 
>>1906347
Ты не можешь без фокусов в си создать массив размером с переменную.
В любом случае почему бы тебе не написать конкретную ошибку компилятора
Аноним 10/01/21 Вск 10:12:34 #24 №1906359 
>>1906347
memset(arr, 0, sizeof(arr));
Либо же для массива, объявленного где-то и переданного в функцию:
memset(arr, 0, sizeof(×arr) × length);
Аноним 10/01/21 Вск 15:14:52 #25 №1906480 
>>1905237
В чем Раст новатор так это в удобных названиях для точных типов, мне кажется в C людям просто лень вбивать uint64_t и PRId64, SCNd64, и все просто пользуются long long и прочими стандартными типами. Ну Расту было проще, не надо было поддерживать legacy. Я ждал, что кто-то недостатки перечислит такого подхода как я выше описал, но мне кажется даже если код выкладывать с такими забиндеными Растовыми типами вместо uint64_t, то все даже очевиднее будет, чем разбирать все эти (num)_t в конце, просто u64 и ничего лишнего.
Аноним 10/01/21 Вск 15:15:28 #26 №1906481 
>>1906480
PRIu64, SCNu64 соответствуют uint64_t фикс*
Аноним 10/01/21 Вск 15:33:20 #27 №1906495 
>>1906480
Это да, названия отбитые. Тут уже вопросы к дедушкам, какого хрена они не сделали жесткую размерность типов, а нахуевертили черти что.
Аноним 10/01/21 Вск 18:15:14 #28 №1906695 
>>1906495
>какого хрена они не сделали жесткую размерность типов
Мультиплатформенный язык программирования. У разного железа разные размерности.
А растоговно, как и любая скриптопараша, работает само в себе, в своем манямирке, безотносительно железа, поэтому там и можно сделать одно фиксированное навсегда и навезде.
Аноним 10/01/21 Вск 18:26:39 #29 №1906706 
>>1906695
Все всегда можно сделать фиксированным. Вопрос в том, как оно будет адресоваться и сколько инструкций потребует для выполнения.
Аноним 10/01/21 Вск 18:31:04 #30 №1906712 
>>1906695
Хочешь сказать логично из 8 16 32 64 битных репрезентаций сделать не 4 точных типа, а 5 где два из них будут иметь одну размерность на стыке и не будет очевидно до проверки, где это происходит? В стиле либо int = long, либо long = long long. У C просто плохая историческая практика закрепилась из-за того что все добавляли постепенно как тот же long long в C99 и по-разному определяли типы постепенно поднимая размерности. Вне этого подхода сейчас на любом железе будут и 8 16 32 64 битные варианты хранения чисел, кроме совсем экзотического legacy.
Аноним 10/01/21 Вск 18:38:15 #31 №1906721 
>>1906712
А еще бывает short = int. Тоже прекрасно.
Аноним 10/01/21 Вск 18:44:51 #32 №1906728 
>>1906712
Людям не нужна разрядность. Людям нужен тип целое число. Например количество аргументов в строке, количество строчек в меню.
Разрядность нужна единицам байтоебов с хитрыми битовыми алгоритмами.
Аноним 10/01/21 Вск 18:49:27 #33 №1906733 
>>1906728
Людям надо знать, сколько в их целое число поместится. А то можно сделать int, а окажется, что он размером в два байта и хопа - переполнение.
Аноним 10/01/21 Вск 18:52:47 #34 №1906738 
>>1906733
int_least_32_t
Аноним 10/01/21 Вск 18:52:47 #35 №1906739 
>>1906733
Вот когда окажется что тебе нужно большое целое, тогда ты возьмешь long.
Аноним 10/01/21 Вск 18:54:43 #36 №1906740 
>>1906738
Ну и опять мы возвращаемся к тому, что нужно указание размерности.

>>1906739
Который может быть равен int. Отлично.
Аноним 10/01/21 Вск 23:39:58 #37 №1906938 
>>1906293
Пасиба, не знал о такой переменной окружения. А exec'ом как пользоваться не знаешь? Пишут, что system уязвим.
Аноним 11/01/21 Пнд 04:40:53 #38 №1907027 
>>1906712
int это размер соответствующий железу. На 32-битном проце будет 32 бита, и т.п. Это значит, что один и тот же код на любом железе будет аналогичный, т.е. код предсказуемый, ты знаешь какой код пишешь.

Если же int привязать к размеру (возьмем к примеру 32 бит), тогда на 16-битном процессоре, который не может оперировать 32 битными числами, сгенерится лишний код, чтобы выполнить это уже в два прохода, а на 64-битном проце, который всё равно оперирует только 64-битными числами, ты тупо просрешь в никуда половину размера.
И то и другое получается непредсказуемый говнокод. Такое говно никому не нужно.

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

Скриптомакака - как плохой начальник. Не знает и не понимает что делают подчиненные и срать хотел. Его волнует только результат "чтобы было сделано, ведь нужно отчитаться перед высшим начальством/заказчиком/инвесторами". А что там у работников, которые это реалдьно делают, емук позуй, какая у них нагрузка, и вообще. Он делает так, если сделано, хорошо, если не сделано, надо нанять других, кто может, а этих уволить.
Вот и у скриптомакак такое же отношение к компьютьеру. Если не работает, нужно выкинуть компьютер и заменить на новый, коиторый сможет.
Аноним 11/01/21 Пнд 04:50:50 #39 №1907029 
>>1907027
> Если не работает
Если не справляется
Аноним 11/01/21 Пнд 04:54:00 #40 №1907030 
download (1).jpeg
>>1907027
> int соответствует железу
> Си язык программирования железа
> ПУК СРЕНЬК АЛГОРИТМ CRC32 не работает потому что на этом железе int 16 битный
Аноним 11/01/21 Пнд 09:00:08 #41 №1907055 
>>1907030
>АЛГОРИТМ CRC32
???
Аноним 11/01/21 Пнд 09:42:32 #42 №1907060 
>>1907030
Что не так?
Шаблон порвало, ньюфак?
Аноним 11/01/21 Пнд 13:37:55 #43 №1907235 
>>1907027
Разговор не о том, что нефиксированные типы не нужны, а о том, что фиксированные очевидно нужно было делать из коробки, а не костылем сбоку.
Аноним 11/01/21 Пнд 14:10:53 #44 №1907259 
Размеры типов устанавливает производитель процессора, и естественно руководствуется исключительно прибылью, а не соответствием стандарту.
https://news.ycombinator.com/item?id=3112704
Аноним 11/01/21 Пнд 14:26:43 #45 №1907281 
>>1907235
В этом языке все реализуется костылем сбоку
Аноним 11/01/21 Пнд 15:39:46 #46 №1907443 
>>1907235
Пердопроблемы. В винде всю жизнь есть DWORD, BYTE и т.д. Пользуйся наздоровье, всё из коробки.
Аноним 11/01/21 Пнд 15:57:03 #47 №1907466 
>>1907443
Единственное, что в винде нормально сделали. И то названия всратые. DWORD это сколько, блядь? Раньше это было 16 бит, щас в MSDN написано, что это 32.
Аноним 11/01/21 Пнд 16:07:14 #48 №1907474 
>>1907466
Так, я обосрался. Это раньше слово было 16 бит, двойное 32, а сейчас слово 32, но DWORD==32 оставлен из соображений совместимости.
Аноним 11/01/21 Пнд 16:14:39 #49 №1907488 
>>1907466
>DWORD это сколько, блядь?
sizeof() в помощь. А вот пихать цифры в названия типов это плохая идея, слова лучше запоминаются и меньше путаются и мельтешат.
Аноним 11/01/21 Пнд 19:15:08 #50 №1907634 
>>1907488
u64 плохо запоминается?
Аноним 11/01/21 Пнд 20:20:47 #51 №1907756 
Как в мейкфайле прописать клинер, чтобы мейк не срал в stderr, типа файл хуйня.с не найдет в директории?
Аноним 11/01/21 Пнд 20:52:12 #52 №1907794 
>>1907756
rm -f
Аноним 12/01/21 Втр 01:14:39 #53 №1907959 
Можно ли вкатитьсы в си без корочки? Что "учи язык" - это понятно. Но си ж низкоуровневый, нужно трогать штуки, опасно близкие к фатальной ошибке. Дипломированное знание устройства компа обязательно или шансы есть? Подводные? Истории успехов?
Аноним 12/01/21 Втр 02:08:09 #54 №1907978 
>>1907959
Можно запросто, в 80-е 12-летние песдюки вкатывались даже в ассемблер - такие потом игры писали на продажу. Читай книжки, их для начала достаточно.

Что касается подводных.

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

Далее, язык Си ненавидит людей и ищет любую возможность нам поднасрать. Мы называем это "неопределенное поведение", "undefined behavior", или просто "UB". На примере. Допустим, ты пишешь a=b+с, и результат не помещается в a. В нормальном языке - Жабе - происходит переполнение и у тебя в a просто неправильный, но ожидаемый результат. Си не таков: компилятор считает, что ты обязан быть богом программирования, и UB в твоём коде означает лишь, что этот код просто никогда не должен исполняться. И он запросто может взять и убрать из итоговой программы огромную простыню кода, потому что в ней содержится это самое UB. А ты потом ищи, где в программе из сотен тысяч строк спряталась неочевидная лажа.

Последнее - в чистом виде на Си новые проекты уже практически не встречаются. Практически весь код на Си - старьё типа nginx или linux, где и без тебя всё збс. Причин писать на нём что-то новое очень мало. Даже микроконтроллеры с 1КБ памяти на борту уже, бывает, поддерживают C++. Поэтому сколько бы ты Си не задрачивал, зарплату это тебе не прибавит.
Аноним 12/01/21 Втр 02:26:34 #55 №1907988 
>>1907978
Я сходу могу назвать новый проект на сишке - janus-gateway. Как раз щас с ним разбираюсь.

На самом деле сишники охуенно востребованы. С оговоркой: сишные боги. Крупные компании используют сишку. Либо патчат ядра, либо пилят какие-то свои нахлобучки для сетей, или что-то еще подобное.

А еще это огромный запас существующего кода и вылизанные быстрые библиотеки. Когда мне нужно было написать очень быстрый видеосервер, я его нахуярил за пару месяцев на сишке с использованием libevent для веб-части. Разумеется, он рвет по скорости все существующие поделия.

>>1907959
Я в свое время вкатился в программирования, изучая сишку, пока был школием. Потом активно изучал питон и сишку подзабросил. Однако опыт разработки на питоне был полезен, когда я вернулся в сишку, потому что в сишке как нигде необходимо хорошо уметь в проектирование, иначе у тебя получится кривое падучее говно. Ну и еще всякие штуки типа параллелизма на питоне несколько проще изучать в силу наличия большого количества высокоуровневых абстракций.

Но вообще, ящитаю, одна сишка с высокой долей вероятности будет бесполезна, если только ты не ядерщик или эмбеддер. Вероятнее всего тебе потребуется знать еще два-три языка. На скриптухе или высокоуровневом писать бизнес-логику, на сишке - критичные к производительности вещи.
Аноним 12/01/21 Втр 02:42:02 #56 №1907994 
>>1907978
>Допустим, ты пишешь a=b+с, и результат не помещается в a. В нормальном языке - Жабе - происходит переполнение и у тебя в a просто неправильный, но ожидаемый результат. Си не таков: компилятор считает, что ты обязан быть богом программирования, и UB в твоём коде означает лишь, что этот код просто никогда не должен исполняться. И он запросто может взять и убрать из итоговой программы огромную простыню кода, потому что в ней содержится это самое UB.
По-моему ты гонишь, не может компилятор в таком случае выкинуть код. UB значит, что результат может быть любым, условно ты можешь получить число по модулю, а можешь 0.
Но это скорее про случаи m[x++] = m[x++] + n[x++]. Просто вот так не надо писать и всё, одни какие-то подобные случаи прописаны в стандартах, другие нет.

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

>Причин писать на нём что-то новое очень мало.
Тут ты тоже не прав, поскольку Си это один из основных языков для расширений, а плюсы тут плохо стыкуются, и реально много пишут на Си, без плюсов.
Аноним 12/01/21 Втр 04:59:31 #57 №1908040 
>>1907994
Это местный форсер, который срет примером со сложением повсюду. В компиляторах есть флаги чтобы отлавливать целочисленные переполнения, в стандарте это UB потому что на разных аппаратных платформах это работает по разному, а сишка, в отличие от джавы, должна работать везде.
Аноним 12/01/21 Втр 10:01:00 #58 №1908086 
Почему вылетает ошибка сегментрования?

char ar[ROWS][COLS] = .....
char (звезда)ptrs[ROWS]

ptrs[0] = &ar[0][0]
Аноним 12/01/21 Втр 10:05:55 #59 №1908088 
>>1908086
Ложная тревога, вывод был по строкам.
Аноним 12/01/21 Втр 10:07:56 #60 №1908091 
>>1908040
Ты описываешь implementation defined, а не UB. Это явления другой категории.
При UB компилятор действительно может убирать инструкции. Условный пример, ты делаешь какое то UB, а потом пишешь if(cond) {...} компилятор волен полностью выкинуть этот код, потому что по его мнению cond никогда не выполнится, потому что считается что UB в программе отсутствуют.
Аноним 12/01/21 Втр 10:13:02 #61 №1908097 
Я что-то не могу додуматься, почему так не работает ?

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

void FillPtr(int arr, int n)
{
arr = (int
)malloc(n sizeof(int));
for (int i = 0; i < n; i++)
{
arr = (int)malloc(n sizeof(int));
}
}

int main()
{
int arr;
int n;
scanf_s("%d", &n);
FillPtr(arr, n);
}
Аноним 12/01/21 Втр 10:16:55 #62 №1908101 
>>1908097
Найс код скопировался конечно
Аноним 12/01/21 Втр 10:18:25 #63 №1908102 
>>1908097
А зачем ты 1 раз и потом еще n раз малочишь арр?
Аноним 12/01/21 Втр 10:20:38 #64 №1908104 
>>1908101
А, ну перезаливай.

[code lang="C"]
#include <stdio.h>

int main()
{
\t printf("test\n");
}
[/code]
Аноним 12/01/21 Втр 10:23:47 #65 №1908107 
>>1908104
Найс, поставил эту вашу макабукоду.
Аноним 12/01/21 Втр 10:31:12 #66 №1908116 
>>1908097

#include <stdio.h>
#include <malloc.h>

void FillPtr(int arr, int n)
{
arr = (int
)malloc(n sizeof(int));
for(int i = 0 ; i < n; i++)
{
arr = (int)malloc(n sizeof(int));
}
}

int main()
{
int arr;
int n;
scanf_s("%d", &n);
FillPtr(arr, n);
}
Аноним 12/01/21 Втр 10:31:40 #67 №1908117 
>>1908086
А теперь собственно ошибка вылезает на этом моменте

for(i = 1;i < rows;i++)
{
if(ar[0] < (звезда)ptrs[i-1])
{
ptrs[i-1] = &ar[0];
ptrs = &ar[i-1][0];
}
if(ar[0] > (звезда)ptrs[i-1])
continue;
}
Аноним 12/01/21 Втр 10:31:50 #68 №1908118 
>>1908116
Да снова нормально не скопировалось
Аноним 12/01/21 Втр 10:49:48 #69 №1908119 
>>1908117
Короче ебал его рот, вот pastebin, проблема в цикле, внутри функции

https://pastebin.com/MNku6ski
Аноним 12/01/21 Втр 11:09:10 #70 №1908125 
>>1908119
А сама цель:

указатель 0 = &элемент обычного двумерного массива 0 0
Как пример:
Обычный массив: c b a d f
Массив указателей: 0 1 2 34
if(b < 0) в данном случае меньше
{
0 = &b;
1 = &c;
}
Аноним 12/01/21 Втр 12:04:33 #71 №1908146 
>>1908125
То есть сортировка строк из двумерного массива в алфавитном порядке без изменения исходного массива.
Аноним 12/01/21 Втр 12:49:08 #72 №1908173 
Ты бы лабу хоть отформатировал.
Аноним 12/01/21 Втр 15:58:18 #73 №1908303 
>>1907988
> Я сходу могу назвать новый проект на сишке - janus-gateway. Как раз щас с ним разбираюсь.
Ну да, писать на Сишке можно и сейчас, но нахуя? Этот проект по описанию просто идеален для Go или Rust, а они, поди, решили, что без языка 50-летней давности им ощущения не те.

> На самом деле сишники охуенно востребованы. С оговоркой: сишные боги.
Может где и востребованы, а в наших ебенях (ДС, то есть) сишный мидл получает 70к, а гошный - 140, при гораздо менее мозгоебной и более перспективной работе последнего.

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

> По-моему ты гонишь, не может компилятор в таком случае выкинуть код. UB значит, что результат может быть любым, условно ты можешь получить число по модулю, а можешь 0.
Нет, не гоню. Сам посмотри вот эту статью: https://dspace.mit.edu/bitstream/handle/1721.1/86949/Kaashoek_Undefined%20behavior.pdf - суть в том, что Си (а с ним и Си++) может удалить вообще весь код, который сам по себе может привести к UB. В том числе проверки, этот UB предотвращающие! Учитывая, что в стандарте Си UB упоминается больше 500 раз, язык этот стоит воспринимать как язык ковбоев, ищущих острых ощущений в области седалища.

>>1908040
Ага, а вот и ковбой Горбатой горы подоспел. Я тебе напомню, что платформы, в которых числа не представлены в виде two's complement, устарели ещё до твоего рождения, и с тех пор весь дрочь на оптимизацию при помощи UB идёт строго в убыток. Но ты-то на Си не пишешь, а только пиздишь, так что убеждать тебя в чем-то бесперспективно. Пару раз проведешь неделю овертаймов в поиске ебанутых UB - поумнеешь.

>>1908091
Дело-то в том, что в Си переполнения действительно UB. Вот пидорок выше правильно пишет, что есть в компиляторах флаги, переводящие некоторые UB в implementation defined. В этом и дело - ты приличный человек и предполагаешь, что и Си проектировали приличные люди. А они уёбки, понатыкавшие в языке сотни ждущих своего часа мин. И всё ради 10% производительности в 10% микробенчмарков. Казалось бы, студенческого уровня косяк - ради пары процентов скорости сломать программу - а оказывается, там целый комитет старых гондонов сидит, стандарты пишет.
Аноним 12/01/21 Втр 16:32:25 #74 №1908317 
>>1908303
Хуя тебе печет от сишки
Аноним 12/01/21 Втр 17:05:18 #75 №1908330 
>>1908303
> Этот проект по описанию просто идеален для Go
Сборка мусора вызовет непредсказуемые задержки в передаче видео. Я хоть и обеими руками за гошечку для микросервисов, но тут она явно не к месту. Для своего сервера я выбрал сишку именно по этой причине.

> Rust
Уже лучше, но слишком сырой слишком для продакшна как по мне.

> Может где и востребованы, а в наших ебенях (ДС, то есть) сишный мидл получает 70к
Я же написал: сишные боги. В яндексе/мейле/етц топовый сишник стартует с 200k и идет дальше. Это я тебе как экс-яндексоид говорю.
Аноним 12/01/21 Втр 17:36:51 #76 №1908346 
>>1908330
Топовый пхпшник лол сука тоже с 200к стартует, только он вообще не ебет что такое память, потоки, процессы и так далее, тупо пишет дтохи, контроллеры, говносервисы да говновалидацию да в базу лазает.
Аноним 12/01/21 Втр 17:48:53 #77 №1908351 
>>1908346
Сишку стоит изучить только ради того, чтобы таким тупым говном не заниматься
Аноним 12/01/21 Втр 17:52:56 #78 №1908353 
>>1908351
Кому что, многим ебать байты не уперлось, а вот писать бизнес логику на пыхе норм. Совершенно разные задачи.
Аноним 12/01/21 Втр 18:08:09 #79 №1908379 
>>1908353
Очевидно что этим людям нужно сидеть в пхп треде, а не расказывать нам как им неинтересна сишка
Аноним 12/01/21 Втр 18:13:07 #80 №1908386 
Говнопрогер на пыхе решил изучить итерналы своего языка и понял, что зенд енджайн написан на сишке. Бля, поцоны, а реально на си работу найти? Меня заебала уже эта пыха, хоть вешайся...
Аноним 12/01/21 Втр 18:28:45 #81 №1908416 
>>1908379
Так речь вообще о другом шла.
Аноним 12/01/21 Втр 18:34:54 #82 №1908427 
>>1908346
Я ничего не знаю о рынке пхпшников, но мне кажется что топовый должен как раз знать сишку, чтобы фиксить ядро этого говна. Имхо, за пхп можно получать столько только если удачно примазаться на старте и сидеть сеньером в техкомитете, либо работая на западного барина. Кто вообще наймет пхпшника-онли с улицы за что-то большее 100к?
Аноним 12/01/21 Втр 18:42:29 #83 №1908436 
>>1908427
> Кто вообще наймет пхпшника-онли с улицы за что-то большее 100к?
Любая крупная компания у которой есть бэк на пыхе?
Аноним 12/01/21 Втр 19:15:34 #84 №1908470 
>>1908436
Не, ты не понял мой вопрос. Допустим, в компании есть бек на пыхе. Зачем компании нанимать пыхомакаку за зарплату больше миски риса, если кроме пыха она ничего не умеет?

В яндексе есть racktables, который написан на пыхе. Соответственно, есть несколько человек, которые его поддерживают. Так вот у них у всех кроме пыха еще пяток языков в запасе, и пых далеко не основной. Зарплата соответствующая.
Аноним 12/01/21 Втр 19:20:32 #85 №1908471 
>>1908470
Ну а нахуй компании, у которой кроме пыхи и гошки на бэке нихуя нет, нанимать такого спеца?
Аноним 12/01/21 Втр 19:22:56 #86 №1908475 
>>1908470
> Зачем компании нанимать пыхомакаку за зарплату больше миски риса
Потому что нормальный бэкендер не пойдет работать за миску риса.
> если кроме пыха она ничего не умеет?
А что он должен уметь еще? Ну само собой он может в БД, брокеры, кеши, куберы и прочее, ведь он бэкенд разработчик. Зачем ему знать 5 языков? каждый одинаково хуево
У вас сишников своя реальность где 200к деньжища?
Аноним 12/01/21 Втр 19:26:59 #87 №1908481 
>>1908475
Нормальный бекендер будет знать не только пых.

> У вас сишников своя реальность где 200к деньжища?
Я тебе просто пример привел. Сишник, работающий на западного барина, поднимает гораздо больше. Но таких сишников нужно ограниченное количество.
Аноним 12/01/21 Втр 19:29:05 #88 №1908482 
>>1908481
Поясни за нормального бэкендера, мне аж интересно стало, лол.

мимопроходил
Аноним 12/01/21 Втр 19:30:36 #89 №1908486 
>>1908481
> Нормальный бекендер будет знать не только пых.
Ну будет знать пыху + го или пыху + питон/ноду, зачем ему 5 языков?
Или SQL, HTML и прочее тоже идет в счет?
> Сишник, работающий на западного барина, поднимает гораздо больше.
Кто угодно получает больше на западном рынке.
Аноним 12/01/21 Втр 19:35:36 #90 №1908490 
>>1908482
Ща тебе нонейм с двача пояснит, что твой опыт не опыт, а сам ты сисадмин, если не знаешь... делаем ставки чего. Я бы поставил на кложу/элексир. Или раст.
Аноним 12/01/21 Втр 19:41:49 #91 №1908495 
>>1908490
Примерно это и ожидал, читаешь мои мысли. Он бы меня сразу в еникейщики определил
Аноним 12/01/21 Втр 19:48:12 #92 №1908502 
>>1908486
>>1908482
Господа, чтобы сразу не было ко мне претензий. Я сужу с позиции большого тырпрайза, поскольку работал в основном именно там, пока не ушел на вольные хлеба.

Ситуаций может быть много. Первая - когда сидит команда и пилит не конкретный сервис, а инфраструктуру. Поскольку опенсорс в чистом виде обычно слабо подходит для использования, поэтом его допиливают и поддерживают по месту. Один сервис на пхп, другой на питоне, третий - на гошечке, а сбоку крутится какой-нибудь четвертый, на ноде. Потом оказывается, что что-нибудь не справляется с нагрузкой и это кусками переписывается на си или плюсах. Как правило, все члены команды знают все перечисленные языки. Плюс, некоторые являются адептами чего-нибудь экзотического, типа M4. SQL и прочее за языки не считается, это должно быть само собой разумеющееся.

Опция два. Сидят ядерщики и пишут какие-то ядерные модули на сях. Стоят дорого.

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

Что до моего личного определения "нормального бекендера" - это человек, который не только может что-то писать на каком-то языке, но понимает еще и тонкости оптимизации, сеть, ось и умеет в архитектуру. При необходимости может пойти и попатчить ядро или любой опенсорс, чтобы решить свою локальную проблему.
Аноним 12/01/21 Втр 19:53:07 #93 №1908510 
>>1908495
Да ну бросьте оба. Я же не фанбой отбитый. Просто пересказываю то, что видел сам. Просто если чел не может докопаться до глубинной проблемы, связанной с интерпретатором того же пыха, то что он будет делать? Заведет тикет на гитхабе что ли? Будет по форумам ходить?

Проблемы, которые приходится решать в больших проектах, обычно относятся к классу "я погуглил, но нашел только свой собственный вопрос на SO".

Я не говорю, что PHP+SQL+JS-онли ребята не нужны. Нужны, конечно. Просто получают они меньше чем тот класс, который я привел в первой опции.
Аноним 12/01/21 Втр 20:01:37 #94 №1908520 
>>1908510
> Просто если чел не может докопаться до глубинной проблемы, связанной с интерпретатором того же пыха
Тут вообще орнул, как часто ты лезешь чинить интерпретатор? Так и вижу как e-commerce или банк пишет патчи для интерпретатора пыхи, там большинство кодеров пишут на жабе или пхп и никогда подобным не занимались, а зп могут быть вполне норм.
> Я не говорю, что PHP+SQL+JS-онли ребята не нужны. Нужны, конечно. Просто получают они меньше чем тот класс, который я привел в первой опции.
Ну 200к они легко получают, про работу на запад за доллары я вообще молчу.
Аноним 12/01/21 Втр 20:07:12 #95 №1908526 
>>1908520
> как часто ты лезешь чинить интерпретатор?
PHP не чинил ни разу, так как не пишу на нем. Раза три чинил питон, и за последний год нашел несколько багов в ядре, которые аффектят юзерспейс. Один из них весьма древний.
Аноним 12/01/21 Втр 20:09:03 #96 №1908529 
>>1908510
Ты наглухо ебанутый и оторванный от реальности как будто, если 200к для тебя деньги, то их получают, 300к тимлиды тоже получают, тупо за крудошлепские сервисы с пыхой да симфони, да там кафка, кубернетес и прочая хуйня, но сам язык там пхп и другой язык там не нужен, никакой интерпретатор там никто не дописывает. На джаваскрипте так же, никто лезть в v8 не будет переписывать, а пишут бэк там вчерашние формошлепы фронтендеры, еще хуже чем на пхп в плане архитектуры.

Джава мир вообще в себя погружен, если в пхп мире еще го стал популярен где пыха говно, так джава в принципе в вебе все может делать кроме ебанутого числодробления наверное. Джава тимлид в крупной компании в ДС получает за свой говноспринг 300-400к.

На запад же можно как бы и вордпресс говно за 3к баксов в мес делать, можно и за 7к в мес говноконсумеры на ноде к кафке приделывать. Без какого либо там си, FFI, JNI и так далее

Аноним 12/01/21 Втр 20:12:57 #97 №1908532 
>>1908526
>Раза три чинил питон, и за последний год нашел несколько багов в ядре, которые аффектят юзерспейс
У меня есть знакомый питонист, не знает как в питоне gc работает, получает 200к.
Аноним 12/01/21 Втр 20:14:33 #98 №1908535 
>>1908529
Глаза разуй, еблан. Я тебе сказал, что СИШНИК получат ОТ 200к. Поскольку сумма обсуждается в рублях, то речь, очевидно, идет о рашке.
Аноним 12/01/21 Втр 20:16:30 #99 №1908536 
>>1908532
Ну, всякое бывает. Речь изначально шла о том, что сишка дает преимущества в работае и позволяет поднять себе ценник.
Аноним 12/01/21 Втр 20:17:35 #100 №1908539 
>>1908535
Так ты же про толкового и в крупной компании, пока таким станешь уже седым станешь.
Аноним 12/01/21 Втр 20:20:05 #101 №1908541 
>>1908536
>и позволяет поднять себе ценник.
Очень сомнительно, если проект байтоебский то да. А когда ты пишешь условный маркетплейс, банкинг или агрегатор какой нибудь хуйни, то это вообще непонятно зачем нужно.
Аноним 12/01/21 Втр 20:21:22 #102 №1908542 
>>1908539
Ну почему же. Знаю челика, ему 35. Работает в яндексе, в основном хуярит ядро, по мелочи пишет на питоне и гошечке. Стоит дорого.

Толковость появляется от опыта работы. Если годами json`ы перекладывать, то понятно, можно до седых мудей таким не стать. Если вписаться в технически сложный проект и не сидеть в нем до скончания времен, то опыт и наберется.
Аноним 12/01/21 Втр 20:22:59 #103 №1908545 
>>1908541
А тут уже вопрос, чем именно ты хочешь заниматься. Если маркетплейсами - то да, необходимость почти нулевая. А если какой-нибудь сверхвысокий асинхронный хайлоад (r) (c) (tm), то там это нужно. Деньги уже другие, разумеется. Полмиллиона и выше.
Аноним 12/01/21 Втр 20:25:10 #104 №1908548 
>>1908545
А уже 500к+, ставки повышаются.
Аноним 12/01/21 Втр 20:26:00 #105 №1908551 
>>1908548
Долбиться в глаза прекращай, тебе говорят.
Аноним 12/01/21 Втр 20:28:03 #106 №1908554 
>>1908551
Чел ты поехавший.
Аноним 12/01/21 Втр 20:30:29 #107 №1908555 
>>1908554
Ты скозал, манька?
Аноним 12/01/21 Втр 20:33:00 #108 №1908557 
Ну и к чему вы в итоге пришли? Нахуй было спорить, если вы кроме своего мнения других не приемлите..

пойду дальше другие срачи посмотрю
Аноним 12/01/21 Втр 21:48:04 #109 №1908637 
как подключить библиотеку которую я скачал и скомпилировать?
хочу подключить <xxxxxx> вот так через <>

как в codeblocks или в терминале єто делать?
Аноним 13/01/21 Срд 10:09:03 #110 №1908890 
>>1908502
>Что до моего личного определения "нормального бекендера" - это человек, который не только может что-то писать на каком-то языке, но понимает еще и тонкости оптимизации, сеть, ось и умеет в архитектуру. При необходимости может пойти и попатчить ядро или любой опенсорс, чтобы решить свою локальную проблему.
Ты таких ИРЛ вообще встречал хоть раз?
Аноним 13/01/21 Срд 12:51:14 #111 №1908948 
>>1908890
Да
Причем без шуток. Знакомый погромист и либы чужие патчил, когда находил дефекты в них, и архитектурой занимался, оптимизацией производительности, а сам по себе мастер по написанию кода для бэкэнда.
Аноним 13/01/21 Срд 15:51:24 #112 №1909066 
>>1908890
Да. Работал с такими челиками в разных командах. Как правило после рашкинских компаний они перекатываются куда-то в более интересные места. Например, челик со знанием сей, плюсов, питона и тонкостей сетей (плюс цисок, жуниперов и хуевеев) укатился в спейсикс. Другой челик с таким же набором - в фейсбук. Родственник мой пилил распределенные системы. Ну и я тоже, т.к. работал в упомянутых командах. Я в сетях особо не разбираюсь, но у меня прокачан скилл проектирования архитектуры и распределенных систем. Укатился в свой софтово-железячный стартап.
Аноним 13/01/21 Срд 18:07:44 #113 №1909171 
>>1909066
>в свой пиздобольский угол
пофиксил, не благодари!
Аноним 13/01/21 Срд 18:13:45 #114 №1909175 
>>1909171
Если ты - дно, то не думай, что тут все такие же, манька.
Аноним 13/01/21 Срд 18:46:55 #115 №1909211 
>>1909175
не плакай, стартапер-архитектор-двачер
Аноним 13/01/21 Срд 19:01:29 #116 №1909224 
>>1909211
плакаешь тут ты
Аноним 13/01/21 Срд 19:17:07 #117 №1909239 
image.png
>>1909211
В чем проблема, маня?
Аноним 13/01/21 Срд 19:24:08 #118 №1909257 
>>1909224
>>1909239

не мороси,
лучше подучи стандарты си!
Аноним 13/01/21 Срд 21:52:19 #119 №1909388 
Знатоки, что тут происходит?
https://pastebin.com/FnRrs2tn
Аноним 14/01/21 Чтв 02:21:39 #120 №1909600 
>>1909388
Перемешивает биты в числе особым образом, чтобы вышло число с симметрией относительно центра? Хуй знает, запутанный обмен, лень разбираться больше 5 минут, такое прямо в IOCCC отправлять после должной доработки, лол.
Аноним 14/01/21 Чтв 15:30:04 #121 №1909873 
Как внутри printf() вывести еще функцию чтобы получилось что-то вида printf(fn(), fn2(), fn3())?
Аноним 14/01/21 Чтв 15:49:12 #122 №1909890 
>>1909873
Разобрался
Аноним 14/01/21 Чтв 15:56:11 #123 №1909896 
Чем вы быстрее плюсов? Зачем вы вообще нужны?
Аноним 14/01/21 Чтв 16:59:10 #124 №1909930 
>>1908097

Потому что хуйня какая-то. Зачем ты малок засунул в фор, что ты пытаешся сделать?
Аноним 14/01/21 Чтв 18:34:15 #125 №1910016 
>>1907027
Мне кажется, что такой подход был уместен, когда были архитектуры условно 16-битные и 15-битные, 32-битные и 27-битные, двоичные и экспериментальные троичные.
Но когда на ПК int 32-битный, а на ардуине 16-битный и алгоритм перестаёт работать, то это плохо.
Аноним 14/01/21 Чтв 19:45:27 #126 №1910080 
image.png
>>1909896
Аноним 15/01/21 Птн 04:27:42 #127 №1910423 
Безымянный-файл-изображения-(25)-5-b-f644.jpg
Если в буфер размером K прочитать поток размером N, то N-K байт останутся в стдин (например по exit() вылезут в консолечке).
Аноним 15/01/21 Птн 05:33:42 #128 №1910432 
42oh6fa3crq21.jpg
Capture.PNG
>>1910016
Да, такой подход не уместен, он единственно возможен, ибо других не может быть.
Посмотри на пики. Есть два робота, большой и маленький, и язык программирования роботов. Ты пишешь команду:
>сделать_шаг();
В результате, оба робота должны одинаково сделать шаг, и похуй что первый робот выполнит поставленную задачу - раздавить вон того тупого еблана вроде тебя слева, а второй шагнет на пару сантиметров и ничего не добьется. Это нормально, так и должно быть. А вот игнорировать спецификации роботов и хотеть чтобы любой робот одной командой выполнял одинаковую задачу, т.е. одной командой первый робот просто делает шаг, а второй разбегается, подпрыгивает, достает нож и втыкает его в шею цели, т.к. весом убить еблана не может, зато задача выполнена. Такая поебень - не программирование, и никому не нужна, кроме тупых ебланов, которых надо вычистить как вредные органические отходы, заражающие планету.
Аноним 15/01/21 Птн 17:10:49 #129 №1910808 
>>1910432
Бред. Современный мир омонополен несколькими крупными производителями микроэлектроники и все они двоичные, а их регистры в большинстве своём кратны восьми и являются степенью двойки. И очевидно, что каждое 32-битное число, когда к нему добавляется 1 должно либо увеличено на единицу, либо переполнено и обнулено. А когда один и тот же тип ведёт себя как сумасшедший на разных машинах, это очень плохо. Представь, написал ты машине variable++, а она вместо того, чтобы увеличить значения на единицу, вызывает rm -rf /*. Нарушаются все принципы, которые только можно.
Зачем вообще в таком случае программировать на сижке, если можно сразу на ассемблере? Там и изучения спецификации машин, и библиотеки можно оптимизировать под готовые инструкции. В одной машине не будет инструкции для синуса и придётся функцией посчитать. А в другой будет, но значение плюс-минус 0.1, ещё и рандомное каждый раз, потому что считается через аналоговую электронику. Вот будет веселье программисту! Все графические и физические движки будет переписывать на ассемблер. Настоящее программирование, как положено настоящему мужику!
Я не мужик, так что я такое не выбираю. Мои алгоритмы должны работать одинаково на всех машинах. Чтобы один и тот же код можно было запустить хоть на ПК, хоть на микроконтроллере и он исполнился правильно.
И, даже, на разных типах, для чего в современных языках программирования есть дженерики и темплейты (сишные макросы до них не дорастут).
То, что ты описал не нужно нормальным людям, но я не считаю, что вас надо уничтожать. У вас есть право на своё мнение и вы можете заниматься байтоёбством сколько хотите.

Хотя, действительно, есть ряд задач, где можно типы сделать не совсем ясными. Например, флоат для 3D-графики. Не всегда важно, будет single или double считаться в шейдере, потому что в большинстве программ отображение графики будет почти одинаковым. Ну, может цвета пикселей или их расположение будет немного другим. В таком случае уместно вводить отдельный тип, который может себя вести как халф, сингл или дабл.
Аноним 15/01/21 Птн 17:35:18 #130 №1910843 
>>1910808
>Бред
Ридинг компрехенсион скрипто-дебила. Катись обратно в свои скриптотреды, там давно типы все одинаковые. Зачем сюда, в программирование лезешь? А понимаешь, что выродок, подсознательно понимаешь, что тут умные люди, не чета таким как ты, вот и пытаешься примазаться. Но это бесполезно, говно не умеет ничего кроме как срать, лучше от этого не станешь.

>Мои алгоритмы
Си - язык программирования железа, а не алгоритмическая параша для первоклашек и сходных с ними по интеллекту дегенератов.
Езе раз: СИ - НЕ АЛГОРИТМИЧЕСКАЯ ПАРАША. Ферштейн?
Аноним 15/01/21 Птн 18:44:55 #131 №1910929 
>>1910808
> Бред. Современный мир омонополен несколькими крупными производителями микроэлектроники и все они двоичные, а их регистры в большинстве своём кратны восьми и являются степенью двойки. И очевидно, что каждое 32-битное число, когда к нему добавляется 1 должно либо увеличено на единицу, либо переполнено и обнулено. А когда один и тот же тип ведёт себя как сумасшедший на разных машинах, это очень плохо.
А прям много таких машин где int ведёт себя как сумасшедший?
> Представь, написал ты машине variable++, а она вместо того, чтобы увеличить значения на единицу, вызывает rm -rf /*. Нарушаются все принципы, которые только можно.
Поехавший пример однако.
> Зачем вообще в таком случае программировать на сижке, если можно сразу на ассемблере?
Лучше сразу на сигаре.
> Там и изучения спецификации машин, и библиотеки можно оптимизировать под готовые инструкции. В одной машине не будет инструкции для синуса и придётся функцией посчитать. А в другой будет, но значение плюс-минус 0.1, ещё и рандомное каждый раз, потому что считается через аналоговую электронику. Вот будет веселье программисту! Все графические и физические движки будет переписывать на ассемблер. Настоящее программирование, как положено настоящему мужику!
Чтоб такой хуйни не было и пилят более комплексные языки программирования.
А если какая-то функция на железке неадекватная, и не ведёт себя так как на другом железе - ее выносят в specific функционал, и делают реализацию чтобы вело оно себя так как и везде.
> Я не мужик, так что я такое не выбираю. Мои алгоритмы должны работать одинаково на всех машинах. Чтобы один и тот же код можно было запустить хоть на ПК, хоть на микроконтроллере и он исполнился правильно.
Замечу ты это про предыдущий абзац, а там сказано тобой же про ассемблер. А где собственно Си тут?
> И, даже, на разных типах, для чего в современных языках программирования есть дженерики и темплейты (сишные макросы до них не дорастут).
Не понял к чему это тут.
> То, что ты описал не нужно нормальным людям, но я не считаю, что вас надо уничтожать. У вас есть право на своё мнение и вы можете заниматься байтоёбством сколько хотите.
Да ты поехавший. Привел в пример ассемблер. И рассказывает что мы какие-то не такие.
> Хотя, действительно, есть ряд задач, где можно типы сделать не совсем ясными. Например, флоат для 3D-графики. Не всегда важно, будет single или double считаться в шейдере, потому что в большинстве программ отображение графики будет почти одинаковым. Ну, может цвета пикселей или их расположение будет немного другим. В таком случае уместно вводить отдельный тип, который может себя вести как халф, сингл или дабл.
Вообще разница есть между float и double в графике. Как минимум в производительности, и в точности. Особенно когда считаешь геометрию. Или сраное сглаживание.
Аноним 15/01/21 Птн 19:13:29 #132 №1910959 
yoba.png
>>1910016
Тебе стандарт и традиция гарантируют для инта +-32767. Если ты знаешь, что в алгоритме нужен больший диапазон, не используй инт. И тогда не будет никакого "перестает работать".

Гораздо опасней существование в языке unsigned.
Аноним 16/01/21 Суб 06:40:50 #133 №1911480 
джава и оопе - некст абстракшен левл. всё.
Аноним 16/01/21 Суб 15:34:17 #134 №1911791 
Почему функция принимающая двумерный массив по сигнатуре может принять одномерный массив в качестве аргумента и и разместить его как первую строку?
Аноним 16/01/21 Суб 16:59:09 #135 №1911937 
>>1911791
В си нет двумерных массивов в полноценном смысле (например вида [ , ])
Так что по сути у тебя массив массивов.
Аноним 16/01/21 Суб 17:06:01 #136 №1911951 
image.png
>>1911937
Я знаю. Функция по сигнатуре принимает переменную хранящую указатель на указатель. Но поему-то в качестве аргумента можно просто прописать указатель на строку и он запишется в локальный массив указателей на указатели т.е в двумерный массив функции. По-моему это какая-то очень неочевидная хуйня.
Аноним 16/01/21 Суб 17:07:36 #137 №1911955 
image.png
>>1911951
переменную хранящую указатель на массив указателей
фикс
Аноним 16/01/21 Суб 17:16:09 #138 №1911971 
>>1911951
Короче в качестве аргумента был передан одномерный массив, но поему то он автоматически был записан в первую строку локального двумерного.
Аноним 16/01/21 Суб 18:41:18 #139 №1912041 
C помощь read как-то можно считать символы не передвигая при этом позицию в файле? То есть записало в строку, но при следующем read начинало бы с того-же места?
Аноним 17/01/21 Вск 02:29:47 #140 №1912357 
>>1910808
братишь, занимаешься графикой?
Аноним 17/01/21 Вск 02:33:22 #141 №1912359 
>>1910843
ты какой-то обиженка
есть железо, есть алгоритмы - в чем проблема? Одно без другого - как ручка без чернил (ну или чернила без ручки)
Нам как фронтендеры нужны с их красивыми сайтиками, или питонисты с их джанко и мл
так и хардварники с их управлением памятью, оптимизацией и прочим
выпей уже таблеток, а?
Аноним 17/01/21 Вск 02:34:16 #142 №1912361 
>>1910959
> Гораздо опасней существование в языке unsigned.
поясни плз
Аноним 17/01/21 Вск 03:58:07 #143 №1912386 
>>1912361
Скорее всего он имеет в виду, что при декременте оно не может уйти в отрицательные числа и вызовет где-нибудь переполнение.

Вообще было бы здорово иметь возможность отлавливать такое, как с делением на ноль.
Аноним 17/01/21 Вск 03:59:16 #144 №1912387 
>>1912041
fseek или lseek
Читать и возвращать позицию на количество прочитанных байт.
Аноним 17/01/21 Вск 05:44:36 #145 №1912424 
>>1912361
Поясняю: пикрил 1 - опасно; пикрил 2 - безопасно.

>>1912386
> было бы здорово иметь возможность отлавливать такое
Возможность есть, отлавливай наздоровье.
Аноним 17/01/21 Вск 06:32:41 #146 №1912433 
>>1912424
> Возможность есть, отлавливай наздоровье.
Это как?
Аноним 17/01/21 Вск 07:08:16 #147 №1912435 
А в каком случае оверфлоу может что-то там повредить, если конпелятор прежде чем декрементировать memx, кидает это в соотетствующий блок регистра?
И даже для машины subb, subd, subl и subq это разные инструкции, работающие с соотвествующим размером.
Аноним 17/01/21 Вск 10:40:09 #148 №1912471 
>>1912386
>Скорее всего он имеет в виду, что при декременте оно не может уйти в отрицательные числа и вызовет где-нибудь переполнение.
Ровным счётом та же проблема с signed.

ХЗ, давно не писал на Си, но вроде как хорошим тоном считается использовать int32_t/uint32_t
Аноним 17/01/21 Вск 11:57:06 #149 №1912492 
>>1911955
Не знаю как объяснить попроще, но это не массив указателей, там нет индирекции
https://nullprogram.com/blog/2016/10/27/
Аноним 17/01/21 Вск 12:24:00 #150 №1912502 
>>1912492
Без ассемблера возможно понять?
Аноним 17/01/21 Вск 12:39:30 #151 №1912505 
16034677706730.jpg
>>1912361
-1 > 2u
Аноним 17/01/21 Вск 12:54:14 #152 №1912515 
kKqHfJnYZs4-b-a110.jpg
БЛЯТЬ, поясните нюфаку чем всё-таки опасны эти ваши овер/андерфлоу? Я раньше думал, что соседние байтики и битики страдают, но как оказалось, это не так.
>>1912424
>Поясняю: пикрил 1 - опасно; пикрил 2 - безопасно.
И первое, и второе - опасно, если воткнуть в анус.
Аноним 17/01/21 Вск 13:06:01 #153 №1912528 
>>1912424
>Возможность есть, отлавливай наздоровье.
Это про interrupt_overflow?
Аноним 17/01/21 Вск 13:13:14 #154 №1912536 
kitty.jpeg
>>1912515
f(i) { if (i+1<0) puts("f"); }
g(i) { if (i<0) puts("g"); }
main()
{
f(0x7fffffff);
g(0x7fffffff+1);
}
Аноним 17/01/21 Вск 13:21:05 #155 №1912540 
>>1912536
f() и g() должны прокнуть. Что не так?
Аноним 17/01/21 Вск 13:24:18 #156 №1912547 
16034677706730.jpg
>>1912540
Печатает только g (GCC с оптимизацией или без).
Аноним 17/01/21 Вск 13:37:33 #157 №1912575 
nope.png
>>1912547
Аноним 17/01/21 Вск 14:51:19 #158 №1912710 
>>1912515
Тем что это UB (undefined behaviour) то есть компилятор может считать что ты написал некорректный код и выкинуть его или поменять на другой. Хуже того, вся программа считается UB.
Аноним 17/01/21 Вск 15:08:18 #159 №1912737 
>>1912710
>Тем что это UB (undefined behaviour)
А где здесь ЮБ? Если сегментация не нарушается, а переполнение только-только зажигает OF и сама память меняет значение с TYPE_MAX на TYPE_MIN (и наоборот). Я конечно понимаю, что такое посредственно может вызвать перезапись буффера (например записать 0х7ff байт вместо одного), но эта проблема вроде как отдельно решается.

>то есть компилятор может считать что ты написал некорректный код и выкинуть его или поменять на другой.

Это как? Конпелятор будет предугадывать или даже вычислять, что там случится в рантайме? Меня траллируют, да?
Аноним 17/01/21 Вск 15:32:25 #160 №1912783 
setjmp
Аноним 17/01/21 Вск 16:23:59 #161 №1912869 
>>1912737
UB в ящыке Си, никаких О флагов в языке не существует. Это не ассемблер.
Аноним 17/01/21 Вск 20:03:02 #162 №1913222 
yoba.png
>>1912710
Конпелятор делает оптимизации, которые меняют поведение кода в случае переполнений.
Вот это
> if (i+1<0)
может заменить на
> if (i < -1)
сэкономив одну инструкцию.
Подставь maxint на место i. Первый иф будет истина, второй ложь.
Аноним 17/01/21 Вск 22:45:28 #163 №1913495 
Стикер
>>1913222
>if (i < -1)
То есть при -1 все ок?))))
Аноним 17/01/21 Вск 23:06:43 #164 №1913531 
>>1912433
Обыкновенно. Включи голову: int не отлавливает переполнение, значит что нужно сделать? Нуууу!? Конечно же написать свой manyaint который будет отлавливать. Ты программист или кто? Кто еще за тебя будет программировать твои маняхотелки, кроме тебя самого? Язык имеет все средства для реализации чего угодно, так что вперед и с песней.
Аноним 18/01/21 Пнд 08:53:09 #165 №1913856 
>>1913531
Бля, охуительная история. Я думал ты что-нибудь умное расскажешь, а ты предложил навернуть абстракцию поверх обычной переменной.
Аноним 18/01/21 Пнд 11:15:20 #166 №1913924 
Почему прога не робит? Я просто блять тупой и не понимаю, схуяли доступа на изменение массива нет?
Аноним 18/01/21 Пнд 13:25:06 #167 №1914002 
>>1913924
>>1913924
Не шарю за сихи ваши, мб потому что s продекларирована но проинициализирована?
Аноним 18/01/21 Пнд 13:56:57 #168 №1914022 
>>1913924
А что ты передаешь в функцию? "stroka", я угадал?
Аноним 18/01/21 Пнд 14:33:31 #169 №1914065 
>>1913924
https://ideone.com/iUFskp
А что не так собственно?
Аноним 18/01/21 Пнд 14:38:08 #170 №1914071 
>>1913856
>дайте мне абстракцию, мам
>ну на, держи
>бля, охуительные истории, абстракцию предлагают
С дефектами мышления в программировании делать нечего.
Аноним 18/01/21 Пнд 14:40:18 #171 №1914076 
>>1914022
Кстати да, есть вероятность что он передает внутрь строку указателем из .data, из-за этого ловит сегфолт.
Аноним 18/01/21 Пнд 17:26:27 #172 №1914207 
>>1914071
Где ты в моем сообщении увидел слово "абстракция", клоун?

> С дефектами мышления в программировании делать нечего

Вот именно, пиздуй из профессии. Мало ли что ты там увидишь в следующий раз в коде, вдруг тебе послание с нибиру мерещиться начнет.
Аноним 18/01/21 Пнд 17:34:32 #173 №1914220 
sshot-2021-01-18-17-33-42.png
>>1913924
Аноним 18/01/21 Пнд 18:45:36 #174 №1914341 
>>1914207
Дебил?
Аноним 18/01/21 Пнд 18:51:37 #175 №1914356 
>>1914220
компилятор поменяй
Аноним 18/01/21 Пнд 18:58:34 #176 №1914366 
>>1914341
Ну, дебилом бы я тебя не назвал. Просто не очень умный.
Аноним 18/01/21 Пнд 22:33:26 #177 №1914606 
>>1906345
Читай что такое динамическое выделение памяти, а конкретно calloc.
Аноним 19/01/21 Втр 17:46:05 #178 №1915393 
>>1913924
Stephen Prata, C Primer Plus
Chapter 11: Character Strings and String Functions
Досконально раздраконена тема, просто досконально. Прочитай и все вопросы про массивы/ссылки/строки отпадут начисто.
Аноним 19/01/21 Втр 17:48:22 #179 №1915401 
descent.jpg
Надеюсь здесь сидят шарящие анончики.
Вопрос тупой, и мне заранее стыдно, но не у кого спросить.
Смотрю на сорс моей любимой игрули детства:
https://github.com/videogamepreservation/descent
ГДЕ ТОЧКА ВХОДА?
Типа main.c или что-то такое?
Аноним 19/01/21 Втр 18:30:21 #180 №1915433 
>>1915393
Не отпадут.
передача одномерного массива в функцию с параметром двумерного-кун/тян
Аноним 19/01/21 Втр 19:10:07 #181 №1915492 
>>1915433
>передача одномерного массива в функцию с параметром двумерного-кун/тян
Шизоид?
Аноним 19/01/21 Втр 19:15:08 #182 №1915504 
>>1915492
>>1911951
https://github.com/sgreenlee/C-Primer-Plus-Exercises/blob/master/ch12/exercise09.c

Самое странное что всё прекрасно передаётся (одномерный массив в качестве двумерного в find_word).
Аноним 19/01/21 Втр 19:31:28 #183 №1915519 
>>1915401
MAIN/INFERNO.C если я не ошибаюсь
Аноним 19/01/21 Втр 19:43:40 #184 №1915528 
>>1915401


To build the executable, you should be able to just run maked1.bat.
Descentr.exe should be built in the main subdirectory.
Аноним 19/01/21 Втр 22:58:47 #185 №1915787 
sshot-2021-01-19-20-05-43.png
Для сишечки оказывается есть простенький вывод графики через эту библиотеку http://openbgi.sourceforge.net Можно даже игру небольшую накодить.
Аноним 19/01/21 Втр 23:08:56 #186 №1915795 
>>1915787
проц будешь юзать.
Аноним 19/01/21 Втр 23:16:18 #187 №1915801 
>>1915795
Да, вывод получается очень медленный, но зато кодить просто - для начального нубоуровня сойдет.
Аноним 20/01/21 Срд 00:28:15 #188 №1915865 
>>1915528
>Descentr.exe should be built in the main subdirectory.
Ну и нахуй мне экзешник? Я же про код спрашиваю.

>>1915519
Лол, точно
int main(int argc,char argv)
Аноним 20/01/21 Срд 03:25:35 #189 №1915962 
>>1915787
а mlx чем не угодил?
sageАноним 20/01/21 Срд 06:47:48 #190 №1916062 
>>1915962
Тем, что про него даже гугл не знает.
Аноним 20/01/21 Срд 12:13:58 #191 №1916151 
>>1916062
MiniLibX
Аноним 20/01/21 Срд 15:47:15 #192 №1916309 
>>1916151
>MiniLibX
Всегда удивляло, откуда берут такое васянское говнище (поддерживает даже BSD! ебать) без нормальной документации, сделанное на коленке даунами, которое даже скомпилироваться не может нормально?
Аноним 20/01/21 Срд 21:46:39 #193 №1916662 
>>1915401
>https://github.com/videogamepreservation/descent
Вот это говнокод, пиздец.
Анон, если хочешь хорошего кода, смотри в сторону движков iD Tech.
Аноним 22/01/21 Птн 00:04:31 #194 №1917661 
>>1916662
> Вот это говнокод, пиздец
Вся суть. Раньше писали крутые игры, а теперь пишут красивый код и дрочат на историю комитов, на тесты, на линтеры... что угодно, только бы не заниматься делом.
Аноним 22/01/21 Птн 09:28:54 #195 №1917847 
>>1917661
Можно писать красивый код и не дрочить на коммиты. Лично я обмазываюсь линтерами из параноидальных соображений.
Аноним 22/01/21 Птн 17:15:43 #196 №1918182 
sshot-2021-01-22-17-05-47 - snake.zip.png
>>1915787
Закодил змейку. Пипец сложновато. Ели кто хочет оценить уровень говнокода, то архив с бинарниками и исходниками прилагаю в картинке.
Аноним 22/01/21 Птн 18:23:27 #197 №1918229 
>>1918182
как это в картинке?
Аноним 22/01/21 Птн 18:30:58 #198 №1918236 
>>1918229
Ну типа как рар-жипег, только это зип-пнг.
Аноним 22/01/21 Птн 18:39:32 #199 №1918249 
>>1918236
а как ты так сделол
Аноним 22/01/21 Птн 18:53:53 #200 №1918255 
>>1918249
Раньше каритнку и архив склеивали просто вместе. Но сейчас хитрый Абу что то там нашатал и теперь его макаба вырезает все архивы у раржипегов. Сейчас надо разобраться в структуре формата джипег или пнг, покурить документацию, и встраивать архивы в подходящие для этого места внутри файла. Я так сделол.
Аноним 22/01/21 Птн 19:28:22 #201 №1918280 
>>1918255
Ах тыж вредоносный анон
Аноним 22/01/21 Птн 19:41:09 #202 №1918293 
15142286142860.png
>>1916309
>без нормальной документации
>скомпилироваться не может нормально
Так и пиши что не осилил
Аноним 22/01/21 Птн 19:46:31 #203 №1918300 
mcpp.PNG
Аноны, пиздец тупой реквест, но тем не менее.
Хочу Borland C/С++ IDE настроить на win10.
Какие варианты? Вроде нагуглил сборку от Раджеша Шрияпутры, но хуй я позволю этому говну ступить на мой пека.
Аноним 22/01/21 Птн 20:01:54 #204 №1918320 
2n9pt8.jpg
>>1918182
>graphics.h
Аноним 23/01/21 Суб 08:41:04 #205 №1918898 
Если возвращать объекты из сегмента данных или стэка, то энивей будет ЮБ? Следовательно возвращать можно только кучу?
Аноним 23/01/21 Суб 08:41:47 #206 №1918899 
>>1918293
Пиздос какие страшные куклы!
Аноним 23/01/21 Суб 12:43:25 #207 №1918966 
>>1918898
Что такое сегмент данных в Си?
Аноним 23/01/21 Суб 12:44:50 #208 №1918968 
>>1918898
Что почитать чтобы стать таким же умным как ты?
Аноним 23/01/21 Суб 12:52:45 #209 №1918973 
>>1918898
А вот в каком сегменте си размещает структуры?
sageАноним 23/01/21 Суб 16:56:34 #210 №1919191 
Подскажите, плез, как быстро заполнить поля структуры, указанной по линку?

https://pastebin.com/etpP4MdD

По одному очень долго и много.

heater_plates_t heaters;
heaters.plate[0].profile[0].id = 1; // например

Не пойму, как присобавить заполнение, как у массива структур:
temp_profile_t heater[] = { // массив структур
{0, "Profile 1", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
1, "Profile 2", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
2, "Profile 3", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
3, "Profile 4", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
4, "Profile 5", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}
},
{0, "Profile 1", true, {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},
1, "Profile 2", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
2, "Profile 3", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
3, "Profile 4", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
4, "Profile 5", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}
},
};
Аноним 23/01/21 Суб 16:58:50 #211 №1919194 
А тут кроме юмористов, кто-то ещё остался?
>>1918968
Ветхий Завет и Кернигана&Ритчи.
>>1918966
Всё что декларировано за пределами функций.
>>1918973
Где объявишь, там и разместит.
sageАноним 23/01/21 Суб 22:32:36 #212 №1919421 
>>1919191
(type){ initializer }, зовется compound literal.

> По одному очень долго и много.
Сделай функцию.

>>1918898
Возвращать нельзя только массивы, являющиеся автоматическими переменными. Т.е., которые лежат в стеке, и которые нельзя возвратить по значению из-за того, что в выражениях (в том числе и в return) массив деградирует до указателя. Например, если обернуть в структуру, то уже можно.

>>1919194
> кто-то ещё остался
Мне кажется, что тред себя исчерпал или вся борда?. Но кое-кто остался, и они иногда еще отвечают.
Аноним 24/01/21 Вск 05:13:26 #213 №1919684 
>>1919191
Bump.
Аноним 24/01/21 Вск 10:50:13 #214 №1919779 
>>1919684
Функцию инициализации напиши. Все равно понадобится если будет увеличение объема данных или например будешь их грузить из файла.
Аноним 24/01/21 Вск 11:45:28 #215 №1919837 
14489889778220.jpg
>>1919779
https://onlinegdb.com/PMP_8NSgC
Сделал вот так?

Можно как-то лучше?
Аноним 24/01/21 Вск 15:20:02 #216 №1919976 
>>1919837
Вимп.
Аноним 24/01/21 Вск 22:13:09 #217 №1920356 
Для вирусня ориентированного кодинга что читать/изучать?
Аноним 24/01/21 Вск 22:57:29 #218 №1920387 
>>1920356
УК РФ
Аноним 25/01/21 Пнд 18:36:19 #219 №1921470 
Я правильно понимаю, что по скорости расклад такой?

1. for(int i = SIZE; i; i--)
2. for(int i = 0; i < SIZE; i++)
3. for(int i = 1; i <= SIZE; i++)
4. for(int i = 1; i < SIZE + 1; i++)

+ unrolling от 8-и шагов дает прирост ощутимый
Аноним 25/01/21 Пнд 18:39:29 #220 №1921474 
>>1916309
Деды вообще документаций не писали и ничего не оставляли кроме пары комментариев. Хочешь пользоваться? Сам правь исходники и исправляй ошибки. Иначе как все развиваться будет то, если до тебя все было написано, тут значит идеальная ситуация.
Аноним 25/01/21 Пнд 21:39:54 #221 №1921699 
>>1921470
int i; пиши в начале функции, это сэкономит время на выделение регистра!
Аноним 25/01/21 Пнд 22:12:21 #222 №1921724 
>>1921470
В 1980-м, да. Если сегодня, то смотри выдачу компилятора, удивишься.
Аноним 26/01/21 Втр 23:59:42 #223 №1922759 
Тред живи.
Аноним 26/01/21 Втр 23:59:45 #224 №1922760 
>>1921470
Обратный цикл всегда быстрее будет. Так как меньше затрат на вычисление переменной i.
Аноним 27/01/21 Срд 01:55:53 #225 №1922819 
Кто нибудь обьясните что делать с глобальными переменными. Есть одна глобальная переменная в .h файле. Писал прогу на маке и все было бы прекрасно, но дома у меня линукс и при попытки линковки одного и того-же кода, который работал на маке, выдает ошибку о множественных включениях этой переменной. Перепробовал различные варианты external, но все еще не линкуется. Кто нибудь поясните по полочкам что да как тут, в .c или .h файле писать и прочее...
Нет, избавиться от глобалки не могу, используется везде, я умру бегать по куче файлов\функций передавая одну переменную
Аноним 27/01/21 Срд 02:08:54 #226 №1922829 
>>1922760
При обнулении битов электричества меньше тратится?
Аноним 27/01/21 Срд 04:34:12 #227 №1922906 
2021-01-27.png
>>1922819
Аноним 27/01/21 Срд 05:23:19 #228 №1922923 
>>1922819
Pragma once не является стандартом, поддержка зависит от компилятора.
Аноним 27/01/21 Срд 05:24:47 #229 №1922924 
Ты же в курсе что такое хедер гарды?
Аноним 27/01/21 Срд 07:21:18 #230 №1922948 
>>1922819
Глобальная переменная должна жить в какой-то одной единице трансляции.

В хедере:
extern int global;

В одном из .с файлов:
int global;

>>1922923
Все компиляторы уже лет 10 его поддерживают, норм.
Аноним 27/01/21 Срд 07:35:25 #231 №1922953 
>>1922948
Почему тогда у него на маке работает, а на линуксе нет?
Аноним 27/01/21 Срд 09:31:55 #232 №1922974 
>>1922819
Код в студию.
Аноним 27/01/21 Срд 10:52:33 #233 №1923017 
>>1922953
Полгода назад зарелизился новый GCC, в котором отпилили поддержку глобальных переменных в хедере. Оно как бы работало, но так нельзя было делать. Теперь вообще нельзя. Вероятно на маке еще не дошли до этого. Делай как говорит этот анон >>1922948
Аноним 27/01/21 Срд 12:32:10 #234 №1923074 
>>1922923
Прагма тут вообще не при чем: что с ней, что с ifdef'ами у него глобалка объявляется в каждом .c-файле, включающем хедер.
Тут скорее интереснее, каким образом на маке "всио собиралось".
Аноним 27/01/21 Срд 14:55:08 #235 №1923243 
Почему у меня каждый раз полукаются макароны из функций?
Где почитать как более менее нормально программировать?
Каждый раз настроение от этой хуйни падает.
Аноним 27/01/21 Срд 15:20:10 #236 №1923262 
>>1923243
Посмотри исходники реального софта типа ZSH и узбагойсо.
Аноним 27/01/21 Срд 15:23:59 #237 №1923266 
>>1923262
Там сложно
Аноним 27/01/21 Срд 16:06:59 #238 №1923328 
>>1922829
Ну сравнить одно число с другим и определить какое больше это две разные операции, мне кажется четкое сравнение быстрее будет, чем побитовое решение где больше, а где меньше, хотя хз
Аноним 27/01/21 Срд 17:02:26 #239 №1923449 
>>1923243
>макароны из функций
Тащи пример
Аноним 27/01/21 Срд 17:23:36 #240 №1923490 
>>1923243
> Почему у меня каждый раз полукаются макароны из функций?
Большие функции или много маленьких?
> Где почитать как более менее нормально программировать?
Ядро bsd, linux.
Аноним 27/01/21 Срд 17:57:55 #241 №1923522 
>>1923490
Когда хочу добавить новый функционал, то не могу просто написать все в новую функцию, приходится редактировать старые функции тоже. Получается все размазанно по всей программе и добавлять новый код все сложней и запутанней.
Аноним 27/01/21 Срд 18:14:20 #242 №1923540 
>>1923522
Это все придет с опытом, без этого никак. А вообще, читай "Чистый код", "совершенный код" и тому подобное. Принцип SOLID. Язык Си конечно низкоуровневый и не очень выразительный, поэтому провоцирует слишком закапываться в детали реализации - в других языках там бы просто гонялись объекты взад вперед, а каждая функция занималась только своей маленькой задачей.
Аноним 27/01/21 Срд 18:58:40 #243 №1923592 
>>1922906
Убери прагму или замени на каноничные ифдефы.
Ругается сс glob.c main.c func.c ?
Аноним 28/01/21 Чтв 00:22:14 #244 №1923934 
>>1923243
Рассматривай каждую функцию как один маленький модуль.
С нулевой зависимостью от макросов, глобальных переменных. Здесь лучше расширять интерфейс, нежели увеличивать зависимость от ебеней. На нижнем уровне пишешь из таких вот функций, на верхнем - из больших процедур.
Аноним 28/01/21 Чтв 20:51:31 #245 №1924625 
1354948987654.png
>>1904954 (OP)
Особо не надеюсь, но может кто то подскажет название. Читал в сосничестве около десятка лет назад книжку. Там всякие советы по написанию кода были. Половина книжки была про Си вторая про плюсы.
Аноним 28/01/21 Чтв 21:57:01 #246 №1924697 
>>1924625
Книгам место в сортире. Чтобы познать дао, надо писать и читать код ядра.
Аноним 28/01/21 Чтв 22:47:57 #247 №1924724 
>>1924697
Дай ссылку на код ядра.
Аноним 29/01/21 Птн 00:14:44 #248 №1924783 
>>1924697
>Чтоб поесть говна, надо писать и читать код ядра.
Аноним 29/01/21 Птн 01:26:47 #249 №1924839 
>>1924697
>надо писать
и что там писать? MMU?
Аноним 29/01/21 Птн 10:58:16 #250 №1924962 
Герберт Шилдт - Полный справочник по C.7z.png
Аноним 29/01/21 Птн 21:20:26 #251 №1925564 
изображение.png
Существует ли сабж в электронном виде? После его же книги по С++ покупать не хочется, а посмотреть интересно.
Аноним 30/01/21 Суб 03:50:09 #252 №1925744 
Аноны, учу С# используя visual studio 2019. Проблема в том, что использую 2 разных компьютера в разных местах. Если возможность запихнуть проекты в подобие облака? Ебался с гитхабом, но толку мало, проект туда с одного компа запихнул, а как его вытащить на другом компе не понял.
Аноним 30/01/21 Суб 12:29:17 #253 №1925896 
>>1925744
git clone https://github.com/username/projectname.git (получить с ГитХаба)

git init projectname (инициализировать Гит, если это новый проект, а не скопирован с ГитХаба)
git remote add origin https://github.com/username/projectname.git (связать инет адрес с origin)
git add . (поместить файлы в папке под слежку git)
git commit -m "Добавил фичу №34" (зацементировать изменения)
git push origin master (отправить на ГитХаб в определенный ранее origin) (потом вроде как можно просто git push -u)

Поставь себе терминал нормальный на Винде и гит тоже, ты как я понял через сайт все делал, там это сделано для экстренных случаев, так делать не стоит. И так в этой сфере даже минимально развиться не сможешь. Я чутка набросал команды основные, сам давно не пользовался.
Аноним 30/01/21 Суб 12:35:24 #254 №1925899 
>>1925896
git add можно без .
git init projectname создаст папку отдельную, если хочешь в этой же папке стартануть, то просто git init

А я тут посмотрел, тебе и терминал не нужен, на Винде Гит с включенным терминалом поставляется в программу саму.
Аноним 30/01/21 Суб 17:54:55 #255 №1926294 
>>1924839
Есть mit'шный курс по операционным системам на си, где нужно допиливать xv6. Хорошая штука, всем советую.

мимо
Аноним 30/01/21 Суб 19:23:46 #256 №1926409 
>>1908303
>может удалить вообще весь код, который сам по себе может привести к UB. В том числе проверки, этот UB предотвращающие!

Бля, дебилы, делают UB в "проверке", "предотвращающей" UB, компилятор удаляет "проверку"
-- РРЯЯ, конпелятор меня ненавидит!
Аноним 30/01/21 Суб 19:53:06 #257 №1926433 
>>1926409
Да здравствует -O0!
Аноним 30/01/21 Суб 21:28:39 #258 №1926542 
>>1904954 (OP)
Господа, посоветуйте атомарный инкремент/декрементдля size_t, ну чтоб переносимый. Спасибо.
Аноним 30/01/21 Суб 21:38:55 #259 №1926552 
>>1926542
Самый тупой способ - бахнуть 2 статические инлайн функции для инкремента и декремента в заголовочнике, внутри функций детектить компилятор через условную компиляцию и сделать вызов нужных builtin функций для атомарных операций из нужного компилятора. Подключаешь заголовочник - есть переносимые атомики для size_t. Как-то так.
Аноним 31/01/21 Вск 17:53:34 #260 №1927179 
>>1904954 (OP)
Есть один uint32.
Как узнать, сколько всего битов в нем равны единице?
Короче говоря, нужна функция, которая бы брала аргументом uint32 и выдавала число битков в нем.
Пока что на ум приходит только простым перебором, типо 32 раза сдвигать число, проверять первый бит и если единица инкрементировать счетчик, но может есть более быстрые и рациональные способы?
Аноним 31/01/21 Вск 17:58:35 #261 №1927183 
>>1926552
>статические инлайн функции
Помню как то прогал давно на с89 и нужна была инлайн функция для быстродействия, но компилятор её не поддерживал.
Единственным способом задать инлайн функции (в том числе и с аргументами) получилось только через макрос.
Аноним 31/01/21 Вск 18:08:48 #262 №1927192 
>>1927179

https://m.habr.com/ru/post/276957/
Аноним 31/01/21 Вск 20:53:03 #263 №1927333 
>>1927179
__builtin_popcount и подобные
Аноним 31/01/21 Вск 22:15:00 #264 №1927381 
>>1927179
Это реально в какой то задаче понадобилось? Или это просто в универе задание со звездочкой?
Аноним 01/02/21 Пнд 01:05:17 #265 №1927487 
Братушки поясните особенности в динамическом и статическом массиве на пальцах. Типо одно используют для того второе для другого потому что так и так.
Я заебался смотреть 20 минутные видосы и хуй поймёшь.
Я так и не понимаю почему иногда массив чаров я могу отправлять в функцию, а иногда выходит ошибка. Или что почитать. Или только в процессе драк с компилятором можно привыкнуть к синтаксису?
Аноним 01/02/21 Пнд 02:56:37 #266 №1927522 
Кто то может пояснить, есть ли на си нормальные готовые библиотеки? Хочу вкатываться и писать простой хакерский софт
Аноним 01/02/21 Пнд 04:08:10 #267 №1927527 
>>1927381
Бывает нужно если число используется как битовая маска

Например у тебя есть массив объектов, и массив uint32 который используется как маска какие объекты активны, какие нет. И тебе нужно посчитать сколько объектов активны.
Аноним 01/02/21 Пнд 04:54:36 #268 №1927534 
>>1927487
И то, и то кусок памяти. Один определен в секции в исполняемом файле, а какой-то выделяется в рантайме. Разница только в выделении и освобождении(если требуется) этой памятьи.
Вполне возможно ты где-то с синтаксисом ошибся.
Аноним 01/02/21 Пнд 10:22:07 #269 №1927607 
>>1927381
В некоторых протоколах минимальный контроль ошибок делается выставлением бита четности.
Аноним 01/02/21 Пнд 13:11:47 #270 №1927737 
>>1927534
Братиш, а вот если я пока не пользуюсь массивами больше 100100 зачем мне динамический может ещё понадобится?

Мне вот надо передать массив в функцию и там его обозначить нулями, отправляю Статик массив если я правильно понял, но он не хочет...

#include <stdio.h>

void array_nuller(int x, char array)
{
    int j;
    int i;

    i = 0;
    j = 0;
    while (++i < x)
    {
        while (array[++j] < x)
            array[j] = 48;
        array[j] = 0;
    }
}

int main ()
{
    int x;
    
    x = 4;
    char array[x][x];
    
    array_nuller(x, array);
    
    return (0);
}

main2.c:25:18: warning: incompatible integer to pointer conversion passing 'char'
to parameter of type 'char
' [-Wint-conversion]
array_nuller(x, array[x][x]);
^~~~~~~~~~~
main2.c:3:33: note: passing argument to parameter 'array' here
void array_nuller(int x, char
*array)
^
1 warning generated.

}
Аноним 01/02/21 Пнд 13:45:20 #271 №1927809 
Программисты, а вы счет древних русов знаете?
Аноним 01/02/21 Пнд 15:15:43 #272 №1927948 
>>1927737
Будто я знаю зачем тебе это. Поставь себе задачу и думай как ее решить лучше.

Нихера не статик. Ты выделил на стеке. Массив внутри с массивами. Судя по всему передаешь в функцию которая ожидает чисто указатель. Что это за ерунда?
Тебе б синтаксис учить и вникать почему все так. Язык Си тупее чем ты думаешь. И думать за тебя он не будет.
Аноним 01/02/21 Пнд 15:44:01 #273 №1927973 
>>1927607
Это понятно, но это обычно на ходу считается же - принимаешь каждый бит и сдвигаешь, потом в конце смотришь сошлось или нет - popcount тут не нужен.
Аноним 01/02/21 Пнд 17:58:12 #274 №1928150 
>>1927948
Харкач звёздочки убрал во входных в функции
Функция Array_nuller принимает инт, и чар array

Я хочу двумерный массив забить ноликами. Чяднт?
Аноним 01/02/21 Пнд 18:12:10 #275 №1928155 
>>1928150
Может в чар инт пишешь?
Аноним 01/02/21 Пнд 18:28:51 #276 №1928180 
Вместо звёздочек поставил 'ж'
void array_nuller(int x, char жж array)
{
int j;
int i;

i = 0;
j = 0;
while (++i < x)
{
while (array[++j] < x)
array[j] = 48;
array[j] = 0;
}
}

int main ()
{
int x;

x = 4;
char array[x][x];

array_nuller(x, array);

return (0);
}
Аноним 01/02/21 Пнд 18:30:13 #277 №1928183 
>>1927973
Это если какой нибудь уарт программируешь, а когда надо послать целиком битый пакет для проверки?
Аноним 01/02/21 Пнд 19:05:42 #278 №1928236 
>>1928180
Используй
for i... for j... a[[email protected]+j] = 0;
Аноним 02/02/21 Втр 00:28:40 #279 №1928482 
>>1927179
Переведи его в двоичную систему исчисления через рекурсию, либо через циклы, сложи результаты в массив, как я помню с помощью рекурсии у тебя все как надо сложится, а в цикле сам смотри как. Ну и посчитвй единицы в числе. Как пример.
Аноним 02/02/21 Втр 06:40:56 #280 №1928558 
>>1927179
>более быстрые
Если память - не проблема (не жёсткий эмбеддед), то самое быстрое будет таблица на 64к с заранее расчитываемыми при старте программы (ну или например при компиляции если кресты, или захардкодить) значениями числа битов для всех двухбайтовых чисел. Тупо берешь пару чисел по индексу верхних и нижних двух байт твоего числа и складываешь.
Аноним 02/02/21 Втр 06:58:59 #281 №1928561 
>>1928558
Cache misses
Аноним 02/02/21 Втр 07:40:38 #282 №1928566 
>>1928561
Ну ок, если 64к не влезет, пусть будет таблица на 256 чисел и складываем 4 числа, а не 2.
Аноним 03/02/21 Срд 04:08:05 #283 №1929405 
>>1928566
Зачем если есть инструкция в процессоре?
Аноним 03/02/21 Срд 06:28:59 #284 №1929425 
>>1929405
Гарантируешь, что есть в любом процессоре?
Аноним 03/02/21 Срд 07:20:42 #285 №1929430 
>>1929425
В любом десктопном есть
Аноним 03/02/21 Срд 07:49:16 #286 №1929434 
>>1929430
>десктопном
Ясно.
Аноним 04/02/21 Чтв 13:39:14 #287 №1930354 
>>1928180
>я хочу двумерный массив забить ноликами
Не понял твоего кода вообще, но вот решение.

https://pastebin.com/UQk0xYtR - вот версия, где указатели скрыты синтаксическим сахаром в виде доступа к элементам через индексы массива, по сути там только указатель передается в функцию, и мы просто скрываем указательную арифметику.

https://pastebin.com/AAPzDuXt - вот версия с чистыми указателями, в ассемблерном выхлопе и то и другое идентично будет.

Это VLA (Variable Length Array), если хочешь попроще то просто замени ptr[][side] на ptr[][4], но потеряется гибкость и тебе все равно придется передавать side как формальный аргумент, так что смысла в этом мало.
Аноним 06/02/21 Суб 20:49:44 #288 №1932610 
>>1928180
>array[++j] < x
могу ошибиться, но ты сравниваешь адрес с интежером. о чем тебе и вопит конпелятор
Аноним 06/02/21 Суб 22:08:13 #289 №1932681 
Наверняка платина, но вдруг у кого есть решение. Коротко говоря хочу такой макрос #define inv(var, method, args...) typename(var)##__##method (args), ну чтоб оно работало. То есть например чтоб такой код:
Vec v = (...)
Data data = inv (v, get, 1)
превращался в
Data data = Vec__get(v, 1)
Поковырялся с _Generic, но там вообще странное мутное говнище получается.
Спасибо.
Аноним 07/02/21 Вск 00:19:52 #290 №1932749 
>>1932681
Я думаю ты перерос Си
Аноним 07/02/21 Вск 00:59:13 #291 №1932805 
>>1932681
Имя типа по объекту, насколько я понимаю, можно только в С++ получить. Хотя возможно gcc предоставляет какой-то спрятанный builtin_type_name для C. Но в документации пусто об этом.
Остальное вроде не проблема, по типу VA_ARGS с двумя подчеркиваниями в начале и в конце, указатель на объект кидать первым аргументом во все функции, ну и функции накидать с нужными именами.
Аноним 07/02/21 Вск 14:41:20 #292 №1933193 
Посоветуйте годную бесплатную IDE для С, типа Анаконды для пайтона?
Аноним 07/02/21 Вск 15:02:05 #293 №1933212 
>>1933193
VS community, Xcode чем не устраивают?
Аноним 07/02/21 Вск 15:23:53 #294 №1933243 
>>1933212
>VS community
Visual Studio Code в смысле? Я просто перекатываюсь с пайтона на С/С++ для числовых вычислений, не особо разбираюсь в обстановке. Научных дистрибутивов типа Анаконды, я так понимаю, для С нету.
Аноним 07/02/21 Вск 15:52:30 #295 №1933290 
>>1932805
>>1932749
Ну, вдруг охуенное решение есть, а я ни ухом не рылом. Спасибо в любом случае.
Аноним 07/02/21 Вск 15:53:32 #296 №1933294 
>>1933290
Попробуй кодогенерацию.
Аноним 07/02/21 Вск 15:54:41 #297 №1933296 
>>1933243
Нет, VS community это Visual Studio версии Community (а не платный энтерпрайз и прочее)
Visual Studio Code это вообще блокнот с продвинутой подсветкой и плагинами, то есть другое.
Аноним 07/02/21 Вск 16:04:25 #298 №1933311 
9781466569676.tif
>>1933296
Ок, спасибо. Как я понимаю, я устанавливаю VS community, открываю книгу Праты и начинаю знакомство с основами, а после этого можно будет перейти и к другим специфическим вещам типа пикрила, да?
Аноним 07/02/21 Вск 22:08:50 #299 №1933675 
>>1933311
Watcom, Code-Block иде.
Аноним 07/02/21 Вск 22:42:26 #300 №1933685 
>>1933675
>Code-Block иде
О, спасибо, а то я начал устанавливать VS community, выбрал Clang-компилятор, а там сразу до десятка Гб на жестком диске затребовало, которых у меня нет.
Аноним 07/02/21 Вск 23:24:11 #301 №1933706 
>>1933685
Так удоли игры и порнуху
Аноним 08/02/21 Пнд 00:20:13 #302 №1933738 
>>1933706
У меня на диске С места нету (дома компьютер старый, всего 30 Гб на диске С, свободно 2), а VS community туда почему-то лезет, даже если я все устанавливаю на диск D.
Аноним 08/02/21 Пнд 00:44:40 #303 №1933758 
>>1933685
ставь мс-компилятор
Аноним 08/02/21 Пнд 05:08:55 #304 №1933820 
Допустим я хочу подучить ассемблер и попиздиться с gcc. Если я реализую одну и ту же функцию на сишке, а потом на ассемблере, то как проверить какая из них быстрее? С флагом -O3 вызовы функции в main либо просто оптимизируются, либо результат вычисляется предваритально. Да и если в цикл эти функции обернуть, то там наверное какое-нибудь кэширование будет на низком уровне, неестественно ускоряющее работу функций, но я в этом не разбираюсь.
Аноним 08/02/21 Пнд 08:25:25 #305 №1933891 
>>1933820
google benchmark, ну или сам напиши свой бенчмарк через rdtsc или QueryPerformanceCounter в винде
Аноним 08/02/21 Пнд 10:18:49 #306 №1933966 
СУКА ЕБАНАЯ СИДЕЛ ВЕЛОСИПЕДЫ НАХУЙ ИЗОБРЕТАЛ БЛЯТЬ НАХУЙ ЛУЧШЕ НА БУМАГЕ НАХУЙ НАЧИНАТЬ ЧЕМ СИДЕТЬ ПО 2 ЧАСА РЕШАТЬ ЛЕГКУЮ ХУЙНЮ
Аноним 08/02/21 Пнд 10:21:41 #307 №1933970 
>>1933820
Проверяемую функцию - в отдельный файл.
Аноним 08/02/21 Пнд 10:23:33 #308 №1933972 
>>1933706
Удалил игры и порнуху кстати, уже 2 недели не играю просто сижу пишу код и бегаю. Не могу отпустить Си сука такой интересный язык, а деньги зарабатывать надо и деньги кончаются что делать сука стать бомжом с макбуком?
Я весь год сидел занимался Сишечкой, вон в игры вкатываюсь но как оказалось знание физики и математики нужно чтобы получалось годно, а еще алгоритмы и структуры данных. Но я 9 классник, планирую поступать в какую нибудь шарагу при техническом вузе или заканчивать 10 и 11. Благо к деградаций интерес исчез и всё что я делаю это код и учеба


Аноним 08/02/21 Пнд 10:25:17 #309 №1933974 
>>1933972
А да, че высрался то, ребят я хотел заработать деньги на вебе, я долбоеб же да? Или у меня есть перспективы всё таки зарабатывать без корочки на Сишечке и плюсах на учёбу и покушать?
Аноним 08/02/21 Пнд 10:26:29 #310 №1933976 
Прастите что сру своим говном никому нахуй не нужным, тред Си мне ближе всех что есть из интернет ресурсов, кроме конеш какой нибудь плеромы
Аноним 08/02/21 Пнд 10:28:19 #311 №1933979 
>>1933972
А да мне 23.
Аноним 08/02/21 Пнд 10:29:58 #312 №1933981 
> 9 классник
Репорт.
Аноним 08/02/21 Пнд 10:35:41 #313 №1933988 
>>1933981
23 летний 9 классник
Аноним 08/02/21 Пнд 13:15:47 #314 №1934134 
>>1932681
Охуеть чувак ты крут.
Аноним 08/02/21 Пнд 13:16:01 #315 №1934135 
>>1933974
Для веба тебе тоже диск понадобится под ноду.
Аноним 08/02/21 Пнд 13:20:01 #316 №1934138 
>>1934135
Извини, диск? Или ты имеешь ввиду освоить как следует Си выше уровня вкатывальщика (На данный момент я разбираю ресурсы на awesome c, и параллельно вот уже заканчиваю Прату) и вкатываться в веб?
Аноним 08/02/21 Пнд 15:07:43 #317 №1934290 
>>1934138
Я имею в виду что для веба тебе тоже придется купить новый диск, потому что там очень раздутые инструменты по десятку гигов. Голый хтмл в блокноте там не котируется, тебе придется пачками выкачивать либы зависимостей.
Аноним 08/02/21 Пнд 15:26:50 #318 №1934305 
>>1934290
А всё понял. Спасибо за совет дружище. Если интересно. Я все таки продолжу глобальное изучение C, пока не изучу всё что связано. И попробую работу найти, а там если получится то в плюсы.
Аноним 08/02/21 Пнд 21:05:17 #319 №1934783 
бля, поцонва
короче вопрос к вам всем (если увидете это сообщение в Си треде - не обессудьте, похожий вопрос просто)
короче я вот школотрон 23 лет, в этом году заканчиваю шарагу
в ООО РогаИКопыта я занимался топовыми задачами, связанными с железом (ну всм не один тянул проект, а в команде в роли ждуна) типа датчиков в металургии, контроллеров приводов и прч штуках
занимался этим два года
но есть трабл - в этой конторе даже у руководителей зп 45-50, у меня ее вообще нет - чалюсь там только из-за кайфа работы с реальным железом и я вот хочу сменить профессию
но смотрю на хабр карьеру/ххру - пиздец
из ОЙТИ одни жанги\спинг\датасосист
А в си одни НИИУУПГУИПМС, где с зп, думаю, также
че, все вообще плохо? я зря учился роботов программировать 6 лет бля?
Аноним 08/02/21 Пнд 22:03:19 #320 №1934847 
>>1934783
Кент в НИИХУЯ за 100+к погромирует и там это не предел
Но это правда в ДС
Аноним 08/02/21 Пнд 22:55:52 #321 №1934898 
>>1934847
я в дс
а он в каком нии? сильный данон, если скажешь?
Аноним 09/02/21 Втр 00:41:27 #322 №1934978 

Аноним 09/02/21 Втр 09:11:18 #323 №1935050 
А подскажите где можно почитать про использование компилятора?
пока варианты такие man gcc, глава в прате programming mechanics. В КиР вроде нет про это.
Мне немного надо, прост ликбез для курса в шараге.
Аноним 09/02/21 Втр 11:14:34 #324 №1935083 
1.jpg
2.jpg
4.jpg
5.jpg
>>1935050
Аноним 09/02/21 Втр 14:10:56 #325 №1935253 
https://www.youtube.com/watch?v=335ylTUlyng
Про тулчейн для новичков
Аноним 09/02/21 Втр 18:15:13 #326 №1935588 
Экспериментирую с функцией fopen с параметром r+b, в неё сохраняю строку с fwrite, буфер с 1024 битами. Как вообще двигаться по записям внутри файла если используешь бинарный режим? С помощью этого самого буфера? Мол, нужна запись, берешь её индекс и двигаешь указатель файла с константой буфера? Или как? А удалять как, интересно? Размер буфера должен быть неизменяем, т.е при любых обстоятельствах быть 1024?
Аноним 09/02/21 Втр 18:19:38 #327 №1935599 
>>1935083
Мимокрок

Ага вот как оказывается, сука.
Аноним 09/02/21 Втр 22:51:33 #328 №1936001 
>>1935588
Попей таблетки, почитай ман.
Аноним 10/02/21 Срд 00:50:03 #329 №1936090 
пацаны, расскажите какие зарплаты в эмбедеде? думаю вкатиться туда, пару лет набраться опыта и съебать в омурику, где этим занимается не только концерн залупки
проживу пару лет с этой зп? Есть в районе 100? 150?
Аноним 10/02/21 Срд 02:05:16 #330 №1936204 
>>1936090
Ты ёбнулся что ли? Какие 100-150? На питоне / джаваскрипте еще реально такие суммы поднимать. Сишники сосут бибу. 80-90 потолок.За пару лет ты такого опыта не наберешься.
Аноним 10/02/21 Срд 09:47:27 #331 №1936318 
>>1936204
Вакансии системного прогера от 100к обычно

мимо
Аноним 10/02/21 Срд 09:58:12 #332 №1936321 
>>1936001
Какой ман? Какие таблетки? Конкретику пожалуйста.
Аноним 10/02/21 Срд 10:05:01 #333 №1936322 
>>1936318
Посмотрел на hh и indeed С/С++ эмбеду в ДС платят 150-300К в мес, сибирь 60-120, на востоке 80-150. Поляндия 7000$ сеньору.
Аноним 10/02/21 Срд 10:05:36 #334 №1936323 
>>1936204
Пошел нахуй пиздабол
Аноним 10/02/21 Срд 12:19:16 #335 №1936407 
>>1936322
>>1936090
так я в дс как раз, звучит как зп питоняки или крестовика
жаба конечно ебет
но даже 150 это хорошо (лично для меня)
главное, чтобы рост был (и знаний и зп)
поэтому я бы еще раз свой вопрос задал именно ДСникам
че по зп, столичники?
Аноним 10/02/21 Срд 14:04:09 #336 №1936626 
>>1936407
Чувак в ДС ВСË ОХУЕННО!
Аноним 10/02/21 Срд 14:08:45 #337 №1936637 
>>1936626
стеб, не?
Аноним 10/02/21 Срд 16:12:13 #338 №1936784 
>>1936637
Считаю, что не стёб. В ДС и дс2 зарплаты большие даже на не очень существенных должностях.
Аноним 10/02/21 Срд 19:24:32 #339 №1936965 
>>1936637
Сука я понимаю что здесь всё мертво уже давным давно потому что с долбоебами общаться никто не хочет, но сука свои мозги то можно использовать иногда?
Аноним 10/02/21 Срд 22:21:12 #340 №1937111 
>>1936965
ты стебешься сейчас?
Аноним 10/02/21 Срд 23:40:17 #341 №1937178 
>>1936323
Это ты вот этому >>1936322 и этому >>1936318 скажи. На хх он смотрел, лол. Я ДСник говорю, что Сишники потихоньку вытесняются скриптодебилами. Ржавчина и змея, увы отъедают нишу. Эмбеддед навроде ардуины/стм32 только на западе хорошо оплачивается, но туда абы кого с курсами на юдему за плечами не возьмут.
Аноним 11/02/21 Чтв 13:53:21 #342 №1937520 
>>1937111
Твоя неуверенность над тобой стебется.
Аноним 11/02/21 Чтв 15:41:25 #343 №1937614 
>>1937520
бля мне кажется, что ты стебешься надо мной
Аноним 11/02/21 Чтв 15:41:53 #344 №1937615 
>>1937178
ну хз чел
у меня 150 зп
взяли после ООО РогаИКопыта
Аноним 11/02/21 Чтв 15:50:40 #345 №1937627 
>>1937178
тут другой вопрос, скорее, в том, что не очень то и премиальные компашки
реально концер залупки и прочее
но иногда платят, причем иногда даже неплохо
хз насколько такой опыт будет катироваться за бугром

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

Имхо, наоборот вся эта залупа только развивается
ИоТ набирает обороты, робототехника набирает обороты
появились направления у Шмяндекса, сбера
Всегда ей касперский, нвидиа, хуевей
короче хуйню сказал, все норм и сишников
мне, кстати, интересно, у байтоебов яндекс тоже спрашивает АЛГОРИТМЫ сортировки и прочее говно?
Аноним 11/02/21 Чтв 15:51:30 #346 №1937632 
>>1937627
+ самсунг
Аноним 11/02/21 Чтв 21:45:28 #347 №1938155 
>>1937627
>ИоТ набирает обороты, робототехника набирает обороты
Я про ИоТ слышу уже лет 7, а про робототехнику так вообще всю жизнь.
Но на самом деле нет никакой робототехники, нет ИоТ. В РФ уж точно нет, максимум на западе стартапы есть и крупные концерны, где нужны промышленные роботы.
Аноним 11/02/21 Чтв 22:25:21 #348 №1938171 
>>1938155
согласен
но еще, пожалуй, скажу, что в сколково есть N стартапов с роботами
но вообще сколково это страна ардуино и машинного обучения ЛОЛ
Аноним 11/02/21 Чтв 23:27:47 #349 №1938201 
>>1937178
>Ржавчина и змея
А как же реалтаймовость? Если на расте еще можно как-то извернуться (и то большой вопрос как его к RTOS прикручивать), то питон сразу мимо. И да, реалтайм это в первую очередь не про скорость, а ее предсказуемость.
Аноним 12/02/21 Птн 01:46:24 #350 №1938263 
вопрос немного нерелейтед, но какой питун лучше поучить, чтобы понимать инитскрипты ядра?
Аноним 12/02/21 Птн 02:17:34 #351 №1938268 
image.png
Сап байтач. Есть один X220. Хочу наколхозить в него кастомный многоцветный светодиод. Например - чтобы краснел, если пинги растут или пакеты пропадают (WiFi в жопе мира, взять ложку вместо ножа не предлагать, мне интересна сама задача).

Правильно я понимаю, что мне нужно брать какой-то микроконтроллер, совмещённый с USB интерфейсом, что-то типа ATmega88, подключать его ко внутренним USB и писать драйвер?
Есть варианты проще или наоборот - совершенней и гибче?
Как получить входные команды, кроме USB?
Как бы ты это сделал?
Надеюсь, не промахнулся разделом/тредом.
Аноним 12/02/21 Птн 02:55:20 #352 №1938275 
>>1938263
systemd
какой вопрос - такой ответ
Аноним 12/02/21 Птн 02:59:09 #353 №1938278 
>>1936321
man fread
Таблетки - риспредал
Аноним 12/02/21 Птн 05:05:35 #354 №1938300 
>>1937627
Верно.
>>1937632
Вот это ваще двачую, общался с Поляком сишником, его с зубами оторвали нахуй с учебы в самсунг работать, потом его выбил кто-то в гугл, Питон не знал на момент когда общались, лол.
Аноним 12/02/21 Птн 05:10:51 #355 №1938301 
>>1938268
В радио чуваки вроде знают Си.
Аноним 12/02/21 Птн 08:26:14 #356 №1938324 
>>1907027
> алгоритмический скриптомакакинг.
> Скриптомакака - как плохой начальник.
Эк тебя разворотило. Сравнил зп настоящих интеллектуалов эмбеддеров и глупых никудышных "скриптомакак"?
Аноним 12/02/21 Птн 11:46:52 #357 №1938413 
Хотел вам вопросов задать, кто нибудь делает взносы (комиты) на гите какому нибудь проекту? Нормально ли нововышедшему Сишнику таким заниматься, или другие варианты есть?
Как новичку развиваться лучше? Писать свои проги и выкладывать на всеобщее обозрение? Олимпиады? Или же проектик какой нибудь сделать, типа часов или другой полезной утвари? Идти в контору напрашиваться или завод?
Аноним 12/02/21 Птн 12:10:33 #358 №1938434 
>>1938413
ты в унике?
Аноним 12/02/21 Птн 14:29:24 #359 №1938571 
>>1938434
Неа, думаю поступать.
Аноним 12/02/21 Птн 14:55:50 #360 №1938585 
>>1938571
бля, школотрон, ты чего так на работу попасть хочешь? Конечно, обучение на работе имеет место быть, но не это обучение из рарзяда "вот структуры в си делаются ТАК, а перифирия работает ТАК" - это все уник + свои доп занятия. К моменту выхода на работу ты максимум должен быть не очень знаком со стеком (специфичный проц, мб какая-нибудь задроченная архитектура системы)
лучше поступить на соотвествующую кафедру и там хреначить курсовые нормально, а не "чтобы сдать"
при условии, что ты найдешь годного научника, проекты могут быть и правда серьезными
Кстати советую не проебывать микропроцессорную технику
если же по каким-либо причинам тебе прям нужно пойти на работу (ну вдруг родители не могут содержать, это норм), то, конечно, пет проекты топ.
Но если тебя твои смогут до 3 курса содержать, то лучше наберись знаний на курсачах + петика
а с 3 курса уже дерзай
Аноним 12/02/21 Птн 15:24:07 #361 №1938617 
image.png
>>1938301
Чёрт, так и знал.
Аноним 12/02/21 Птн 20:04:38 #362 №1938920 
??????????-????-???????????-(118).jpg
Как получить родительскую структуру? parentof() и containerof() карочи.
Аноним 12/02/21 Птн 20:32:07 #363 №1938936 
>>1938920
>container_of
Да
Аноним 12/02/21 Птн 21:07:30 #364 №1938967 
>>1938268
Если под прыщами, то через псевдофс /proc. Можно напрямую общаться. Скрипт на питоне с гуи можно запиздячить. Си + gui либы tk/gtk так же легко пишуться.
Аноним 12/02/21 Птн 21:18:32 #365 №1938992 
>>1938936
А что именно "да"? я просто спрашивал, как ее имплементировать. а то для меня подобные трики, словно поиск нарика по шприцу, оставленному в заброшенном толчке пару недель назад.
Аноним 12/02/21 Птн 21:20:55 #366 №1939002 
image.png
>>1938967
Ух ты, вот это тема. Програмную часть понял, буду пробовать, как контроллер приедет.
Не ждал ответа, репостнул в rа.
Спасибо!
Аноним 12/02/21 Птн 21:22:15 #367 №1939005 
>>1938268
взял бы платку arduino
(писать под нее можно и на с)
с usb. настроил бы на ней uart
написал бы консольную прогу
которая через com порт будет
общаться с этой ардуиной
и приговнякал бы к ардуинке
этот разноцветный светодиод
Аноним 12/02/21 Птн 22:03:56 #368 №1939026 
image.png
image.png
>>1939005
>взял бы платку arduino
Ну это совсем на поверхности идея. Но выглядеть будет совсем вырвиглазно. Хотелось бы чего-то компактнее.

Arduino:
+ Больше доков/проще вкат
+ Больше доступных интерфейсов искаропки
- Труднее запихнуть в корпус ноута
- Энергопотребление

На втором пике контроллер с USB на борту, его должно хватить.
Аноним 12/02/21 Птн 22:52:14 #369 №1939070 
>>1939026
>Хотелось бы чего-то компактнее
хакнуть встроенный диод?
Аноним 12/02/21 Птн 23:05:58 #370 №1939080 
image.png
image.png
>>1939070
>хакнуть встроенный диод?
Да, например. Решение красивое и аккуратное, если с исполнением не налажать. По аппаратной/програмной части идей нет?
Cтавлю внутрь PIC, cажаю на USB и командую им через псевдофс.
Аноним 13/02/21 Суб 01:52:37 #371 №1939184 
>>1938992
Если не в силах сам написать - погугли и скопипасть чужой макрос, в ядре Линукс точно есть container_of.
Аноним 13/02/21 Суб 06:55:35 #372 №1939250 
>>1938585
Уже не школотрон, но это подходит и под меня. Благодарю.
Аноним 13/02/21 Суб 12:25:06 #373 №1939412 
>>1939002
Пожалуйста. Изучай линукс. Для embedded, разных IoT, модулей навроде стм/ардуино — это просто кайф. Сперма/макакоось таких возможностей не имеет. И разработка простая будет, поддержка, сообщество огромное. Весьма рекомендую. Только предварительно почитай про внутреннее устройство линукса.
Аноним 14/02/21 Вск 00:04:47 #374 №1940258 
с чего начать изучение СЕЙ чтобы вкатиться в nasa jpl ?
есть ли ихние РЕЦЕПТЫ и СТИЛИ программирования?
где почитать какие ЗАДАЧИ в nasa jpl надо кодить на СЯХ?
Аноним 14/02/21 Вск 03:16:48 #375 №1940342 
Вопрос по WinAPI: Каким образом CreateProcess получает сведения о созданном до вызова этой функции безымянном канале?
Аноним 14/02/21 Вск 04:49:49 #376 №1940361 
>>1940342
Наверное таким же образом как и родительский процесс может знать pid дочернего процесса.
Аноним 14/02/21 Вск 07:56:05 #377 №1940391 
>>1939412
Я бы посоветовал виртуалочки, так безопасней экспериментировать.
Аноним 14/02/21 Вск 08:24:20 #378 №1940395 
Правду ли говорят, что питон медленный и его не стоит использовать для разработки всерьёз, и лучше вообще не учить, а учить C и ассемблер?
Аноним 14/02/21 Вск 08:44:56 #379 №1940400 
Я придумал себе такую задачку и внезапно всплыл один вопрос:

А наращивается с 0 до 10 при некотором условии. Б начинает расти при условии, что А >= 5, и рост Б заканчивается при Б = А.

Что быстрее? Внутри цикла А наращивать Б, каждый раз проверяя условие, что А >= 5, или вынести наращивание Б в отдельный цикл за цикл для А и перед наращиванием Б проверить один раз, что А >= Б, но каждый раз проверять, равны ли А и Б? Я предусматриваю возможность, что по достижению цикла с Б, А может быть равно чему угодно от 0 до 10.
Аноним 14/02/21 Вск 09:12:22 #380 №1940407 
>>1940400
> придумал себе такую задачку
Заметно.
Аноним 14/02/21 Вск 09:40:17 #381 №1940417 
>>1940407
Что сказать то хотел? Зачем бессмысленный пост создавать?
Аноним 14/02/21 Вск 09:47:18 #382 №1940419 
>>1940417
>Что сказать то хотел?
Что неудавшиеся программисты идут в аналитики и пишут вот такие ТЗ, а мы типа телепаты и должны это говно разбирать.
Аноним 14/02/21 Вск 09:56:16 #383 №1940425 
image.png
>>1940419
Аноним 14/02/21 Вск 13:03:45 #384 №1940547 
>>1940400
Если А будет параметром цикла то Б надо в нем же и изменять.
Аноним 14/02/21 Вск 14:27:35 #385 №1940587 
c.jpg
>>1940391
Какие виртуалочки, от чего они меня должны спасти.
Аноним 15/02/21 Пнд 03:48:26 #386 №1941359 
fputs добавляет строку к существующим символам в файле? Если да, то как заменить, а не добавить?
Аноним 15/02/21 Пнд 04:14:55 #387 №1941366 
>>1941359
А проверить слабо?
В описании не написано об этом, значит может быть что угодно
Аноним 15/02/21 Пнд 09:20:08 #388 №1941450 
>>1940391
А я где-то писал про установку прыщей как основной системы?
Аноним 16/02/21 Втр 12:42:56 #389 №1942982 
>>1941359
fseek
Аноним 16/02/21 Втр 12:52:56 #390 №1943002 
>>1938155
>В РФ уж точно нет
по сути промышленная роботехника это синоним автоматизированных конвеерных линий на производстве
но при этом в россии нет собственного станкостроения сегодня вообще
в 89 году делали 120 тысяч станков, сегодня - меньше тысячи
соответственно, никакой речи о автоматизированном промышленном производстве не может идти, когда у нас нет производства обычного оборудования, лол

Аноним 16/02/21 Втр 22:46:05 #391 №1943661 
Аноны, помогите. Пытаюсь понять, как работает обмен данными по анонимному каналу, нихуя не понимаю. Дайте мне примеры родительского и дочернего процессов, с обменном значением переменной или строки между ними, я наверняка пойму что-то, прочитав пример с минимумом кода.
Аноним 17/02/21 Срд 20:11:16 #392 №1944519 
Вот такая хуйня на официальном сайте мелкомягких. Что с этим делать? Почему не работает?

https://docs.microsoft.com/en-us/windows/win32/ProcThread/creating-a-child-process-with-redirected-input-and-output
Аноним 17/02/21 Срд 22:53:43 #393 №1944653 
>>1944519
Фиксить, очевидно же
Ошибка вполне очевидная
Аноним 17/02/21 Срд 23:14:22 #394 №1944663 
>>1944653
Я не понимаю, как исправить.
Аноним 17/02/21 Срд 23:16:38 #395 №1944666 
изображение.png
>>1944653
Я могу только вот так, но не уверен, что не будет ошибок.
Аноним 17/02/21 Срд 23:19:07 #396 №1944669 
изображение.png
>>1944653
О чём я и писал. Ошибка.
Аноним 17/02/21 Срд 23:19:52 #397 №1944670 
А, я скобку забыл >>1944669. Проехали.
Аноним 18/02/21 Чтв 00:11:37 #398 №1944685 
IMG20200330005848018-3-b-98f0.jpg
Почитал про error handling и появилось несколько вопросов.
1. assert() поднимает SIGABT? Если да, то можно использовать

>signal(SIGABT, uninit);

чтобы в самом uninit() засейвить данные и деаллоцировать память?

2. у errno только три значения? некостыльно пилить свое errno в пределах программы и маскировать его каждой функцией в случае ошибки?

3. setjmp() сохраняет регистры в буффер и соответствующий адрес?
как это можно использовать для управления ошибками.


Аноним 18/02/21 Чтв 00:32:27 #399 №1944696 
>>1944685
>и деаллоцировать память?
Нет. У обработчиков сигналов куча ограничение, динамическое управление памятью одно из них.
Аноним 18/02/21 Чтв 03:23:53 #400 №1944743 
>>1944685
> Почитал про error handling и появилось несколько вопросов.
> 1. assert() поднимает SIGABT? Если да, то можно использовать
> >signal(SIGABT, uninit);
> чтобы в самом uninit() засейвить данные и деаллоцировать память?
Зачем деаллоцировать память при выходе из программы?
По-моему есть смысл только файловые дескрипторы закрыть.

> 2. у errno только три значения? некостыльно пилить свое errno в пределах программы и маскировать его каждой функцией в случае ошибки?
Около 140 значений у errno, если верить заголовочнику.

> 3. setjmp() сохраняет регистры в буффер и соответствующий адрес?
> как это можно использовать для управления ошибками.
longjmp вернёт выполнение в место где была вызвана функция setjmp.
Хуевая идея это использовать для управления ошибками.
Аноним 18/02/21 Чтв 15:35:35 #401 №1945342 
Ещё раз пытаюсь запостить картинку, так как двач дважды её не загрузил.
Аноним 18/02/21 Чтв 16:23:37 #402 №1945395 
>>1945342
Говорят надо включить где то в настройках двача remove exif
Аноним 18/02/21 Чтв 16:27:29 #403 №1945399 
Привет, аноны, я питонист, возникла необходимость запустить для теста функцию, но в си вообще не понимаю и честно говоря уже заебался за сегодня, 4-й язык который приходится осознавать за сегодня после жс, джавы, с++, вот код https://github.com/fengjixuchui/Tiktok/blob/master/douyin.c
В самом конце есть 2 функции XlogDecrypt и XlogEncrypt, скажите что написать в этом коде, чтобы передать в функции строку(либо хекс, я не уверен) и мне выдало ответ, прошу хелп
Аноним 18/02/21 Чтв 16:28:24 #404 №1945401 
>>1945399
Желательно в виде простой строки в консоль, алсо можете написать как вообще запускать си код, пока сам пойду гугллить
Аноним 18/02/21 Чтв 16:28:43 #405 №1945402 
изображение.png
>>1945395
Аноним 18/02/21 Чтв 16:31:53 #406 №1945406 
do {
scanf("%c", &stavka);
i++;
//getchar();
printf("Âû ââåëè %c\n", stavka);
scanf("%*[^\n]");


if (stavka == 'a' || stavka == 'b' || stavka == 'c' || stavka == 'q'){
flag = 0;
}
else {
flag = 1;
printf("Íåâåðíûå äàííûå ïîâòîðèòå ââîä %c %d ðàç\n", stavka, i );
}
} while (flag);
Аноним 18/02/21 Чтв 16:44:50 #407 №1945415 
>>1945399
Понял что могу онлайн компилировать и нужно видимо просто мейн функцию прописать, главный вопрос для меня
uchar __stdcall XlogDecrypt(uchar data, int *psize)
звездочка как я понимаю это указатель, как мне правильно вызвать функцию? Что в нее передавать, даже не до конца понимаю что такое uchar, указатель на символ определенно размерности? Т.е в эту функцию передаются символы, он с ними работает и возвращает тоже символы? Верно? А передавать в функцию мне нужно указатели на каждый символ, так?
Аноним 18/02/21 Чтв 16:50:18 #408 №1945418 
>>1945406
Аноним 18/02/21 Чтв 17:15:04 #409 №1945434 
>>1944519
Вроде бы надо добавить литерал L"твоястрока".
Аноним 19/02/21 Птн 00:27:27 #410 №1945837 
image.jpg
>>1944519
> Вместо
> if (pipe(fds)) err(1, "pipe");
Аноним 19/02/21 Птн 07:45:54 #411 №1945921 
>>1945434
>>1945837
Я не понимаю.
Аноним 19/02/21 Птн 09:14:29 #412 №1945943 
>>1945921
Наверно имеется ввиду переходи на светлую сторону Линух.
Аноним 19/02/21 Птн 10:55:27 #413 №1945985 
>>1945943
Нет. Я по-прежнему жду помощи в изучении обмена данными между родительским и дочерним процессами по анонимному каналу в винде.
Аноним 19/02/21 Птн 15:50:50 #414 №1946405 
>>1945399
бля, санек, я настучу твоему пм что ты на дваче ищещь решение того за что тебе в принципе на фирме платят деньги

Аноним 19/02/21 Птн 16:39:49 #415 №1946460 
>>1946405
Не знаю кто ты, даун, но мне похуй. Я, честно сказать, никого из вас в отделе за людей даже не считаю.
Аноним 19/02/21 Птн 18:42:05 #416 №1946618 
>>1946405
Я вообще мимодурачек, случайно подписался на взлом тиктока блять, уже в горле эта хуйня сидит и разбираться в си нет сил, поэтому тут спрашиваю
Аноним 19/02/21 Птн 18:59:24 #417 №1946659 
>>1946618
> взлом тиктока
Ору
Аноним 20/02/21 Суб 09:51:25 #418 №1947067 
Подскажите временную сложность free();
O(1) или O(n)?
Аноним 20/02/21 Суб 10:00:28 #419 №1947074 
doLoop.jpg
out vrong.jpg
1right.jpg
Помогите пожалуйста, почему на else проход идёт?
Аноним 20/02/21 Суб 11:07:42 #420 №1947120 
>>1947074
Ооо, по Прате что ли модифицированное задание решаешь. А зачем тебе вообще if else, если с конкретным значением сравниваешь, тут switch нужен.
Аноним 20/02/21 Суб 13:22:10 #421 №1947275 
>>1947067
Думаю если ты поймёшь, что в данном случае на самом деле означает n, у тебя отпадут вопросы.
Аноним 20/02/21 Суб 14:31:05 #422 №1947352 
>>1947120
Отдельную функцию ввода хочу сделать, а потом свитч.
Аноним 20/02/21 Суб 16:55:32 #423 №1947511 
>>1947074
Попробуй после scanf
while(getchar() != '\n') continue;
Аноним 20/02/21 Суб 17:22:06 #424 №1947553 
>>1940587
что мне нужно написать в юзерспейсе, чтобы прямо сейчас сжечь собственную мать?
Аноним 20/02/21 Суб 17:29:54 #425 №1947572 
>>1947553
Программу для расчетов и обязательно юзать avx инструкции, avx инструкции, avx инструкции, avx инструкции, avx инструкции.
Аноним 20/02/21 Суб 18:17:01 #426 №1947627 
>>1946659
да там делов-то, всего ничего, осталось только понять как сраный код на си запускать, там типы данных, которые видимо даже не инклюдяться никак и никак не обосзначаются типа алиасом, uchar, вот что за хуйня как и LOCAL
Аноним 20/02/21 Суб 23:52:49 #427 №1947975 
1613854369218.png
>>1947627
Аноним 21/02/21 Вск 12:56:48 #428 №1948252 
>>1947553
Программу для коммуникации с драйвером режима ядра. А уже в драйвере организовываешь прямой доступ к портам/памяти.
Аноним 21/02/21 Вск 13:22:12 #429 №1948290 
>>1947975
Да, я мудак, не заметил что в инклюдах не <> а ""
Аноним 21/02/21 Вск 14:07:27 #430 №1948351 
Аноны, я сейчас серьёзно, помогите мне разобраться, как записать что-нибудь в безымянный канал в родительском процессе, чтобы отправить это в дочерний по перенаправленному вводу.

Родительский процесс:
http://www.cpp.sh/2ywbo

Дочерний процесс:
http://www.cpp.sh/44jqe

В родительском процессе на 78 строке пытаюсь заменить строку на свою, статичную. Делаю это с целью разобраться, как вводить данные в канал внутри родительского процесса. Моё изменение никак не влияет на вывод. fputs что там делает с каналом? Как же записать туда свои данные?
Аноним 21/02/21 Вск 20:55:30 #431 №1948670 
Аноны, глядите, мне нужно прописать в мейкфайле правило:

(gcc $(cflags) -c prog.c -o prog.o 2>&1)
> logcompileprog.log

Таким образом, чтобы его можно было бы применять к разным сурсам (и соотвественно получать разные выходные файлы и логфайлы тоже).
Т.е. сделать нечто вроде

recipe prog.c

Есть такая возможность в мейке?
Аноним 21/02/21 Вск 22:47:22 #432 №1948734 
>>1948351
Ты пигешь на С++, обалдуй, в другой тред идуй.
Аноним 22/02/21 Пнд 07:21:46 #433 №1948856 
>>1948734
>пук
Аноним 22/02/21 Пнд 10:44:17 #434 №1948925 
>>1948734
>пук
Аноним 22/02/21 Пнд 10:48:33 #435 №1948928 
Где могут пригодиться битовые маски?
Аноним 22/02/21 Пнд 10:50:00 #436 №1948929 
>>1948928
нихуя себе что с форматированием
Аноним 22/02/21 Пнд 10:58:01 #437 №1948933 
>>1940258
>вкатиться в nasa jpl
Поступаешь в МВТУ им. Дауна на ракетную инженерию (возможно еще робототехника будет норм), ходишь в МКЦ, крутишься кабанчиком, вкатываешься в науку, идешь в магистратуру сколтеха, в аспирантуру за рубеж, там находишь нужных людей, которые тебя в nasa jpl перевезут. И вот тогда можешь начинать программировать космические корабли и марсоходы.
Но скорее всего ты проебешься и окажешься инженером-конструктором на ГКНПЦ им. Хруничева или другом менее понтовом заводе Роскосмоса, где будешь 10 лет работать за зп 50-60к.
Аноним 22/02/21 Пнд 11:12:45 #438 №1948943 
>>1948928
При битоебле, разумеется!
Аноним 22/02/21 Пнд 19:04:43 #439 №1949324 
Анончики. Решаю задачу на преобразование инт в чар. Подскажите, где же я проебываю первую цифру?

#include<unistd.h>

int main()
{
int nb = 56667;
char c[10];
int i;
int a;

i = 0;
a = 0;
if (nb < 0)
{
nb = -nb;
a = 1;
}
while (nb > 9)
{
c[i++] = (nb % 10) + '0';
nb = nb / 10;
}
c[i++] = nb;
if (a == 1)
{
c = '-';
}
while (i >= 0) write(1, &c[i--], 1);
}
Аноним 22/02/21 Пнд 19:05:30 #440 №1949325 
#include<unistd.h>

int main()
{
int nb = 56667;
char c[10];
int i;
int a;

i = 0;
a = 0;
if (nb < 0)
{
nb = -nb;
a = 1;
}
while (nb > 9)
{
c[i++] = (nb % 10) + '0';
nb = nb / 10;
}
c[i++] = nb;
if (a == 1)
{
c = '-';
}
while (i >= 0) write(1, &c[i--], 1);
}
Аноним 22/02/21 Пнд 19:33:06 #441 №1949342 
>>1949324
>c[i++] = nb;
Код ноля не прибавил
sageАноним 23/02/21 Втр 20:29:36 #442 №1950172 
>>1949324
>Подскажите, где же я проебываю первую цифру?
Пошаговое выполнение кода в средстве отладки для чего создано, а?
Аноним 23/02/21 Втр 21:32:52 #443 №1950216 
>>1950172
оно консолька(
Аноним 23/02/21 Втр 23:07:01 #444 №1950278 
>>1950216
И чо?
Аноним 24/02/21 Срд 04:22:37 #445 №1950381 
>>1950216
Ну напихал бы в исходник отладочной печати в эту консоль, ч0 как маленький?
Аноним 24/02/21 Срд 09:14:18 #446 №1950409 
>>1948933
> будешь 10 лет работать
40 при нынешнем пенсионном возрасте!
Аноним 26/02/21 Птн 12:05:06 #447 №1952046 
Пацаны, как реализовать имитацию работы в реальном времени, для сглаживающего фильтра например?
Аноним 26/02/21 Птн 21:59:24 #448 №1952745 
https://pastebin.com/y70eajE3
ЧЯНТД? Почему newList возвращает указатель на список из одного элемента, а значения полей равны нулю?
Не судите строго, только сегодня сел за более-менее серьёзное изучение.
Аноним 26/02/21 Птн 22:28:47 #449 №1952765 
>>1952046
Ну берешь и пишешь. Вроде всё ясно? Ну, пиши, чо.
Аноним 26/02/21 Птн 22:56:47 #450 №1952783 
>>1952745

ERROR: Conditional jump or move depends on uninitialised value(s)
(Stopped running after the first error. Please fix your code.)
Аноним 27/02/21 Суб 10:05:41 #451 №1952880 
>>1952745
Продолжай булимене серьозное изучение.
Аноним 27/02/21 Суб 19:16:49 #452 №1953302 
>>1952745
malloc() возвращает другой адрес с полученной памятью. head же указывает на рандомную ебань и так же будет передан вызывающей функции. Как фиксить - думой сам.
Аноним 27/02/21 Суб 21:56:32 #453 №1953416 
>>1953302
Объясни, или я твою мать выебу, пожалуйста
Аноним 27/02/21 Суб 22:31:56 #454 №1953435 
>>1953416
https://pastebin.com/1jFRM8Kc
ну если ты и сейчас не поймешь, где обосрался, то это всё нахуй, край пиздец.
Аноним 27/02/21 Суб 22:48:44 #455 №1953446 
>>1953435
и вот ищо.
https://pastebin.com/xcLfxtCU

хуй знает в каких языках такая магия может быть
Аноним 28/02/21 Вск 14:36:22 #456 №1953794 
максимальное-лоллирование.png
>>1947627
жидко пукнул с нынешних хакеров
Аноним 28/02/21 Вск 21:19:39 #457 №1954071 
Как заставить препроцессор работать дальше, если он не нашел определенный подключаемый хидер?
Аноним 28/02/21 Вск 21:44:07 #458 №1954095 
>>1953416
Ты инициализируешь указатель указателем без значения.
Аноним 28/02/21 Вск 21:49:33 #459 №1954098 
>>1954095
Либо надо было head = &current, но это некрасиво.
Аноним 28/02/21 Вск 21:50:17 #460 №1954099 
>>1954098
две звёздочкиhead = &current
Аноним 28/02/21 Вск 22:02:37 #461 №1954104 
>>1954071
1) Автоматизация. Вместо несуществующих создаются пустые файлы, и сборка по-новой запускается.
2) Написать виртуальную файловую систему.
3) Перебрать исходники препроцессора.


Аноним 01/03/21 Пнд 00:55:04 #462 №1954246 
nasa-jpl-c в треде

а накидайте практических задачек(гитхаб, литкод, реддит), где обсуждают именно то что нужно знать и уметь на СЯХ, чтобы работать в nasa/jpl ?
Аноним 01/03/21 Пнд 00:57:03 #463 №1954248 
>>1954246


типа такого чтобы было

https://trs.jpl.nasa.gov/bitstream/handle/2014/43875/11-2798_A1b.pdf
Аноним 01/03/21 Пнд 00:59:20 #464 №1954252 
>>1954246

или типа такого

https://yurichev.com/mirrors/C/JPL_Coding_Standard_C.pdf

наскок сильно надо шарить в математике и стат.анализе?

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

или нужно прям АКАДЕМИЧЕСКИ знать матешу прежде чем запускать gcc+vi ?
Аноним 01/03/21 Пнд 01:29:46 #465 №1954268 
>>1954104
За первый вариант спасибки. Я хоть и думал про такие извороты, но не мог предположить, что это называется автоматизация, а не костыли.
И теперь у меня два сценария сборки: в первом спавнится заполненный хидер, во втором пустой файл с тем же названием.
И все работае, так что еще раз спасибо.

Аноним 01/03/21 Пнд 17:24:44 #466 №1954821 
Есть где-нибудь внятное объяснение или реализация однопрошитого дерева? Пиздец какой-то с поиском инфы.
Аноним 01/03/21 Пнд 17:25:52 #467 №1954823 
>>1954821
без индусов
Аноним 01/03/21 Пнд 21:18:42 #468 №1955002 
>>1954268
Это называется автоматизация только когда скрипт запускает сборку, получает себе stderr, анализирует его регекспами, находит там несуществующие хедеры, создает их и перезапускает сборку. Я это имел в виду, если что.
Аноним 02/03/21 Втр 15:32:18 #469 №1955487 
https://pastebin.com/uUy1s59Q

Почему по достижении return'а, судя по отладчику программа зависает на последней строке функции, даёт приглашение на ввод, но при этом не возвращается в main?
Аноним 02/03/21 Втр 20:26:16 #470 №1955728 
>>1955002
Так у меня еще лучше, потому что нет перезапуска. а до регулярок я пока недорос.
>>1955487
дебагпринты, gdb. Алсо здесь четыре точки выхода, так что непонятно о достижении какого return идет речь.
Аноним 02/03/21 Втр 20:32:25 #471 №1955736 
изображение.png
>>1955728
>так что непонятно о достижении какого return идет речь
Самого первого, при инициализации корневого узла.
Аноним 02/03/21 Втр 20:59:06 #472 №1955767 
>>1953446
Блять это что за обучение нахуй такое? ПРИДУМАЛИ МАССИВЫ ИЗ СТРУКТУР И ДОЛБОЕБ ВСЁ РАВНО БУДЕТ ИСПОЛЬЗОВАТЬ ДЛЯ ЭТОГО УКАЗАТЕЛИ!
Аноним 02/03/21 Втр 21:10:40 #473 №1955773 
???.png
>>1952745
Почему так нельзя? Безопасней, проще, быстрее.
Аноним 02/03/21 Втр 21:15:36 #474 №1955776 
>>1953446
Скорее всего не аллокатор, а компиляторная оптимизация. НУ А ХУЛЕ НЕТ ТА?
Аноним 02/03/21 Втр 21:20:46 #475 №1955778 
a4b745309a8767e00aeb8d41c0ce195c.jpg
>>1955773
struct LIst {
int index;
int value;
}
Аноним 02/03/21 Втр 21:25:19 #476 №1955779 
>>1953446
Мож там просто хипы были рядом друг с другом, короче думаю так всё было:

Короче каждый раз шла аллокация 16 байтов, (2 инта + еще одна такая же структура), 8 байтов занимались, остальные оставались, шла еще такая же аллокация, на том самом месте где был указатель занимались оставшиеся 8 байтов, и так до конца, в итоге в конце остается незанятая ячейка памяти из 8 байтов. Либо куча дыр, но я ставлю на вытекание памяти. Там не используется освобождение, можно стенкой посмотреть.
Аноним 02/03/21 Втр 21:27:39 #477 №1955781 
>>1955778
struct            LIst     {
                int                   index;
           int                            value;
}
Аноним 02/03/21 Втр 21:55:12 #478 №1955797 
>>1955778
>>1955781
Уймитесь, содомиты.
X = [X|X]
Аноним 02/03/21 Втр 22:06:05 #479 №1955805 
>>1955797
Нихуя не понял
Аноним 02/03/21 Втр 22:09:19 #480 №1955811 
Как по хардкору вкатиться в неблокирующий и асинхронный I/O?
Сам пишу не на си, просто есть очень большое желание понять, как оно там внутри все работает. Нужно в сторону poll/epoll смотреть? Есть какие-нибудь годные гайды или книги?
Аноним 02/03/21 Втр 22:18:03 #481 №1955823 
>>1955811
Почитай любые книжки по ядру: как шедулер работает, как процесс блокируется... На этом фоне poll - простенькая надстройка.
Аноним 02/03/21 Втр 22:19:45 #482 №1955825 
>>1955823
А с чего начать? Я сам студент, курс по осям будет только осенью, да и вряд ли там сильно глубоко в ядро залезем.
Для начала курс на степике может пройти, а потом книжки по ядру ОС почитать?
Аноним 02/03/21 Втр 22:20:06 #483 №1955826 
>>1955797
Объясни в чем суть двух постов и как ты это понял?
Аноним 02/03/21 Втр 22:23:26 #484 №1955829 
>>1955736
Инициализация должна проходить успешно: посмотри внимательно тайпдефы и декларации, или скинь их.
>>1955767
Ну линкед листы это довольно весело для обучалок.
>>1955779
Там всегонавсего каждую итерацию инициализировался новый нод который не привязывался к предыдущему.
Да, самые обыкновенные меморилики.

Аноним 02/03/21 Втр 22:27:53 #485 №1955834 
>>1955829
Как правильно линкед листы делать?
Аноним 02/03/21 Втр 22:41:43 #486 №1955846 
>>1955829
Ааа ему надо было сначала аллокацию головному ноду сделать.
Аноним 02/03/21 Втр 22:42:42 #487 №1955847 
>>1955778
Где смеяться?
Аноним 02/03/21 Втр 22:47:16 #488 №1955849 
>>1955834
head = malloc(sizeof(node));
init(head);
for(crt=head;;) {
crt->next = malloc(sizeof(node));
crt = crt->next;
init(crt);
}
crt->next = 0x00;
Аноним 02/03/21 Втр 22:54:28 #489 №1955850 
Хочу написать калькулятор с ГУИ или приложуху какую нибудь бесплатную, например пробежки отслеживать. В планах использовать ГТК+.
Этого хватит? Дефолтного тутора хватит на сайте гнома? Или книжку взять?
А то хочется отвлечься от монотонной зубрежки, вообще пишу всякие задачки на сторонних ресурсах, но там тоже монотонность. Хочется написать что нибудь уже.
Аноним 02/03/21 Втр 23:01:55 #490 №1955854 
>>1955849
Хуя круто как. И понятно.
Аноним 02/03/21 Втр 23:04:15 #491 №1955855 
>>1955811
>Как по хардкору вкатиться в неблокирующий и асинхронный I/O?
Если тебе прям на уровне epoll/C надо... Ну тогда напиши для начала какой-нибудь простенький HTTP-сервер на блокируемых сокетах. Все реквест-хедеры пропусти, отдай клиенту статус, Content-Type и Hello, World! У тебя будет маленький исходный код, с которым уже можно экспериментировать. А то как так, сей в глаза не видел, но хочу сразу в ядро и шедулер. Там до шедулера у многих серьезных кодеров типа конструкторов всяких golang и nodejs проблемы возникали, типа как лучше распространить асинхронность на потоки, чтобы ядра проца не простаивали.

>>1955850
>Этого хватит?
Попробуй и поймешь.
Аноним 02/03/21 Втр 23:28:13 #492 №1955865 
>>1955849
я ща сдохну от испанского стыда
Аноним 02/03/21 Втр 23:58:29 #493 №1955876 
>>1955829
>Инициализация должна проходить успешно: посмотри внимательно тайпдефы и декларации, или скинь их
Вероятно основная проблема в том, что в main инзерты вызываются внутри цикла с передачей им в качестве аргумента адрес i-того элемента массива типа Data

for(int i = 0;i < 5;i++) Insert(&my, arr(i));
Аноним 03/03/21 Срд 00:01:26 #494 №1955879 
>>1955876
Просто если адрес обычных переменных Data (не массивных) передавать в несколько копипастнутых строчек Insert, то всё нормально работает.

Insert(&my, &a);
Insert(&my, &b);
Insert(&my, &c);
Insert(&my, &d);
Insert(&my, &e);
Аноним 03/03/21 Срд 00:12:47 #495 №1955882 
>>1955876
>арр(ай)
ты пердеашь сам эленметн ,н5 адреs.
нужн0 воТ так вот :
ампарсанд арр(ай); илии арр плюс ай.
Аноним 03/03/21 Срд 00:15:28 #496 №1955883 
>>1955882
Там есть амперсанд, неправильную версию вписал.
Аноним 03/03/21 Срд 00:49:19 #497 №1955903 
>>1955883
А прикинь, каково кодировать malloc, ведь ты не можешь сделать malloc(sizeof node), потому что у тебя еще нет malloc.
Аноним 03/03/21 Срд 00:57:00 #498 №1955908 
>>1955903
а елсе у меня етсь ммап() и брик(), но ищо нет маллок() что тт на эт0 скажеw)))
>>1955883
ты гдкт на%уивертел в дефейнах N обьевляшках. сматри туда
Аноним 03/03/21 Срд 01:03:43 #499 №1955910 
>>1955908
>а елсе у меня етсь ммап() и брик(), но ищо нет маллок() что тт на эт0 скажеw)))
Блок с длиной -1 в дереве, если не хватает, то растим память. Но тут какая-то хуйня в треде вообще творится. С готовым malloc не можем дерево построить.
Аноним 03/03/21 Срд 01:07:50 #500 №1955912 
>>1955910
Здесь не в маллоке дело, а именно в цикле, т.к если просто переменные передавать, то всё нормально, все указатели на выделенные участки памяти на месте. Инсерт просто на корневом ноде останавливаться .
Аноним 03/03/21 Срд 09:00:46 #501 №1955965 
>>1955865
4to ne tak?
Аноним 03/03/21 Срд 11:30:50 #502 №1956088 
image.png
Доброе утро, котятки.
Аноним 03/03/21 Срд 11:57:26 #503 №1956111 
a4b745309a8767e00aeb8d41c0ce195c.jpg
> хидеры
> инзерты
> брик
Аноним 03/03/21 Срд 13:49:52 #504 №1956257 
>>1956111
>Головной
>Вкладыш
>Кирпич
Аноним 03/03/21 Срд 14:37:58 #505 №1956334 
image.png
>>1956111
Аноним 04/03/21 Чтв 06:49:57 #506 №1956980 
>>1956257
Цефал
Аноним 04/03/21 Чтв 20:05:30 #507 №1957520 
Анонче объясните что мне gcc наоптимизоровал?
Нахуе здесь безусловный переход на следующую иструкцию?
Аноним 04/03/21 Чтв 21:01:43 #508 №1957584 
>>1957520
Ололо, это C166?
Уровень оптимизации какой?
Аноним 04/03/21 Чтв 21:44:53 #509 №1957647 
>>1957584
avr
-Os

Итак у меня есть программа, которая генерирует MISRAC код из блок-диаграмм. Есть драйвера и прочие пляски с регистрами написанные мной. Я могу взять и поменять блок диаграммы и перегенерировать код, так что допиливать что-то в автоматическом коде тупо - быстро сотрется.


Есть неиспользуемый файл Task0.c (сгенерированый):
...
void Task0(void){
_simple_float_calc();
return;
}

Task0() не вызывается нигде

Есть определение функции в другом файле(тоже сгенерированном):
void _simple_float_calc(void){
многокод;
}

Есть вызов _simple_float_calc в каком-то месте ОДИН ЕДИНСТВЕННЫЙ ВО ВСЕЙ ПРОГРАММЕ (call 0x154)

Нахуй он сгенерировал Task0() если она не используется?
Нахуй он спиздил мои 4 байта памяти и 3 такта процессора?

inline на _simple_float_calc() поставить не могу потому что уже объяснил почему.

Ща попробую в в мейке написать чтоб удалял Task0.c перед началом веселухи.

Сука мне чтобы влезть в 8кб не хватает 40 байт карл


Аноним 04/03/21 Чтв 21:56:39 #510 №1957665 
>>1957647
Ну да, остаётся удалить этот файл. Нахуя сгенерировал? Ну раз есть глобальная функция - должен быть код. Их по идее может убирать умный компоновщик, но я дед и ни разу им не пользовался.
Аноним 04/03/21 Чтв 22:01:01 #511 №1957673 
>>1957665
там такая программа которая генерит таски под autosar или как void void функции. просто не генерировать низя...
Аноним 04/03/21 Чтв 22:32:10 #512 №1957722 
>>1955767
А в Сях вообще нужна эта инкапсуляция?
И почему без перекота?
Аноним 05/03/21 Птн 01:06:44 #513 №1957825 
В чем разница между clock_t и time_t?
они полностью идентичны, или clock() возвращает время процесса, в то время как time() - календарное время?
Аноним 05/03/21 Птн 01:21:32 #514 №1957831 
>>1957825
time() возвращает календарное время
clock() возвращает время с момента запуска программы
Аноним 05/03/21 Птн 08:02:48 #515 №1957890 
>>1957825
Ну почитай доки ептыть. Слоск возвращает число таймерных прерываний, пришедших во время выполнения программы.
Аноним 05/03/21 Птн 10:56:23 #516 №1957957 
>>1957890
>>1957831
Это понятно. мне интересно, клоки/время с TASK_INTERRUPTIBLE тоже зачисляется?
Аноним 05/03/21 Птн 12:10:33 #517 №1958009 
>>1957957
> TASK_INTERRUPTIBLE
Чего? У нас тут С.
ПЕРЕКАТ Аноним 05/03/21 Птн 21:32:51 #518 №1958626 
>> 1958625
>> 1958625
>> 1958625
>> 1958625
>> 1958625
ПЕРЕКАТ Аноним 05/03/21 Птн 21:33:51 #519 №1958628 
Замечательно. Попробуем еще раз!
>>1958625 (OP)
>>1958625 (OP)
>>1958625 (OP)
>>1958625 (OP)
>>1958625 (OP)
comments powered by Disqus

Отзывы и предложения