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

Ответить в тред Ответить в тред
Check this out!
C Programming Language #67 /clang/ Аноним # OP 08/01/21 Птн 20:41:22 19049541
C Propaganda.jpg 1965Кб, 2000x2610
2000x2610
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ https://wandbox.org/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль, с диффами)
- Последний черновик ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2583.pdf (октябрь)

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

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard и http://web.archive.org/web/20190213011655/homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

https://github.com/kozross/awesome-c

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

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

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

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

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

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

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

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

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

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

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

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

Самофикс: разная размерность типов - не UB, а просто неопределенность, зависящая от платформы, разумеется.
Аноним 09/01/21 Суб 15:52:28 190553912
>>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 190554413
>>1905539
двач удаляет звездочку, ну вы поняли короч, что 'звездочка.txt' это все файлы с расширением txt
Аноним 09/01/21 Суб 16:23:16 190558814
09/01/21 Суб 16:37:11 190560215
>>1905539
>аналог линуксовой команды find
Хуясе ты ибанат))00)
Find может даже твою мать найти и трахнуть прямо в консоле.
Аноним 09/01/21 Суб 16:43:29 190561016
Снимок экрана 2[...].png 72Кб, 909x664
909x664
>>1905602
Ну это хорошо, в нашем случае версия упрощенная, остальной функционал я сам уж.
>>1905588
спасибо, это решает мою задачу. Так то у меня проект написан, основная ебля была с тем, чтобы искать все файлы, то бишь аналог звездочка.txt реализовать.
Еще вопрос.
Как добиться вывода в таком виде? Просто не очень понимаю, как динамически такие штуки делать.
Аноним 09/01/21 Суб 18:04:05 190568917
>>1905610
Обмазать счетчиками и ифами. Ничего сложного.
Аноним 10/01/21 Вск 03:25:46 190629218
Пишу по-фану файловый менеджер. Соответственно для открытия файлов нужно вызывать nano/vim/etc...

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

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

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

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

А в чём проблема сделать строку с нужными аргументами и вызвать system ("$EDITOR путь-к-хуйне")
Аноним 10/01/21 Вск 08:22:50 190634520
Есть один тупой вопрос, извините: в чистом си можно объявить и инициировать массив с нулями? На стаковерфло пишут, что можно int i[n] = {0}; но у меня компилятор не пропускает.
Аноним 10/01/21 Вск 08:44:38 190634621
>>1906345
У тебя компилятор не пропускает потому скорее потому что n не константа
Аноним 10/01/21 Вск 09:25:55 190634722
>>1906346
n - переменная, в неё значение до этого считается. Прикрутить фор и забивать им нули - решение неочинь, да?
Аноним 10/01/21 Вск 09:28:26 190635023
>>1906347
Ты не можешь без фокусов в си создать массив размером с переменную.
В любом случае почему бы тебе не написать конкретную ошибку компилятора
Аноним 10/01/21 Вск 10:12:34 190635924
>>1906347
memset(arr, 0, sizeof(arr));
Либо же для массива, объявленного где-то и переданного в функцию:
memset(arr, 0, sizeof(×arr) × length);
Аноним 10/01/21 Вск 15:14:52 190648025
>>1905237
В чем Раст новатор так это в удобных названиях для точных типов, мне кажется в C людям просто лень вбивать uint64_t и PRId64, SCNd64, и все просто пользуются long long и прочими стандартными типами. Ну Расту было проще, не надо было поддерживать legacy. Я ждал, что кто-то недостатки перечислит такого подхода как я выше описал, но мне кажется даже если код выкладывать с такими забиндеными Растовыми типами вместо uint64_t, то все даже очевиднее будет, чем разбирать все эти (num)_t в конце, просто u64 и ничего лишнего.
Аноним 10/01/21 Вск 15:15:28 190648126
>>1906480
PRIu64, SCNu64 соответствуют uint64_t фикс*
Аноним 10/01/21 Вск 15:33:20 190649527
>>1906480
Это да, названия отбитые. Тут уже вопросы к дедушкам, какого хрена они не сделали жесткую размерность типов, а нахуевертили черти что.
Аноним 10/01/21 Вск 18:15:14 190669528
>>1906495
>какого хрена они не сделали жесткую размерность типов
Мультиплатформенный язык программирования. У разного железа разные размерности.
А растоговно, как и любая скриптопараша, работает само в себе, в своем манямирке, безотносительно железа, поэтому там и можно сделать одно фиксированное навсегда и навезде.
Аноним 10/01/21 Вск 18:26:39 190670629
>>1906695
Все всегда можно сделать фиксированным. Вопрос в том, как оно будет адресоваться и сколько инструкций потребует для выполнения.
Аноним 10/01/21 Вск 18:31:04 190671230
>>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 190672131
>>1906712
А еще бывает short = int. Тоже прекрасно.
Аноним 10/01/21 Вск 18:44:51 190672832
>>1906712
Людям не нужна разрядность. Людям нужен тип целое число. Например количество аргументов в строке, количество строчек в меню.
Разрядность нужна единицам байтоебов с хитрыми битовыми алгоритмами.
Аноним 10/01/21 Вск 18:49:27 190673333
>>1906728
Людям надо знать, сколько в их целое число поместится. А то можно сделать int, а окажется, что он размером в два байта и хопа - переполнение.
Аноним 10/01/21 Вск 18:52:47 190673834
Аноним 10/01/21 Вск 18:52:47 190673935
>>1906733
Вот когда окажется что тебе нужно большое целое, тогда ты возьмешь long.
Аноним 10/01/21 Вск 18:54:43 190674036
>>1906738
Ну и опять мы возвращаемся к тому, что нужно указание размерности.

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

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

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

Скриптомакака - как плохой начальник. Не знает и не понимает что делают подчиненные и срать хотел. Его волнует только результат "чтобы было сделано, ведь нужно отчитаться перед высшим начальством/заказчиком/инвесторами". А что там у работников, которые это реалдьно делают, емук позуй, какая у них нагрузка, и вообще. Он делает так, если сделано, хорошо, если не сделано, надо нанять других, кто может, а этих уволить.
Вот и у скриптомакак такое же отношение к компьютьеру. Если не работает, нужно выкинуть компьютер и заменить на новый, коиторый сможет.
Аноним 11/01/21 Пнд 04:50:50 190702939
>>1907027
> Если не работает
Если не справляется
Аноним 11/01/21 Пнд 04:54:00 190703040
download (1).jpeg 9Кб, 252x200
252x200
>>1907027
> int соответствует железу
> Си язык программирования железа
> ПУК СРЕНЬК АЛГОРИТМ CRC32 не работает потому что на этом железе int 16 битный
Аноним 11/01/21 Пнд 09:00:08 190705541
Аноним 11/01/21 Пнд 09:42:32 190706042
>>1907030
Что не так?
Шаблон порвало, ньюфак?
Аноним 11/01/21 Пнд 13:37:55 190723543
>>1907027
Разговор не о том, что нефиксированные типы не нужны, а о том, что фиксированные очевидно нужно было делать из коробки, а не костылем сбоку.
Аноним 11/01/21 Пнд 14:10:53 190725944
Размеры типов устанавливает производитель процессора, и естественно руководствуется исключительно прибылью, а не соответствием стандарту.
https://news.ycombinator.com/item?id=3112704
Аноним 11/01/21 Пнд 14:26:43 190728145
>>1907235
В этом языке все реализуется костылем сбоку
Аноним 11/01/21 Пнд 15:39:46 190744346
>>1907235
Пердопроблемы. В винде всю жизнь есть DWORD, BYTE и т.д. Пользуйся наздоровье, всё из коробки.
Аноним 11/01/21 Пнд 15:57:03 190746647
>>1907443
Единственное, что в винде нормально сделали. И то названия всратые. DWORD это сколько, блядь? Раньше это было 16 бит, щас в MSDN написано, что это 32.
Аноним 11/01/21 Пнд 16:07:14 190747448
>>1907466
Так, я обосрался. Это раньше слово было 16 бит, двойное 32, а сейчас слово 32, но DWORD==32 оставлен из соображений совместимости.
Аноним 11/01/21 Пнд 16:14:39 190748849
>>1907466
>DWORD это сколько, блядь?
sizeof() в помощь. А вот пихать цифры в названия типов это плохая идея, слова лучше запоминаются и меньше путаются и мельтешат.
Аноним 11/01/21 Пнд 19:15:08 190763450
>>1907488
u64 плохо запоминается?
Аноним 11/01/21 Пнд 20:20:47 190775651
Как в мейкфайле прописать клинер, чтобы мейк не срал в stderr, типа файл хуйня.с не найдет в директории?
Аноним 11/01/21 Пнд 20:52:12 190779452
Аноним 12/01/21 Втр 01:14:39 190795953
Можно ли вкатитьсы в си без корочки? Что "учи язык" - это понятно. Но си ж низкоуровневый, нужно трогать штуки, опасно близкие к фатальной ошибке. Дипломированное знание устройства компа обязательно или шансы есть? Подводные? Истории успехов?
Аноним 12/01/21 Втр 02:08:09 190797854
>>1907959
Можно запросто, в 80-е 12-летние песдюки вкатывались даже в ассемблер - такие потом игры писали на продажу. Читай книжки, их для начала достаточно.

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

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

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

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

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

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

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

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

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

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

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

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

#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 190810162
>>1908097
Найс код скопировался конечно
Аноним 12/01/21 Втр 10:18:25 190810263
>>1908097
А зачем ты 1 раз и потом еще n раз малочишь арр?
Аноним 12/01/21 Втр 10:20:38 190810464
>>1908101
А, ну перезаливай.

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

int main()
{
\t printf("test\n");
}
[/code]
Аноним 12/01/21 Втр 10:23:47 190810765
>>1908104
Найс, поставил эту вашу макабукоду.
Аноним 12/01/21 Втр 10:31:12 190811666
>>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 190811767
>>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 190811868
>>1908116
Да снова нормально не скопировалось
Аноним 12/01/21 Втр 10:49:48 190811969
Аноним 12/01/21 Втр 11:09:10 190812570
>>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 190814671
>>1908125
То есть сортировка строк из двумерного массива в алфавитном порядке без изменения исходного массива.
Аноним 12/01/21 Втр 12:49:08 190817372
Ты бы лабу хоть отформатировал.
Аноним 12/01/21 Втр 15:58:18 190830373
>>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 190831774
>>1908303
Хуя тебе печет от сишки
Аноним 12/01/21 Втр 17:05:18 190833075
>>1908303
> Этот проект по описанию просто идеален для Go
Сборка мусора вызовет непредсказуемые задержки в передаче видео. Я хоть и обеими руками за гошечку для микросервисов, но тут она явно не к месту. Для своего сервера я выбрал сишку именно по этой причине.

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

> Может где и востребованы, а в наших ебенях (ДС, то есть) сишный мидл получает 70к
Я же написал: сишные боги. В яндексе/мейле/етц топовый сишник стартует с 200k и идет дальше. Это я тебе как экс-яндексоид говорю.
Аноним 12/01/21 Втр 17:36:51 190834676
>>1908330
Топовый пхпшник лол сука тоже с 200к стартует, только он вообще не ебет что такое память, потоки, процессы и так далее, тупо пишет дтохи, контроллеры, говносервисы да говновалидацию да в базу лазает.
Аноним 12/01/21 Втр 17:48:53 190835177
>>1908346
Сишку стоит изучить только ради того, чтобы таким тупым говном не заниматься
Аноним 12/01/21 Втр 17:52:56 190835378
>>1908351
Кому что, многим ебать байты не уперлось, а вот писать бизнес логику на пыхе норм. Совершенно разные задачи.
Аноним 12/01/21 Втр 18:08:09 190837979
>>1908353
Очевидно что этим людям нужно сидеть в пхп треде, а не расказывать нам как им неинтересна сишка
Аноним 12/01/21 Втр 18:13:07 190838680
Говнопрогер на пыхе решил изучить итерналы своего языка и понял, что зенд енджайн написан на сишке. Бля, поцоны, а реально на си работу найти? Меня заебала уже эта пыха, хоть вешайся...
Аноним 12/01/21 Втр 18:28:45 190841681
>>1908379
Так речь вообще о другом шла.
Аноним 12/01/21 Втр 18:34:54 190842782
>>1908346
Я ничего не знаю о рынке пхпшников, но мне кажется что топовый должен как раз знать сишку, чтобы фиксить ядро этого говна. Имхо, за пхп можно получать столько только если удачно примазаться на старте и сидеть сеньером в техкомитете, либо работая на западного барина. Кто вообще наймет пхпшника-онли с улицы за что-то большее 100к?
Аноним 12/01/21 Втр 18:42:29 190843683
>>1908427
> Кто вообще наймет пхпшника-онли с улицы за что-то большее 100к?
Любая крупная компания у которой есть бэк на пыхе?
Аноним 12/01/21 Втр 19:15:34 190847084
>>1908436
Не, ты не понял мой вопрос. Допустим, в компании есть бек на пыхе. Зачем компании нанимать пыхомакаку за зарплату больше миски риса, если кроме пыха она ничего не умеет?

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

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

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

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

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

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

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

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

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

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

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

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

Толковость появляется от опыта работы. Если годами json`ы перекладывать, то понятно, можно до седых мудей таким не стать. Если вписаться в технически сложный проект и не сидеть в нем до скончания времен, то опыт и наберется.
Аноним 12/01/21 Втр 20:22:59 1908545103
>>1908541
А тут уже вопрос, чем именно ты хочешь заниматься. Если маркетплейсами - то да, необходимость почти нулевая. А если какой-нибудь сверхвысокий асинхронный хайлоад (r) (c) (tm), то там это нужно. Деньги уже другие, разумеется. Полмиллиона и выше.
Аноним 12/01/21 Втр 20:25:10 1908548104
>>1908545
А уже 500к+, ставки повышаются.
Аноним 12/01/21 Втр 20:26:00 1908551105
>>1908548
Долбиться в глаза прекращай, тебе говорят.
Аноним 12/01/21 Втр 20:28:03 1908554106
Аноним 12/01/21 Втр 20:30:29 1908555107
Аноним 12/01/21 Втр 20:33:00 1908557108
Ну и к чему вы в итоге пришли? Нахуй было спорить, если вы кроме своего мнения других не приемлите..

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

как в codeblocks или в терминале єто делать?
Аноним 13/01/21 Срд 10:09:03 1908890110
>>1908502
>Что до моего личного определения "нормального бекендера" - это человек, который не только может что-то писать на каком-то языке, но понимает еще и тонкости оптимизации, сеть, ось и умеет в архитектуру. При необходимости может пойти и попатчить ядро или любой опенсорс, чтобы решить свою локальную проблему.
Ты таких ИРЛ вообще встречал хоть раз?
Аноним 13/01/21 Срд 12:51:14 1908948111
>>1908890
Да
Причем без шуток. Знакомый погромист и либы чужие патчил, когда находил дефекты в них, и архитектурой занимался, оптимизацией производительности, а сам по себе мастер по написанию кода для бэкэнда.
Аноним 13/01/21 Срд 15:51:24 1909066112
>>1908890
Да. Работал с такими челиками в разных командах. Как правило после рашкинских компаний они перекатываются куда-то в более интересные места. Например, челик со знанием сей, плюсов, питона и тонкостей сетей (плюс цисок, жуниперов и хуевеев) укатился в спейсикс. Другой челик с таким же набором - в фейсбук. Родственник мой пилил распределенные системы. Ну и я тоже, т.к. работал в упомянутых командах. Я в сетях особо не разбираюсь, но у меня прокачан скилл проектирования архитектуры и распределенных систем. Укатился в свой софтово-железячный стартап.
Аноним 13/01/21 Срд 18:07:44 1909171113
>>1909066
>в свой пиздобольский угол
пофиксил, не благодари!
Аноним 13/01/21 Срд 18:13:45 1909175114
>>1909171
Если ты - дно, то не думай, что тут все такие же, манька.
Аноним 13/01/21 Срд 18:46:55 1909211115
>>1909175
не плакай, стартапер-архитектор-двачер
Аноним 13/01/21 Срд 19:01:29 1909224116
Аноним 13/01/21 Срд 19:17:07 1909239117
image.png 374Кб, 757x477
757x477
>>1909211
В чем проблема, маня?
Аноним 13/01/21 Срд 19:24:08 1909257118
Аноним 13/01/21 Срд 21:52:19 1909388119
Аноним 14/01/21 Чтв 02:21:39 1909600120
>>1909388
Перемешивает биты в числе особым образом, чтобы вышло число с симметрией относительно центра? Хуй знает, запутанный обмен, лень разбираться больше 5 минут, такое прямо в IOCCC отправлять после должной доработки, лол.
Аноним 14/01/21 Чтв 15:30:04 1909873121
Как внутри printf() вывести еще функцию чтобы получилось что-то вида printf(fn(), fn2(), fn3())?
Аноним 14/01/21 Чтв 15:49:12 1909890122
Аноним 14/01/21 Чтв 15:56:11 1909896123
Чем вы быстрее плюсов? Зачем вы вообще нужны?
Аноним 14/01/21 Чтв 16:59:10 1909930124
>>1908097

Потому что хуйня какая-то. Зачем ты малок засунул в фор, что ты пытаешся сделать?
Аноним 14/01/21 Чтв 18:34:15 1910016125
>>1907027
Мне кажется, что такой подход был уместен, когда были архитектуры условно 16-битные и 15-битные, 32-битные и 27-битные, двоичные и экспериментальные троичные.
Но когда на ПК int 32-битный, а на ардуине 16-битный и алгоритм перестаёт работать, то это плохо.
Аноним 14/01/21 Чтв 19:45:27 1910080126
image.png 297Кб, 1100x616
1100x616
Аноним 15/01/21 Птн 04:27:42 1910423127
Безымянный-файл[...].jpg 258Кб, 1200x898
1200x898
Если в буфер размером K прочитать поток размером N, то N-K байт останутся в стдин (например по exit() вылезут в консолечке).
Аноним 15/01/21 Птн 05:33:42 1910432128
42oh6fa3crq21.jpg 1513Кб, 3024x4032
3024x4032
Capture.PNG 761Кб, 521x701
521x701
>>1910016
Да, такой подход не уместен, он единственно возможен, ибо других не может быть.
Посмотри на пики. Есть два робота, большой и маленький, и язык программирования роботов. Ты пишешь команду:
>сделать_шаг();
В результате, оба робота должны одинаково сделать шаг, и похуй что первый робот выполнит поставленную задачу - раздавить вон того тупого еблана вроде тебя слева, а второй шагнет на пару сантиметров и ничего не добьется. Это нормально, так и должно быть. А вот игнорировать спецификации роботов и хотеть чтобы любой робот одной командой выполнял одинаковую задачу, т.е. одной командой первый робот просто делает шаг, а второй разбегается, подпрыгивает, достает нож и втыкает его в шею цели, т.к. весом убить еблана не может, зато задача выполнена. Такая поебень - не программирование, и никому не нужна, кроме тупых ебланов, которых надо вычистить как вредные органические отходы, заражающие планету.
Аноним 15/01/21 Птн 17:10:49 1910808129
>>1910432
Бред. Современный мир омонополен несколькими крупными производителями микроэлектроники и все они двоичные, а их регистры в большинстве своём кратны восьми и являются степенью двойки. И очевидно, что каждое 32-битное число, когда к нему добавляется 1 должно либо увеличено на единицу, либо переполнено и обнулено. А когда один и тот же тип ведёт себя как сумасшедший на разных машинах, это очень плохо. Представь, написал ты машине variable++, а она вместо того, чтобы увеличить значения на единицу, вызывает rm -rf /*. Нарушаются все принципы, которые только можно.
Зачем вообще в таком случае программировать на сижке, если можно сразу на ассемблере? Там и изучения спецификации машин, и библиотеки можно оптимизировать под готовые инструкции. В одной машине не будет инструкции для синуса и придётся функцией посчитать. А в другой будет, но значение плюс-минус 0.1, ещё и рандомное каждый раз, потому что считается через аналоговую электронику. Вот будет веселье программисту! Все графические и физические движки будет переписывать на ассемблер. Настоящее программирование, как положено настоящему мужику!
Я не мужик, так что я такое не выбираю. Мои алгоритмы должны работать одинаково на всех машинах. Чтобы один и тот же код можно было запустить хоть на ПК, хоть на микроконтроллере и он исполнился правильно.
И, даже, на разных типах, для чего в современных языках программирования есть дженерики и темплейты (сишные макросы до них не дорастут).
То, что ты описал не нужно нормальным людям, но я не считаю, что вас надо уничтожать. У вас есть право на своё мнение и вы можете заниматься байтоёбством сколько хотите.

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

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

Гораздо опасней существование в языке unsigned.
Аноним 16/01/21 Суб 06:40:50 1911480133
джава и оопе - некст абстракшен левл. всё.
Аноним 16/01/21 Суб 15:34:17 1911791134
Почему функция принимающая двумерный массив по сигнатуре может принять одномерный массив в качестве аргумента и и разместить его как первую строку?
Аноним 16/01/21 Суб 16:59:09 1911937135
>>1911791
В си нет двумерных массивов в полноценном смысле (например вида [ , ])
Так что по сути у тебя массив массивов.
Аноним 16/01/21 Суб 17:06:01 1911951136
image.png 77Кб, 705x767
705x767
>>1911937
Я знаю. Функция по сигнатуре принимает переменную хранящую указатель на указатель. Но поему-то в качестве аргумента можно просто прописать указатель на строку и он запишется в локальный массив указателей на указатели т.е в двумерный массив функции. По-моему это какая-то очень неочевидная хуйня.
Аноним 16/01/21 Суб 17:07:36 1911955137
image.png 23Кб, 452x208
452x208
>>1911951
переменную хранящую указатель на массив указателей
фикс
Аноним 16/01/21 Суб 17:16:09 1911971138
>>1911951
Короче в качестве аргумента был передан одномерный массив, но поему то он автоматически был записан в первую строку локального двумерного.
Аноним 16/01/21 Суб 18:41:18 1912041139
C помощь read как-то можно считать символы не передвигая при этом позицию в файле? То есть записало в строку, но при следующем read начинало бы с того-же места?
Аноним 17/01/21 Вск 02:29:47 1912357140
>>1910808
братишь, занимаешься графикой?
Аноним 17/01/21 Вск 02:33:22 1912359141
>>1910843
ты какой-то обиженка
есть железо, есть алгоритмы - в чем проблема? Одно без другого - как ручка без чернил (ну или чернила без ручки)
Нам как фронтендеры нужны с их красивыми сайтиками, или питонисты с их джанко и мл
так и хардварники с их управлением памятью, оптимизацией и прочим
выпей уже таблеток, а?
Аноним 17/01/21 Вск 02:34:16 1912361142
>>1910959
> Гораздо опасней существование в языке unsigned.
поясни плз
Аноним 17/01/21 Вск 03:58:07 1912386143
>>1912361
Скорее всего он имеет в виду, что при декременте оно не может уйти в отрицательные числа и вызовет где-нибудь переполнение.

Вообще было бы здорово иметь возможность отлавливать такое, как с делением на ноль.
Аноним 17/01/21 Вск 03:59:16 1912387144
>>1912041
fseek или lseek
Читать и возвращать позицию на количество прочитанных байт.
Аноним 17/01/21 Вск 05:44:36 1912424145
maxresdefault.jpg 44Кб, 1280x720
1280x720
maxresdefault.jpg 96Кб, 1280x720
1280x720
>>1912361
Поясняю: пикрил 1 - опасно; пикрил 2 - безопасно.

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

ХЗ, давно не писал на Си, но вроде как хорошим тоном считается использовать int32_t/uint32_t
Аноним 17/01/21 Вск 11:57:06 1912492149
Аноним 17/01/21 Вск 12:24:00 1912502150
>>1912492
Без ассемблера возможно понять?
Аноним 17/01/21 Вск 12:39:30 1912505151
16034677706730.jpg 10Кб, 200x200
200x200
Аноним 17/01/21 Вск 12:54:14 1912515152
kKqHfJnYZs4-b-a[...].jpg 165Кб, 1079x1233
1079x1233
БЛЯТЬ, поясните нюфаку чем всё-таки опасны эти ваши овер/андерфлоу? Я раньше думал, что соседние байтики и битики страдают, но как оказалось, это не так.
>>1912424
>Поясняю: пикрил 1 - опасно; пикрил 2 - безопасно.
И первое, и второе - опасно, если воткнуть в анус.
Аноним 17/01/21 Вск 13:06:01 1912528153
>>1912424
>Возможность есть, отлавливай наздоровье.
Это про interrupt_overflow?
Аноним 17/01/21 Вск 13:13:14 1912536154
kitty.jpeg 51Кб, 750x646
750x646
>>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 1912540155
>>1912536
f() и g() должны прокнуть. Что не так?
Аноним 17/01/21 Вск 13:24:18 1912547156
16034677706730.jpg 10Кб, 200x200
200x200
>>1912540
Печатает только g (GCC с оптимизацией или без).
Аноним 17/01/21 Вск 13:37:33 1912575157
nope.png 90Кб, 764x481
764x481
Аноним 17/01/21 Вск 14:51:19 1912710158
>>1912515
Тем что это UB (undefined behaviour) то есть компилятор может считать что ты написал некорректный код и выкинуть его или поменять на другой. Хуже того, вся программа считается UB.
Аноним 17/01/21 Вск 15:08:18 1912737159
>>1912710
>Тем что это UB (undefined behaviour)
А где здесь ЮБ? Если сегментация не нарушается, а переполнение только-только зажигает OF и сама память меняет значение с TYPE_MAX на TYPE_MIN (и наоборот). Я конечно понимаю, что такое посредственно может вызвать перезапись буффера (например записать 0х7ff байт вместо одного), но эта проблема вроде как отдельно решается.

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

Это как? Конпелятор будет предугадывать или даже вычислять, что там случится в рантайме? Меня траллируют, да?
Аноним 17/01/21 Вск 15:32:25 1912783160
setjmp
Аноним 17/01/21 Вск 16:23:59 1912869161
>>1912737
UB в ящыке Си, никаких О флагов в языке не существует. Это не ассемблер.
Аноним 17/01/21 Вск 20:03:02 1913222162
yoba.png 5Кб, 129x129
129x129
>>1912710
Конпелятор делает оптимизации, которые меняют поведение кода в случае переполнений.
Вот это
> if (i+1<0)
может заменить на
> if (i < -1)
сэкономив одну инструкцию.
Подставь maxint на место i. Первый иф будет истина, второй ложь.
Аноним 17/01/21 Вск 22:45:28 1913495163
Стикер 0Кб, 512x512
512x512
>>1913222
>if (i < -1)
То есть при -1 все ок?))))
Аноним 17/01/21 Вск 23:06:43 1913531164
>>1912433
Обыкновенно. Включи голову: int не отлавливает переполнение, значит что нужно сделать? Нуууу!? Конечно же написать свой manyaint который будет отлавливать. Ты программист или кто? Кто еще за тебя будет программировать твои маняхотелки, кроме тебя самого? Язык имеет все средства для реализации чего угодно, так что вперед и с песней.
Аноним 18/01/21 Пнд 08:53:09 1913856165
image.png 118Кб, 288x254
288x254
>>1913531
Бля, охуительная история. Я думал ты что-нибудь умное расскажешь, а ты предложил навернуть абстракцию поверх обычной переменной.
Аноним 18/01/21 Пнд 11:15:20 1913924166
image.png 14Кб, 747x194
747x194
Почему прога не робит? Я просто блять тупой и не понимаю, схуяли доступа на изменение массива нет?
Аноним 18/01/21 Пнд 13:25:06 1914002167
>>1913924
>>1913924
Не шарю за сихи ваши, мб потому что s продекларирована но проинициализирована?
Аноним 18/01/21 Пнд 13:56:57 1914022168
>>1913924
А что ты передаешь в функцию? "stroka", я угадал?
Аноним 18/01/21 Пнд 14:33:31 1914065169
Аноним 18/01/21 Пнд 14:38:08 1914071170
>>1913856
>дайте мне абстракцию, мам
>ну на, держи
>бля, охуительные истории, абстракцию предлагают
С дефектами мышления в программировании делать нечего.
Аноним 18/01/21 Пнд 14:40:18 1914076171
>>1914022
Кстати да, есть вероятность что он передает внутрь строку указателем из .data, из-за этого ловит сегфолт.
Аноним 18/01/21 Пнд 17:26:27 1914207172
>>1914071
Где ты в моем сообщении увидел слово "абстракция", клоун?

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

Вот именно, пиздуй из профессии. Мало ли что ты там увидишь в следующий раз в коде, вдруг тебе послание с нибиру мерещиться начнет.
Аноним 18/01/21 Пнд 17:34:32 1914220173
sshot-2021-01-1[...].png 9Кб, 433x269
433x269
Аноним 18/01/21 Пнд 18:45:36 1914341174
Аноним 18/01/21 Пнд 18:51:37 1914356175
>>1914220
компилятор поменяй
Аноним 18/01/21 Пнд 18:58:34 1914366176
>>1914341
Ну, дебилом бы я тебя не назвал. Просто не очень умный.
Аноним 18/01/21 Пнд 22:33:26 1914606177
>>1906345
Читай что такое динамическое выделение памяти, а конкретно calloc.
Аноним 19/01/21 Втр 17:46:05 1915393178
>>1913924
Stephen Prata, C Primer Plus
Chapter 11: Character Strings and String Functions
Досконально раздраконена тема, просто досконально. Прочитай и все вопросы про массивы/ссылки/строки отпадут начисто.
Аноним 19/01/21 Втр 17:48:22 1915401179
descent.jpg 36Кб, 640x480
640x480
Надеюсь здесь сидят шарящие анончики.
Вопрос тупой, и мне заранее стыдно, но не у кого спросить.
Смотрю на сорс моей любимой игрули детства:
https://github.com/videogamepreservation/descent
ГДЕ ТОЧКА ВХОДА?
Типа main.c или что-то такое?
Аноним 19/01/21 Втр 18:30:21 1915433180
>>1915393
Не отпадут.
передача одномерного массива в функцию с параметром двумерного-кун/тян
Аноним 19/01/21 Втр 19:10:07 1915492181
>>1915433
>передача одномерного массива в функцию с параметром двумерного-кун/тян
Шизоид?
Аноним 19/01/21 Втр 19:15:08 1915504182
Аноним 19/01/21 Втр 19:31:28 1915519183
>>1915401
MAIN/INFERNO.C если я не ошибаюсь
Аноним 19/01/21 Втр 19:43:40 1915528184
>>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 1915787185
sshot-2021-01-1[...].png 120Кб, 952x428
952x428
Для сишечки оказывается есть простенький вывод графики через эту библиотеку http://openbgi.sourceforge.net Можно даже игру небольшую накодить.
Аноним 19/01/21 Втр 23:08:56 1915795186
Аноним 19/01/21 Втр 23:16:18 1915801187
>>1915795
Да, вывод получается очень медленный, но зато кодить просто - для начального нубоуровня сойдет.
Аноним 20/01/21 Срд 00:28:15 1915865188
>>1915528
>Descentr.exe should be built in the main subdirectory.
Ну и нахуй мне экзешник? Я же про код спрашиваю.

>>1915519
Лол, точно
int main(int argc,char argv)
Аноним 20/01/21 Срд 03:25:35 1915962189
20/01/21 Срд 06:47:48 1916062190
>>1915962
Тем, что про него даже гугл не знает.
Аноним 20/01/21 Срд 12:13:58 1916151191
Аноним 20/01/21 Срд 15:47:15 1916309192
>>1916151
>MiniLibX
Всегда удивляло, откуда берут такое васянское говнище (поддерживает даже BSD! ебать) без нормальной документации, сделанное на коленке даунами, которое даже скомпилироваться не может нормально?
Аноним 20/01/21 Срд 21:46:39 1916662193
Аноним 22/01/21 Птн 00:04:31 1917661194
>>1916662
> Вот это говнокод, пиздец
Вся суть. Раньше писали крутые игры, а теперь пишут красивый код и дрочат на историю комитов, на тесты, на линтеры... что угодно, только бы не заниматься делом.
Аноним 22/01/21 Птн 09:28:54 1917847195
>>1917661
Можно писать красивый код и не дрочить на коммиты. Лично я обмазываюсь линтерами из параноидальных соображений.
Аноним 22/01/21 Птн 17:15:43 1918182196
sshot-2021-01-2[...].png 27Кб, 419x439
419x439
>>1915787
Закодил змейку. Пипец сложновато. Ели кто хочет оценить уровень говнокода, то архив с бинарниками и исходниками прилагаю в картинке.
Аноним 22/01/21 Птн 18:23:27 1918229197
>>1918182
как это в картинке?
Аноним 22/01/21 Птн 18:30:58 1918236198
>>1918229
Ну типа как рар-жипег, только это зип-пнг.
Аноним 22/01/21 Птн 18:39:32 1918249199
>>1918236
а как ты так сделол
Аноним 22/01/21 Птн 18:53:53 1918255200
>>1918249
Раньше каритнку и архив склеивали просто вместе. Но сейчас хитрый Абу что то там нашатал и теперь его макаба вырезает все архивы у раржипегов. Сейчас надо разобраться в структуре формата джипег или пнг, покурить документацию, и встраивать архивы в подходящие для этого места внутри файла. Я так сделол.
Аноним 22/01/21 Птн 19:28:22 1918280201
>>1918255
Ах тыж вредоносный анон
Аноним 22/01/21 Птн 19:41:09 1918293202
15142286142860.png 240Кб, 738x405
738x405
>>1916309
>без нормальной документации
>скомпилироваться не может нормально
Так и пиши что не осилил
Аноним 22/01/21 Птн 19:46:31 1918300203
mcpp.PNG 301Кб, 339x423
339x423
Аноны, пиздец тупой реквест, но тем не менее.
Хочу Borland C/С++ IDE настроить на win10.
Какие варианты? Вроде нагуглил сборку от Раджеша Шрияпутры, но хуй я позволю этому говну ступить на мой пека.
Аноним 22/01/21 Птн 20:01:54 1918320204
2n9pt8.jpg 46Кб, 600x450
600x450
Аноним 23/01/21 Суб 08:41:04 1918898205
Если возвращать объекты из сегмента данных или стэка, то энивей будет ЮБ? Следовательно возвращать можно только кучу?
Аноним 23/01/21 Суб 08:41:47 1918899206
>>1918293
Пиздос какие страшные куклы!
Аноним 23/01/21 Суб 12:43:25 1918966207
>>1918898
Что такое сегмент данных в Си?
Аноним 23/01/21 Суб 12:44:50 1918968208
>>1918898
Что почитать чтобы стать таким же умным как ты?
Аноним 23/01/21 Суб 12:52:45 1918973209
>>1918898
А вот в каком сегменте си размещает структуры?
23/01/21 Суб 16:56:34 1919191210
Подскажите, плез, как быстро заполнить поля структуры, указанной по линку?

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 1919194211
А тут кроме юмористов, кто-то ещё остался?
>>1918968
Ветхий Завет и Кернигана&Ритчи.
>>1918966
Всё что декларировано за пределами функций.
>>1918973
Где объявишь, там и разместит.
23/01/21 Суб 22:32:36 1919421212
>>1919191
(type){ initializer }, зовется compound literal.

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

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

>>1919194
> кто-то ещё остался
Мне кажется, что тред себя исчерпал или вся борда?. Но кое-кто остался, и они иногда еще отвечают.
Аноним 24/01/21 Вск 05:13:26 1919684213
Аноним 24/01/21 Вск 10:50:13 1919779214
>>1919684
Функцию инициализации напиши. Все равно понадобится если будет увеличение объема данных или например будешь их грузить из файла.
Аноним 24/01/21 Вск 11:45:28 1919837215
14489889778220.jpg 48Кб, 1130x879
1130x879
Аноним 24/01/21 Вск 15:20:02 1919976216
Аноним 24/01/21 Вск 22:13:09 1920356217
Для вирусня ориентированного кодинга что читать/изучать?
Аноним 24/01/21 Вск 22:57:29 1920387218
Аноним 25/01/21 Пнд 18:36:19 1921470219
Я правильно понимаю, что по скорости расклад такой?

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 1921474220
>>1916309
Деды вообще документаций не писали и ничего не оставляли кроме пары комментариев. Хочешь пользоваться? Сам правь исходники и исправляй ошибки. Иначе как все развиваться будет то, если до тебя все было написано, тут значит идеальная ситуация.
Аноним 25/01/21 Пнд 21:39:54 1921699221
>>1921470
int i; пиши в начале функции, это сэкономит время на выделение регистра!
Аноним 25/01/21 Пнд 22:12:21 1921724222
>>1921470
В 1980-м, да. Если сегодня, то смотри выдачу компилятора, удивишься.
Аноним 26/01/21 Втр 23:59:42 1922759223
Тред живи.
Аноним 26/01/21 Втр 23:59:45 1922760224
>>1921470
Обратный цикл всегда быстрее будет. Так как меньше затрат на вычисление переменной i.
Аноним 27/01/21 Срд 01:55:53 1922819225
Кто нибудь обьясните что делать с глобальными переменными. Есть одна глобальная переменная в .h файле. Писал прогу на маке и все было бы прекрасно, но дома у меня линукс и при попытки линковки одного и того-же кода, который работал на маке, выдает ошибку о множественных включениях этой переменной. Перепробовал различные варианты external, но все еще не линкуется. Кто нибудь поясните по полочкам что да как тут, в .c или .h файле писать и прочее...
Нет, избавиться от глобалки не могу, используется везде, я умру бегать по куче файлов\функций передавая одну переменную
Аноним 27/01/21 Срд 02:08:54 1922829226
>>1922760
При обнулении битов электричества меньше тратится?
Аноним 27/01/21 Срд 04:34:12 1922906227
2021-01-27.png 57Кб, 1920x1080
1920x1080
Аноним 27/01/21 Срд 05:23:19 1922923228
>>1922819
Pragma once не является стандартом, поддержка зависит от компилятора.
Аноним 27/01/21 Срд 05:24:47 1922924229
Ты же в курсе что такое хедер гарды?
Аноним 27/01/21 Срд 07:21:18 1922948230
>>1922819
Глобальная переменная должна жить в какой-то одной единице трансляции.

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

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

>>1922923
Все компиляторы уже лет 10 его поддерживают, норм.
Аноним 27/01/21 Срд 07:35:25 1922953231
>>1922948
Почему тогда у него на маке работает, а на линуксе нет?
Аноним 27/01/21 Срд 09:31:55 1922974232
Аноним 27/01/21 Срд 10:52:33 1923017233
>>1922953
Полгода назад зарелизился новый GCC, в котором отпилили поддержку глобальных переменных в хедере. Оно как бы работало, но так нельзя было делать. Теперь вообще нельзя. Вероятно на маке еще не дошли до этого. Делай как говорит этот анон >>1922948
Аноним 27/01/21 Срд 12:32:10 1923074234
>>1922923
Прагма тут вообще не при чем: что с ней, что с ifdef'ами у него глобалка объявляется в каждом .c-файле, включающем хедер.
Тут скорее интереснее, каким образом на маке "всио собиралось".
Аноним 27/01/21 Срд 14:55:08 1923243235
Почему у меня каждый раз полукаются макароны из функций?
Где почитать как более менее нормально программировать?
Каждый раз настроение от этой хуйни падает.
Аноним 27/01/21 Срд 15:20:10 1923262236
>>1923243
Посмотри исходники реального софта типа ZSH и узбагойсо.
Аноним 27/01/21 Срд 15:23:59 1923266237
Аноним 27/01/21 Срд 16:06:59 1923328238
>>1922829
Ну сравнить одно число с другим и определить какое больше это две разные операции, мне кажется четкое сравнение быстрее будет, чем побитовое решение где больше, а где меньше, хотя хз
Аноним 27/01/21 Срд 17:02:26 1923449239
>>1923243
>макароны из функций
Тащи пример
Аноним 27/01/21 Срд 17:23:36 1923490240
>>1923243
> Почему у меня каждый раз полукаются макароны из функций?
Большие функции или много маленьких?
> Где почитать как более менее нормально программировать?
Ядро bsd, linux.
Аноним 27/01/21 Срд 17:57:55 1923522241
>>1923490
Когда хочу добавить новый функционал, то не могу просто написать все в новую функцию, приходится редактировать старые функции тоже. Получается все размазанно по всей программе и добавлять новый код все сложней и запутанней.
Аноним 27/01/21 Срд 18:14:20 1923540242
>>1923522
Это все придет с опытом, без этого никак. А вообще, читай "Чистый код", "совершенный код" и тому подобное. Принцип SOLID. Язык Си конечно низкоуровневый и не очень выразительный, поэтому провоцирует слишком закапываться в детали реализации - в других языках там бы просто гонялись объекты взад вперед, а каждая функция занималась только своей маленькой задачей.
Аноним 27/01/21 Срд 18:58:40 1923592243
>>1922906
Убери прагму или замени на каноничные ифдефы.
Ругается сс glob.c main.c func.c ?
Аноним 28/01/21 Чтв 00:22:14 1923934244
>>1923243
Рассматривай каждую функцию как один маленький модуль.
С нулевой зависимостью от макросов, глобальных переменных. Здесь лучше расширять интерфейс, нежели увеличивать зависимость от ебеней. На нижнем уровне пишешь из таких вот функций, на верхнем - из больших процедур.
Аноним 28/01/21 Чтв 20:51:31 1924625245
1354948987654.png 878Кб, 1280x720
1280x720
>>1904954 (OP)
Особо не надеюсь, но может кто то подскажет название. Читал в сосничестве около десятка лет назад книжку. Там всякие советы по написанию кода были. Половина книжки была про Си вторая про плюсы.
Аноним 28/01/21 Чтв 21:57:01 1924697246
>>1924625
Книгам место в сортире. Чтобы познать дао, надо писать и читать код ядра.
Аноним 28/01/21 Чтв 22:47:57 1924724247
>>1924697
Дай ссылку на код ядра.
Аноним 29/01/21 Птн 00:14:44 1924783248
>>1924697
>Чтоб поесть говна, надо писать и читать код ядра.
Аноним 29/01/21 Птн 01:26:47 1924839249
>>1924697
>надо писать
и что там писать? MMU?
Аноним 29/01/21 Птн 10:58:16 1924962250
Герберт Шилдт -[...].png 679Кб, 368x512
368x512
Аноним 29/01/21 Птн 21:20:26 1925564251
изображение.png 2703Кб, 1911x2776
1911x2776
Существует ли сабж в электронном виде? После его же книги по С++ покупать не хочется, а посмотреть интересно.
Аноним 30/01/21 Суб 03:50:09 1925744252
Аноны, учу С# используя visual studio 2019. Проблема в том, что использую 2 разных компьютера в разных местах. Если возможность запихнуть проекты в подобие облака? Ебался с гитхабом, но толку мало, проект туда с одного компа запихнул, а как его вытащить на другом компе не понял.
Аноним 30/01/21 Суб 12:29:17 1925896253
>>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 1925899254
>>1925896
git add можно без .
git init projectname создаст папку отдельную, если хочешь в этой же папке стартануть, то просто git init

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

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

Бля, дебилы, делают UB в "проверке", "предотвращающей" UB, компилятор удаляет "проверку"
-- РРЯЯ, конпелятор меня ненавидит!
Аноним 30/01/21 Суб 19:53:06 1926433257
Аноним 30/01/21 Суб 21:28:39 1926542258
>>1904954 (OP)
Господа, посоветуйте атомарный инкремент/декрементдля size_t, ну чтоб переносимый. Спасибо.
Аноним 30/01/21 Суб 21:38:55 1926552259
>>1926542
Самый тупой способ - бахнуть 2 статические инлайн функции для инкремента и декремента в заголовочнике, внутри функций детектить компилятор через условную компиляцию и сделать вызов нужных builtin функций для атомарных операций из нужного компилятора. Подключаешь заголовочник - есть переносимые атомики для size_t. Как-то так.
Аноним 31/01/21 Вск 17:53:34 1927179260
>>1904954 (OP)
Есть один uint32.
Как узнать, сколько всего битов в нем равны единице?
Короче говоря, нужна функция, которая бы брала аргументом uint32 и выдавала число битков в нем.
Пока что на ум приходит только простым перебором, типо 32 раза сдвигать число, проверять первый бит и если единица инкрементировать счетчик, но может есть более быстрые и рациональные способы?
Аноним 31/01/21 Вск 17:58:35 1927183261
>>1926552
>статические инлайн функции
Помню как то прогал давно на с89 и нужна была инлайн функция для быстродействия, но компилятор её не поддерживал.
Единственным способом задать инлайн функции (в том числе и с аргументами) получилось только через макрос.
Аноним 31/01/21 Вск 18:08:48 1927192262
Аноним 31/01/21 Вск 20:53:03 1927333263
>>1927179
__builtin_popcount и подобные
Аноним 31/01/21 Вск 22:15:00 1927381264
>>1927179
Это реально в какой то задаче понадобилось? Или это просто в универе задание со звездочкой?
Аноним 01/02/21 Пнд 01:05:17 1927487265
Братушки поясните особенности в динамическом и статическом массиве на пальцах. Типо одно используют для того второе для другого потому что так и так.
Я заебался смотреть 20 минутные видосы и хуй поймёшь.
Я так и не понимаю почему иногда массив чаров я могу отправлять в функцию, а иногда выходит ошибка. Или что почитать. Или только в процессе драк с компилятором можно привыкнуть к синтаксису?
Аноним 01/02/21 Пнд 02:56:37 1927522266
Кто то может пояснить, есть ли на си нормальные готовые библиотеки? Хочу вкатываться и писать простой хакерский софт
Аноним 01/02/21 Пнд 04:08:10 1927527267
>>1927381
Бывает нужно если число используется как битовая маска

Например у тебя есть массив объектов, и массив uint32 который используется как маска какие объекты активны, какие нет. И тебе нужно посчитать сколько объектов активны.
Аноним 01/02/21 Пнд 04:54:36 1927534268
>>1927487
И то, и то кусок памяти. Один определен в секции в исполняемом файле, а какой-то выделяется в рантайме. Разница только в выделении и освобождении(если требуется) этой памятьи.
Вполне возможно ты где-то с синтаксисом ошибся.
Аноним 01/02/21 Пнд 10:22:07 1927607269
>>1927381
В некоторых протоколах минимальный контроль ошибок делается выставлением бита четности.
Аноним 01/02/21 Пнд 13:11:47 1927737270
>>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 1927809271
Программисты, а вы счет древних русов знаете?
Аноним 01/02/21 Пнд 15:15:43 1927948272
>>1927737
Будто я знаю зачем тебе это. Поставь себе задачу и думай как ее решить лучше.

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

Я хочу двумерный массив забить ноликами. Чяднт?
Аноним 01/02/21 Пнд 18:12:10 1928155275
>>1928150
Может в чар инт пишешь?
Аноним 01/02/21 Пнд 18:28:51 1928180276
Вместо звёздочек поставил 'ж'
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 1928183277
>>1927973
Это если какой нибудь уарт программируешь, а когда надо послать целиком битый пакет для проверки?
Аноним 01/02/21 Пнд 19:05:42 1928236278
>>1928180
Используй
for i... for j... a[i@x+j] = 0;
Аноним 02/02/21 Втр 00:28:40 1928482279
>>1927179
Переведи его в двоичную систему исчисления через рекурсию, либо через циклы, сложи результаты в массив, как я помню с помощью рекурсии у тебя все как надо сложится, а в цикле сам смотри как. Ну и посчитвй единицы в числе. Как пример.
Аноним 02/02/21 Втр 06:40:56 1928558280
>>1927179
>более быстрые
Если память - не проблема (не жёсткий эмбеддед), то самое быстрое будет таблица на 64к с заранее расчитываемыми при старте программы (ну или например при компиляции если кресты, или захардкодить) значениями числа битов для всех двухбайтовых чисел. Тупо берешь пару чисел по индексу верхних и нижних двух байт твоего числа и складываешь.
Аноним 02/02/21 Втр 06:58:59 1928561281
Аноним 02/02/21 Втр 07:40:38 1928566282
>>1928561
Ну ок, если 64к не влезет, пусть будет таблица на 256 чисел и складываем 4 числа, а не 2.
Аноним 03/02/21 Срд 04:08:05 1929405283
>>1928566
Зачем если есть инструкция в процессоре?
Аноним 03/02/21 Срд 06:28:59 1929425284
>>1929405
Гарантируешь, что есть в любом процессоре?
Аноним 03/02/21 Срд 07:20:42 1929430285
>>1929425
В любом десктопном есть
Аноним 03/02/21 Срд 07:49:16 1929434286
Аноним 04/02/21 Чтв 13:39:14 1930354287
>>1928180
>я хочу двумерный массив забить ноликами
Не понял твоего кода вообще, но вот решение.

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

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

Это VLA (Variable Length Array), если хочешь попроще то просто замени ptr[][side] на ptr[][4], но потеряется гибкость и тебе все равно придется передавать side как формальный аргумент, так что смысла в этом мало.
Аноним 06/02/21 Суб 20:49:44 1932610288
>>1928180
>array[++j] < x
могу ошибиться, но ты сравниваешь адрес с интежером. о чем тебе и вопит конпелятор
Аноним 06/02/21 Суб 22:08:13 1932681289
Наверняка платина, но вдруг у кого есть решение. Коротко говоря хочу такой макрос #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 1932749290
>>1932681
Я думаю ты перерос Си
Аноним 07/02/21 Вск 00:59:13 1932805291
>>1932681
Имя типа по объекту, насколько я понимаю, можно только в С++ получить. Хотя возможно gcc предоставляет какой-то спрятанный builtin_type_name для C. Но в документации пусто об этом.
Остальное вроде не проблема, по типу VA_ARGS с двумя подчеркиваниями в начале и в конце, указатель на объект кидать первым аргументом во все функции, ну и функции накидать с нужными именами.
Аноним 07/02/21 Вск 14:41:20 1933193292
Посоветуйте годную бесплатную IDE для С, типа Анаконды для пайтона?
Аноним 07/02/21 Вск 15:02:05 1933212293
>>1933193
VS community, Xcode чем не устраивают?
Аноним 07/02/21 Вск 15:23:53 1933243294
>>1933212
>VS community
Visual Studio Code в смысле? Я просто перекатываюсь с пайтона на С/С++ для числовых вычислений, не особо разбираюсь в обстановке. Научных дистрибутивов типа Анаконды, я так понимаю, для С нету.
Аноним 07/02/21 Вск 15:52:30 1933290295
>>1932805
>>1932749
Ну, вдруг охуенное решение есть, а я ни ухом не рылом. Спасибо в любом случае.
Аноним 07/02/21 Вск 15:53:32 1933294296
>>1933290
Попробуй кодогенерацию.
Аноним 07/02/21 Вск 15:54:41 1933296297
>>1933243
Нет, VS community это Visual Studio версии Community (а не платный энтерпрайз и прочее)
Visual Studio Code это вообще блокнот с продвинутой подсветкой и плагинами, то есть другое.
Аноним 07/02/21 Вск 16:04:25 1933311298
9781466569676.tif 388Кб, 806x1200
806x1200
>>1933296
Ок, спасибо. Как я понимаю, я устанавливаю VS community, открываю книгу Праты и начинаю знакомство с основами, а после этого можно будет перейти и к другим специфическим вещам типа пикрила, да?
Аноним 07/02/21 Вск 22:08:50 1933675299
Аноним 07/02/21 Вск 22:42:26 1933685300
>>1933675
>Code-Block иде
О, спасибо, а то я начал устанавливать VS community, выбрал Clang-компилятор, а там сразу до десятка Гб на жестком диске затребовало, которых у меня нет.
Аноним 07/02/21 Вск 23:24:11 1933706301
>>1933685
Так удоли игры и порнуху
Аноним 08/02/21 Пнд 00:20:13 1933738302
>>1933706
У меня на диске С места нету (дома компьютер старый, всего 30 Гб на диске С, свободно 2), а VS community туда почему-то лезет, даже если я все устанавливаю на диск D.
Аноним 08/02/21 Пнд 00:44:40 1933758303
>>1933685
ставь мс-компилятор
Аноним 08/02/21 Пнд 05:08:55 1933820304
Допустим я хочу подучить ассемблер и попиздиться с gcc. Если я реализую одну и ту же функцию на сишке, а потом на ассемблере, то как проверить какая из них быстрее? С флагом -O3 вызовы функции в main либо просто оптимизируются, либо результат вычисляется предваритально. Да и если в цикл эти функции обернуть, то там наверное какое-нибудь кэширование будет на низком уровне, неестественно ускоряющее работу функций, но я в этом не разбираюсь.
Аноним 08/02/21 Пнд 08:25:25 1933891305
>>1933820
google benchmark, ну или сам напиши свой бенчмарк через rdtsc или QueryPerformanceCounter в винде
Аноним 08/02/21 Пнд 10:18:49 1933966306
СУКА ЕБАНАЯ СИДЕЛ ВЕЛОСИПЕДЫ НАХУЙ ИЗОБРЕТАЛ БЛЯТЬ НАХУЙ ЛУЧШЕ НА БУМАГЕ НАХУЙ НАЧИНАТЬ ЧЕМ СИДЕТЬ ПО 2 ЧАСА РЕШАТЬ ЛЕГКУЮ ХУЙНЮ
Аноним 08/02/21 Пнд 10:21:41 1933970307
>>1933820
Проверяемую функцию - в отдельный файл.
Аноним 08/02/21 Пнд 10:23:33 1933972308
>>1933706
Удалил игры и порнуху кстати, уже 2 недели не играю просто сижу пишу код и бегаю. Не могу отпустить Си сука такой интересный язык, а деньги зарабатывать надо и деньги кончаются что делать сука стать бомжом с макбуком?
Я весь год сидел занимался Сишечкой, вон в игры вкатываюсь но как оказалось знание физики и математики нужно чтобы получалось годно, а еще алгоритмы и структуры данных. Но я 9 классник, планирую поступать в какую нибудь шарагу при техническом вузе или заканчивать 10 и 11. Благо к деградаций интерес исчез и всё что я делаю это код и учеба


Аноним 08/02/21 Пнд 10:25:17 1933974309
>>1933972
А да, че высрался то, ребят я хотел заработать деньги на вебе, я долбоеб же да? Или у меня есть перспективы всё таки зарабатывать без корочки на Сишечке и плюсах на учёбу и покушать?
Аноним 08/02/21 Пнд 10:26:29 1933976310
Прастите что сру своим говном никому нахуй не нужным, тред Си мне ближе всех что есть из интернет ресурсов, кроме конеш какой нибудь плеромы
Аноним 08/02/21 Пнд 10:28:19 1933979311
Аноним 08/02/21 Пнд 10:29:58 1933981312
> 9 классник
Репорт.
Аноним 08/02/21 Пнд 10:35:41 1933988313
>>1933981
23 летний 9 классник
Аноним 08/02/21 Пнд 13:15:47 1934134314
>>1932681
Охуеть чувак ты крут.
Аноним 08/02/21 Пнд 13:16:01 1934135315
>>1933974
Для веба тебе тоже диск понадобится под ноду.
Аноним 08/02/21 Пнд 13:20:01 1934138316
>>1934135
Извини, диск? Или ты имеешь ввиду освоить как следует Си выше уровня вкатывальщика (На данный момент я разбираю ресурсы на awesome c, и параллельно вот уже заканчиваю Прату) и вкатываться в веб?
Аноним 08/02/21 Пнд 15:07:43 1934290317
>>1934138
Я имею в виду что для веба тебе тоже придется купить новый диск, потому что там очень раздутые инструменты по десятку гигов. Голый хтмл в блокноте там не котируется, тебе придется пачками выкачивать либы зависимостей.
Аноним 08/02/21 Пнд 15:26:50 1934305318
>>1934290
А всё понял. Спасибо за совет дружище. Если интересно. Я все таки продолжу глобальное изучение C, пока не изучу всё что связано. И попробую работу найти, а там если получится то в плюсы.
Аноним 08/02/21 Пнд 21:05:17 1934783319
бля, поцонва
короче вопрос к вам всем (если увидете это сообщение в Си треде - не обессудьте, похожий вопрос просто)
короче я вот школотрон 23 лет, в этом году заканчиваю шарагу
в ООО РогаИКопыта я занимался топовыми задачами, связанными с железом (ну всм не один тянул проект, а в команде в роли ждуна) типа датчиков в металургии, контроллеров приводов и прч штуках
занимался этим два года
но есть трабл - в этой конторе даже у руководителей зп 45-50, у меня ее вообще нет - чалюсь там только из-за кайфа работы с реальным железом и я вот хочу сменить профессию
но смотрю на хабр карьеру/ххру - пиздец
из ОЙТИ одни жанги\спинг\датасосист
А в си одни НИИУУПГУИПМС, где с зп, думаю, также
че, все вообще плохо? я зря учился роботов программировать 6 лет бля?
Аноним 08/02/21 Пнд 22:03:19 1934847320
>>1934783
Кент в НИИХУЯ за 100+к погромирует и там это не предел
Но это правда в ДС
Аноним 08/02/21 Пнд 22:55:52 1934898321
>>1934847
я в дс
а он в каком нии? сильный данон, если скажешь?
Аноним 09/02/21 Втр 00:41:27 1934978322

Аноним 09/02/21 Втр 09:11:18 1935050323
А подскажите где можно почитать про использование компилятора?
пока варианты такие man gcc, глава в прате programming mechanics. В КиР вроде нет про это.
Мне немного надо, прост ликбез для курса в шараге.
Аноним 09/02/21 Втр 11:14:34 1935083324
1.jpg 210Кб, 907x1360
907x1360
2.jpg 186Кб, 907x1360
907x1360
4.jpg 155Кб, 1103x1360
1103x1360
5.jpg 220Кб, 1103x1360
1103x1360
Аноним 09/02/21 Втр 14:10:56 1935253325
Аноним 09/02/21 Втр 18:15:13 1935588326
Экспериментирую с функцией fopen с параметром r+b, в неё сохраняю строку с fwrite, буфер с 1024 битами. Как вообще двигаться по записям внутри файла если используешь бинарный режим? С помощью этого самого буфера? Мол, нужна запись, берешь её индекс и двигаешь указатель файла с константой буфера? Или как? А удалять как, интересно? Размер буфера должен быть неизменяем, т.е при любых обстоятельствах быть 1024?
Аноним 09/02/21 Втр 18:19:38 1935599327
>>1935083
Мимокрок

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

мимо
Аноним 10/02/21 Срд 09:58:12 1936321332
>>1936001
Какой ман? Какие таблетки? Конкретику пожалуйста.
Аноним 10/02/21 Срд 10:05:01 1936322333
>>1936318
Посмотрел на hh и indeed С/С++ эмбеду в ДС платят 150-300К в мес, сибирь 60-120, на востоке 80-150. Поляндия 7000$ сеньору.
Аноним 10/02/21 Срд 10:05:36 1936323334
>>1936204
Пошел нахуй пиздабол
Аноним 10/02/21 Срд 12:19:16 1936407335
>>1936322
>>1936090
так я в дс как раз, звучит как зп питоняки или крестовика
жаба конечно ебет
но даже 150 это хорошо (лично для меня)
главное, чтобы рост был (и знаний и зп)
поэтому я бы еще раз свой вопрос задал именно ДСникам
че по зп, столичники?
Аноним 10/02/21 Срд 14:04:09 1936626336
>>1936407
Чувак в ДС ВСË ОХУЕННО!
Аноним 10/02/21 Срд 14:08:45 1936637337
Аноним 10/02/21 Срд 16:12:13 1936784338
>>1936637
Считаю, что не стёб. В ДС и дс2 зарплаты большие даже на не очень существенных должностях.
Аноним 10/02/21 Срд 19:24:32 1936965339
>>1936637
Сука я понимаю что здесь всё мертво уже давным давно потому что с долбоебами общаться никто не хочет, но сука свои мозги то можно использовать иногда?
Аноним 10/02/21 Срд 22:21:12 1937111340
>>1936965
ты стебешься сейчас?
Аноним 10/02/21 Срд 23:40:17 1937178341
>>1936323
Это ты вот этому >>1936322 и этому >>1936318 скажи. На хх он смотрел, лол. Я ДСник говорю, что Сишники потихоньку вытесняются скриптодебилами. Ржавчина и змея, увы отъедают нишу. Эмбеддед навроде ардуины/стм32 только на западе хорошо оплачивается, но туда абы кого с курсами на юдему за плечами не возьмут.
Аноним 11/02/21 Чтв 13:53:21 1937520342
>>1937111
Твоя неуверенность над тобой стебется.
Аноним 11/02/21 Чтв 15:41:25 1937614343
>>1937520
бля мне кажется, что ты стебешься надо мной
Аноним 11/02/21 Чтв 15:41:53 1937615344
>>1937178
ну хз чел
у меня 150 зп
взяли после ООО РогаИКопыта
Аноним 11/02/21 Чтв 15:50:40 1937627345
>>1937178
тут другой вопрос, скорее, в том, что не очень то и премиальные компашки
реально концер залупки и прочее
но иногда платят, причем иногда даже неплохо
хз насколько такой опыт будет катироваться за бугром

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

Имхо, наоборот вся эта залупа только развивается
ИоТ набирает обороты, робототехника набирает обороты
появились направления у Шмяндекса, сбера
Всегда ей касперский, нвидиа, хуевей
короче хуйню сказал, все норм и сишников
мне, кстати, интересно, у байтоебов яндекс тоже спрашивает АЛГОРИТМЫ сортировки и прочее говно?
Аноним 11/02/21 Чтв 15:51:30 1937632346
Аноним 11/02/21 Чтв 21:45:28 1938155347
>>1937627
>ИоТ набирает обороты, робототехника набирает обороты
Я про ИоТ слышу уже лет 7, а про робототехнику так вообще всю жизнь.
Но на самом деле нет никакой робототехники, нет ИоТ. В РФ уж точно нет, максимум на западе стартапы есть и крупные концерны, где нужны промышленные роботы.
Аноним 11/02/21 Чтв 22:25:21 1938171348
>>1938155
согласен
но еще, пожалуй, скажу, что в сколково есть N стартапов с роботами
но вообще сколково это страна ардуино и машинного обучения ЛОЛ
Аноним 11/02/21 Чтв 23:27:47 1938201349
>>1937178
>Ржавчина и змея
А как же реалтаймовость? Если на расте еще можно как-то извернуться (и то большой вопрос как его к RTOS прикручивать), то питон сразу мимо. И да, реалтайм это в первую очередь не про скорость, а ее предсказуемость.
Аноним 12/02/21 Птн 01:46:24 1938263350
вопрос немного нерелейтед, но какой питун лучше поучить, чтобы понимать инитскрипты ядра?
Аноним 12/02/21 Птн 02:17:34 1938268351
image.png 405Кб, 796x380
796x380
Сап байтач. Есть один X220. Хочу наколхозить в него кастомный многоцветный светодиод. Например - чтобы краснел, если пинги растут или пакеты пропадают (WiFi в жопе мира, взять ложку вместо ножа не предлагать, мне интересна сама задача).

Правильно я понимаю, что мне нужно брать какой-то микроконтроллер, совмещённый с USB интерфейсом, что-то типа ATmega88, подключать его ко внутренним USB и писать драйвер?
Есть варианты проще или наоборот - совершенней и гибче?
Как получить входные команды, кроме USB?
Как бы ты это сделал?
Надеюсь, не промахнулся разделом/тредом.
Аноним 12/02/21 Птн 02:55:20 1938275352
>>1938263
systemd
какой вопрос - такой ответ
Аноним 12/02/21 Птн 02:59:09 1938278353
>>1936321
man fread
Таблетки - риспредал
Аноним 12/02/21 Птн 05:05:35 1938300354
>>1937627
Верно.
>>1937632
Вот это ваще двачую, общался с Поляком сишником, его с зубами оторвали нахуй с учебы в самсунг работать, потом его выбил кто-то в гугл, Питон не знал на момент когда общались, лол.
Аноним 12/02/21 Птн 05:10:51 1938301355
>>1938268
В радио чуваки вроде знают Си.
Аноним 12/02/21 Птн 08:26:14 1938324356
>>1907027
> алгоритмический скриптомакакинг.
> Скриптомакака - как плохой начальник.
Эк тебя разворотило. Сравнил зп настоящих интеллектуалов эмбеддеров и глупых никудышных "скриптомакак"?
Аноним 12/02/21 Птн 11:46:52 1938413357
Хотел вам вопросов задать, кто нибудь делает взносы (комиты) на гите какому нибудь проекту? Нормально ли нововышедшему Сишнику таким заниматься, или другие варианты есть?
Как новичку развиваться лучше? Писать свои проги и выкладывать на всеобщее обозрение? Олимпиады? Или же проектик какой нибудь сделать, типа часов или другой полезной утвари? Идти в контору напрашиваться или завод?
Аноним 12/02/21 Птн 12:10:33 1938434358
Аноним 12/02/21 Птн 14:29:24 1938571359
>>1938434
Неа, думаю поступать.
Аноним 12/02/21 Птн 14:55:50 1938585360
>>1938571
бля, школотрон, ты чего так на работу попасть хочешь? Конечно, обучение на работе имеет место быть, но не это обучение из рарзяда "вот структуры в си делаются ТАК, а перифирия работает ТАК" - это все уник + свои доп занятия. К моменту выхода на работу ты максимум должен быть не очень знаком со стеком (специфичный проц, мб какая-нибудь задроченная архитектура системы)
лучше поступить на соотвествующую кафедру и там хреначить курсовые нормально, а не "чтобы сдать"
при условии, что ты найдешь годного научника, проекты могут быть и правда серьезными
Кстати советую не проебывать микропроцессорную технику
если же по каким-либо причинам тебе прям нужно пойти на работу (ну вдруг родители не могут содержать, это норм), то, конечно, пет проекты топ.
Но если тебя твои смогут до 3 курса содержать, то лучше наберись знаний на курсачах + петика
а с 3 курса уже дерзай
Аноним 12/02/21 Птн 15:24:07 1938617361
image.png 51Кб, 408x234
408x234
Аноним 12/02/21 Птн 20:04:38 1938920362
??????????-????[...].jpg 85Кб, 706x638
706x638
Как получить родительскую структуру? parentof() и containerof() карочи.
Аноним 12/02/21 Птн 20:32:07 1938936363
Аноним 12/02/21 Птн 21:07:30 1938967364
>>1938268
Если под прыщами, то через псевдофс /proc. Можно напрямую общаться. Скрипт на питоне с гуи можно запиздячить. Си + gui либы tk/gtk так же легко пишуться.
Аноним 12/02/21 Птн 21:18:32 1938992365
>>1938936
А что именно "да"? я просто спрашивал, как ее имплементировать. а то для меня подобные трики, словно поиск нарика по шприцу, оставленному в заброшенном толчке пару недель назад.
Аноним 12/02/21 Птн 21:20:55 1939002366
image.png 585Кб, 480x640
480x640
>>1938967
Ух ты, вот это тема. Програмную часть понял, буду пробовать, как контроллер приедет.
Не ждал ответа, репостнул в rа.
Спасибо!
Аноним 12/02/21 Птн 21:22:15 1939005367
>>1938268
взял бы платку arduino
(писать под нее можно и на с)
с usb. настроил бы на ней uart
написал бы консольную прогу
которая через com порт будет
общаться с этой ардуиной
и приговнякал бы к ардуинке
этот разноцветный светодиод
Аноним 12/02/21 Птн 22:03:56 1939026368
image.png 419Кб, 768x538
768x538
image.png 221Кб, 492x460
492x460
>>1939005
>взял бы платку arduino
Ну это совсем на поверхности идея. Но выглядеть будет совсем вырвиглазно. Хотелось бы чего-то компактнее.

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

На втором пике контроллер с USB на борту, его должно хватить.
Аноним 12/02/21 Птн 22:52:14 1939070369
>>1939026
>Хотелось бы чего-то компактнее
хакнуть встроенный диод?
Аноним 12/02/21 Птн 23:05:58 1939080370
image.png 362Кб, 500x375
500x375
image.png 761Кб, 730x546
730x546
>>1939070
>хакнуть встроенный диод?
Да, например. Решение красивое и аккуратное, если с исполнением не налажать. По аппаратной/програмной части идей нет?
Cтавлю внутрь PIC, cажаю на USB и командую им через псевдофс.
Аноним 13/02/21 Суб 01:52:37 1939184371
>>1938992
Если не в силах сам написать - погугли и скопипасть чужой макрос, в ядре Линукс точно есть container_of.
Аноним 13/02/21 Суб 06:55:35 1939250372
>>1938585
Уже не школотрон, но это подходит и под меня. Благодарю.
Аноним 13/02/21 Суб 12:25:06 1939412373
>>1939002
Пожалуйста. Изучай линукс. Для embedded, разных IoT, модулей навроде стм/ардуино — это просто кайф. Сперма/макакоось таких возможностей не имеет. И разработка простая будет, поддержка, сообщество огромное. Весьма рекомендую. Только предварительно почитай про внутреннее устройство линукса.
Аноним 14/02/21 Вск 00:04:47 1940258374
с чего начать изучение СЕЙ чтобы вкатиться в nasa jpl ?
есть ли ихние РЕЦЕПТЫ и СТИЛИ программирования?
где почитать какие ЗАДАЧИ в nasa jpl надо кодить на СЯХ?
Аноним 14/02/21 Вск 03:16:48 1940342375
Вопрос по WinAPI: Каким образом CreateProcess получает сведения о созданном до вызова этой функции безымянном канале?
Аноним 14/02/21 Вск 04:49:49 1940361376
>>1940342
Наверное таким же образом как и родительский процесс может знать pid дочернего процесса.
Аноним 14/02/21 Вск 07:56:05 1940391377
>>1939412
Я бы посоветовал виртуалочки, так безопасней экспериментировать.
Аноним 14/02/21 Вск 08:24:20 1940395378
Правду ли говорят, что питон медленный и его не стоит использовать для разработки всерьёз, и лучше вообще не учить, а учить C и ассемблер?
Аноним 14/02/21 Вск 08:44:56 1940400379
Я придумал себе такую задачку и внезапно всплыл один вопрос:

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

Что быстрее? Внутри цикла А наращивать Б, каждый раз проверяя условие, что А >= 5, или вынести наращивание Б в отдельный цикл за цикл для А и перед наращиванием Б проверить один раз, что А >= Б, но каждый раз проверять, равны ли А и Б? Я предусматриваю возможность, что по достижению цикла с Б, А может быть равно чему угодно от 0 до 10.
Аноним 14/02/21 Вск 09:12:22 1940407380
>>1940400
> придумал себе такую задачку
Заметно.
Аноним 14/02/21 Вск 09:40:17 1940417381
>>1940407
Что сказать то хотел? Зачем бессмысленный пост создавать?
Аноним 14/02/21 Вск 09:47:18 1940419382
>>1940417
>Что сказать то хотел?
Что неудавшиеся программисты идут в аналитики и пишут вот такие ТЗ, а мы типа телепаты и должны это говно разбирать.
Аноним 14/02/21 Вск 09:56:16 1940425383
image.png 305Кб, 474x477
474x477
Аноним 14/02/21 Вск 13:03:45 1940547384
>>1940400
Если А будет параметром цикла то Б надо в нем же и изменять.
Аноним 14/02/21 Вск 14:27:35 1940587385
c.jpg 93Кб, 1280x711
1280x711
>>1940391
Какие виртуалочки, от чего они меня должны спасти.
Аноним 15/02/21 Пнд 03:48:26 1941359386
fputs добавляет строку к существующим символам в файле? Если да, то как заменить, а не добавить?
Аноним 15/02/21 Пнд 04:14:55 1941366387
>>1941359
А проверить слабо?
В описании не написано об этом, значит может быть что угодно
Аноним 15/02/21 Пнд 09:20:08 1941450388
>>1940391
А я где-то писал про установку прыщей как основной системы?
Аноним 16/02/21 Втр 12:42:56 1942982389
Аноним 16/02/21 Втр 12:52:56 1943002390
>>1938155
>В РФ уж точно нет
по сути промышленная роботехника это синоним автоматизированных конвеерных линий на производстве
но при этом в россии нет собственного станкостроения сегодня вообще
в 89 году делали 120 тысяч станков, сегодня - меньше тысячи
соответственно, никакой речи о автоматизированном промышленном производстве не может идти, когда у нас нет производства обычного оборудования, лол

Аноним 16/02/21 Втр 22:46:05 1943661391
Аноны, помогите. Пытаюсь понять, как работает обмен данными по анонимному каналу, нихуя не понимаю. Дайте мне примеры родительского и дочернего процессов, с обменном значением переменной или строки между ними, я наверняка пойму что-то, прочитав пример с минимумом кода.
Аноним 17/02/21 Срд 20:11:16 1944519392
изображение.png 13Кб, 571x222
571x222
Аноним 17/02/21 Срд 22:53:43 1944653393
>>1944519
Фиксить, очевидно же
Ошибка вполне очевидная
Аноним 17/02/21 Срд 23:14:22 1944663394
>>1944653
Я не понимаю, как исправить.
Аноним 17/02/21 Срд 23:16:38 1944666395
изображение.png 6Кб, 522x86
522x86
>>1944653
Я могу только вот так, но не уверен, что не будет ошибок.
Аноним 17/02/21 Срд 23:19:07 1944669396
изображение.png 34Кб, 789x523
789x523
>>1944653
О чём я и писал. Ошибка.
Аноним 17/02/21 Срд 23:19:52 1944670397
А, я скобку забыл >>1944669. Проехали.
Аноним 18/02/21 Чтв 00:11:37 1944685398
IMG202003300058[...].jpg 107Кб, 1280x853
1280x853
Почитал про error handling и появилось несколько вопросов.
1. assert() поднимает SIGABT? Если да, то можно использовать

>signal(SIGABT, uninit);

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

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

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


Аноним 18/02/21 Чтв 00:32:27 1944696399
>>1944685
>и деаллоцировать память?
Нет. У обработчиков сигналов куча ограничение, динамическое управление памятью одно из них.
Аноним 18/02/21 Чтв 03:23:53 1944743400
>>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 1945342401
Ещё раз пытаюсь запостить картинку, так как двач дважды её не загрузил.
Аноним 18/02/21 Чтв 16:23:37 1945395402
>>1945342
Говорят надо включить где то в настройках двача remove exif
Аноним 18/02/21 Чтв 16:27:29 1945399403
Привет, аноны, я питонист, возникла необходимость запустить для теста функцию, но в си вообще не понимаю и честно говоря уже заебался за сегодня, 4-й язык который приходится осознавать за сегодня после жс, джавы, с++, вот код https://github.com/fengjixuchui/Tiktok/blob/master/douyin.c
В самом конце есть 2 функции XlogDecrypt и XlogEncrypt, скажите что написать в этом коде, чтобы передать в функции строку(либо хекс, я не уверен) и мне выдало ответ, прошу хелп
Аноним 18/02/21 Чтв 16:28:24 1945401404
>>1945399
Желательно в виде простой строки в консоль, алсо можете написать как вообще запускать си код, пока сам пойду гугллить
Аноним 18/02/21 Чтв 16:28:43 1945402405
изображение.png 4Кб, 379x263
379x263
Аноним 18/02/21 Чтв 16:31:53 1945406406
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 1945415407
>>1945399
Понял что могу онлайн компилировать и нужно видимо просто мейн функцию прописать, главный вопрос для меня
uchar __stdcall XlogDecrypt(uchar data, int *psize)
звездочка как я понимаю это указатель, как мне правильно вызвать функцию? Что в нее передавать, даже не до конца понимаю что такое uchar, указатель на символ определенно размерности? Т.е в эту функцию передаются символы, он с ними работает и возвращает тоже символы? Верно? А передавать в функцию мне нужно указатели на каждый символ, так?
Аноним 18/02/21 Чтв 16:50:18 1945418408
Аноним 18/02/21 Чтв 17:15:04 1945434409
>>1944519
Вроде бы надо добавить литерал L"твоястрока".
Аноним 19/02/21 Птн 00:27:27 1945837410
image.jpg 11Кб, 225x225
225x225
>>1944519
> Вместо
> if (pipe(fds)) err(1, "pipe");
Аноним 19/02/21 Птн 07:45:54 1945921411
Аноним 19/02/21 Птн 09:14:29 1945943412
>>1945921
Наверно имеется ввиду переходи на светлую сторону Линух.
Аноним 19/02/21 Птн 10:55:27 1945985413
>>1945943
Нет. Я по-прежнему жду помощи в изучении обмена данными между родительским и дочерним процессами по анонимному каналу в винде.
Аноним 19/02/21 Птн 15:50:50 1946405414
>>1945399
бля, санек, я настучу твоему пм что ты на дваче ищещь решение того за что тебе в принципе на фирме платят деньги

Аноним 19/02/21 Птн 16:39:49 1946460415
>>1946405
Не знаю кто ты, даун, но мне похуй. Я, честно сказать, никого из вас в отделе за людей даже не считаю.
Аноним 19/02/21 Птн 18:42:05 1946618416
>>1946405
Я вообще мимодурачек, случайно подписался на взлом тиктока блять, уже в горле эта хуйня сидит и разбираться в си нет сил, поэтому тут спрашиваю
Аноним 19/02/21 Птн 18:59:24 1946659417
Аноним 20/02/21 Суб 09:51:25 1947067418
Подскажите временную сложность free();
O(1) или O(n)?
Аноним 20/02/21 Суб 10:00:28 1947074419
doLoop.jpg 145Кб, 769x550
769x550
out vrong.jpg 136Кб, 862x535
862x535
1right.jpg 175Кб, 843x569
843x569
Помогите пожалуйста, почему на else проход идёт?
Аноним 20/02/21 Суб 11:07:42 1947120420
>>1947074
Ооо, по Прате что ли модифицированное задание решаешь. А зачем тебе вообще if else, если с конкретным значением сравниваешь, тут switch нужен.
Аноним 20/02/21 Суб 13:22:10 1947275421
>>1947067
Думаю если ты поймёшь, что в данном случае на самом деле означает n, у тебя отпадут вопросы.
Аноним 20/02/21 Суб 14:31:05 1947352422
>>1947120
Отдельную функцию ввода хочу сделать, а потом свитч.
Аноним 20/02/21 Суб 16:55:32 1947511423
>>1947074
Попробуй после scanf
while(getchar() != '\n') continue;
Аноним 20/02/21 Суб 17:22:06 1947553424
>>1940587
что мне нужно написать в юзерспейсе, чтобы прямо сейчас сжечь собственную мать?
Аноним 20/02/21 Суб 17:29:54 1947572425
>>1947553
Программу для расчетов и обязательно юзать avx инструкции, avx инструкции, avx инструкции, avx инструкции, avx инструкции.
Аноним 20/02/21 Суб 18:17:01 1947627426
>>1946659
да там делов-то, всего ничего, осталось только понять как сраный код на си запускать, там типы данных, которые видимо даже не инклюдяться никак и никак не обосзначаются типа алиасом, uchar, вот что за хуйня как и LOCAL
Аноним 20/02/21 Суб 23:52:49 1947975427
1613854369218.png 164Кб, 1080x1920
1080x1920
Аноним 21/02/21 Вск 12:56:48 1948252428
>>1947553
Программу для коммуникации с драйвером режима ядра. А уже в драйвере организовываешь прямой доступ к портам/памяти.
Аноним 21/02/21 Вск 13:22:12 1948290429
>>1947975
Да, я мудак, не заметил что в инклюдах не <> а ""
Аноним 21/02/21 Вск 14:07:27 1948351430
Аноны, я сейчас серьёзно, помогите мне разобраться, как записать что-нибудь в безымянный канал в родительском процессе, чтобы отправить это в дочерний по перенаправленному вводу.

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

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

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

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

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

recipe prog.c

Есть такая возможность в мейке?
Аноним 21/02/21 Вск 22:47:22 1948734432
>>1948351
Ты пигешь на С++, обалдуй, в другой тред идуй.
Аноним 22/02/21 Пнд 07:21:46 1948856433
Аноним 22/02/21 Пнд 10:44:17 1948925434
Аноним 22/02/21 Пнд 10:48:33 1948928435
image.png 712Кб, 1664x494
1664x494
Где могут пригодиться битовые маски?
Аноним 22/02/21 Пнд 10:50:00 1948929436
>>1948928
нихуя себе что с форматированием
Аноним 22/02/21 Пнд 10:58:01 1948933437
>>1940258
>вкатиться в nasa jpl
Поступаешь в МВТУ им. Дауна на ракетную инженерию (возможно еще робототехника будет норм), ходишь в МКЦ, крутишься кабанчиком, вкатываешься в науку, идешь в магистратуру сколтеха, в аспирантуру за рубеж, там находишь нужных людей, которые тебя в nasa jpl перевезут. И вот тогда можешь начинать программировать космические корабли и марсоходы.
Но скорее всего ты проебешься и окажешься инженером-конструктором на ГКНПЦ им. Хруничева или другом менее понтовом заводе Роскосмоса, где будешь 10 лет работать за зп 50-60к.
Аноним 22/02/21 Пнд 11:12:45 1948943438
>>1948928
При битоебле, разумеется!
Аноним 22/02/21 Пнд 19:04:43 1949324439
Анончики. Решаю задачу на преобразование инт в чар. Подскажите, где же я проебываю первую цифру?

#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 1949325440
#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 1949342441
>>1949324
>c[i++] = nb;
Код ноля не прибавил
23/02/21 Втр 20:29:36 1950172442
>>1949324
>Подскажите, где же я проебываю первую цифру?
Пошаговое выполнение кода в средстве отладки для чего создано, а?
Аноним 23/02/21 Втр 21:32:52 1950216443
Аноним 23/02/21 Втр 23:07:01 1950278444
Аноним 24/02/21 Срд 04:22:37 1950381445
>>1950216
Ну напихал бы в исходник отладочной печати в эту консоль, ч0 как маленький?
Аноним 24/02/21 Срд 09:14:18 1950409446
>>1948933
> будешь 10 лет работать
40 при нынешнем пенсионном возрасте!
Аноним 26/02/21 Птн 12:05:06 1952046447
Пацаны, как реализовать имитацию работы в реальном времени, для сглаживающего фильтра например?
Аноним 26/02/21 Птн 21:59:24 1952745448
https://pastebin.com/y70eajE3
ЧЯНТД? Почему newList возвращает указатель на список из одного элемента, а значения полей равны нулю?
Не судите строго, только сегодня сел за более-менее серьёзное изучение.
Аноним 26/02/21 Птн 22:28:47 1952765449
>>1952046
Ну берешь и пишешь. Вроде всё ясно? Ну, пиши, чо.
Аноним 26/02/21 Птн 22:56:47 1952783450
>>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 1952880451
>>1952745
Продолжай булимене серьозное изучение.
Аноним 27/02/21 Суб 19:16:49 1953302452
>>1952745
malloc() возвращает другой адрес с полученной памятью. head же указывает на рандомную ебань и так же будет передан вызывающей функции. Как фиксить - думой сам.
Аноним 27/02/21 Суб 21:56:32 1953416453
>>1953302
Объясни, или я твою мать выебу, пожалуйста
Аноним 27/02/21 Суб 22:31:56 1953435454
Komeiji.Koishi.[...].jpg 429Кб, 666x782
666x782
Аноним 27/02/21 Суб 22:48:44 1953446455
Аноним 28/02/21 Вск 14:36:22 1953794456
максимальное-ло[...].png 2200Кб, 2000x1333
2000x1333
>>1947627
жидко пукнул с нынешних хакеров
Аноним 28/02/21 Вск 21:19:39 1954071457
Как заставить препроцессор работать дальше, если он не нашел определенный подключаемый хидер?
Аноним 28/02/21 Вск 21:44:07 1954095458
>>1953416
Ты инициализируешь указатель указателем без значения.
Аноним 28/02/21 Вск 21:49:33 1954098459
>>1954095
Либо надо было head = &current, но это некрасиво.
Аноним 28/02/21 Вск 21:50:17 1954099460
>>1954098
две звёздочкиhead = &current
Аноним 28/02/21 Вск 22:02:37 1954104461
>>1954071
1) Автоматизация. Вместо несуществующих создаются пустые файлы, и сборка по-новой запускается.
2) Написать виртуальную файловую систему.
3) Перебрать исходники препроцессора.


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

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

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

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

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

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

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

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

Почему по достижении return'а, судя по отладчику программа зависает на последней строке функции, даёт приглашение на ввод, но при этом не возвращается в main?
Аноним 02/03/21 Втр 20:26:16 1955728470
>>1955002
Так у меня еще лучше, потому что нет перезапуска. а до регулярок я пока недорос.
>>1955487
дебагпринты, gdb. Алсо здесь четыре точки выхода, так что непонятно о достижении какого return идет речь.
Аноним 02/03/21 Втр 20:32:25 1955736471
изображение.png 335Кб, 1920x1080
1920x1080
>>1955728
>так что непонятно о достижении какого return идет речь
Самого первого, при инициализации корневого узла.
Аноним 02/03/21 Втр 20:59:06 1955767472
>>1953446
Блять это что за обучение нахуй такое? ПРИДУМАЛИ МАССИВЫ ИЗ СТРУКТУР И ДОЛБОЕБ ВСЁ РАВНО БУДЕТ ИСПОЛЬЗОВАТЬ ДЛЯ ЭТОГО УКАЗАТЕЛИ!
Аноним 02/03/21 Втр 21:10:40 1955773473
???.png 53Кб, 824x923
824x923
>>1952745
Почему так нельзя? Безопасней, проще, быстрее.
Аноним 02/03/21 Втр 21:15:36 1955776474
>>1953446
Скорее всего не аллокатор, а компиляторная оптимизация. НУ А ХУЛЕ НЕТ ТА?
Аноним 02/03/21 Втр 21:20:46 1955778475
a4b745309a8767e[...].jpg 15Кб, 300x225
300x225
>>1955773
struct LIst {
int index;
int value;
}
Аноним 02/03/21 Втр 21:25:19 1955779476
>>1953446
Мож там просто хипы были рядом друг с другом, короче думаю так всё было:

Короче каждый раз шла аллокация 16 байтов, (2 инта + еще одна такая же структура), 8 байтов занимались, остальные оставались, шла еще такая же аллокация, на том самом месте где был указатель занимались оставшиеся 8 байтов, и так до конца, в итоге в конце остается незанятая ячейка памяти из 8 байтов. Либо куча дыр, но я ставлю на вытекание памяти. Там не используется освобождение, можно стенкой посмотреть.
Аноним 02/03/21 Втр 21:27:39 1955781477
>>1955778
struct            LIst     {
                int                   index;
           int                            value;
}
Аноним 02/03/21 Втр 21:55:12 1955797478
Аноним 02/03/21 Втр 22:06:05 1955805479
Аноним 02/03/21 Втр 22:09:19 1955811480
Как по хардкору вкатиться в неблокирующий и асинхронный I/O?
Сам пишу не на си, просто есть очень большое желание понять, как оно там внутри все работает. Нужно в сторону poll/epoll смотреть? Есть какие-нибудь годные гайды или книги?
Аноним 02/03/21 Втр 22:18:03 1955823481
>>1955811
Почитай любые книжки по ядру: как шедулер работает, как процесс блокируется... На этом фоне poll - простенькая надстройка.
Аноним 02/03/21 Втр 22:19:45 1955825482
>>1955823
А с чего начать? Я сам студент, курс по осям будет только осенью, да и вряд ли там сильно глубоко в ядро залезем.
Для начала курс на степике может пройти, а потом книжки по ядру ОС почитать?
Аноним 02/03/21 Втр 22:20:06 1955826483
>>1955797
Объясни в чем суть двух постов и как ты это понял?
Аноним 02/03/21 Втр 22:23:26 1955829484
>>1955736
Инициализация должна проходить успешно: посмотри внимательно тайпдефы и декларации, или скинь их.
>>1955767
Ну линкед листы это довольно весело для обучалок.
>>1955779
Там всегонавсего каждую итерацию инициализировался новый нод который не привязывался к предыдущему.
Да, самые обыкновенные меморилики.

Аноним 02/03/21 Втр 22:27:53 1955834485
>>1955829
Как правильно линкед листы делать?
Аноним 02/03/21 Втр 22:41:43 1955846486
>>1955829
Ааа ему надо было сначала аллокацию головному ноду сделать.
Аноним 02/03/21 Втр 22:42:42 1955847487
Аноним 02/03/21 Втр 22:47:16 1955849488
>>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 1955850489
Хочу написать калькулятор с ГУИ или приложуху какую нибудь бесплатную, например пробежки отслеживать. В планах использовать ГТК+.
Этого хватит? Дефолтного тутора хватит на сайте гнома? Или книжку взять?
А то хочется отвлечься от монотонной зубрежки, вообще пишу всякие задачки на сторонних ресурсах, но там тоже монотонность. Хочется написать что нибудь уже.
Аноним 02/03/21 Втр 23:01:55 1955854490
>>1955849
Хуя круто как. И понятно.
Аноним 02/03/21 Втр 23:04:15 1955855491
>>1955811
>Как по хардкору вкатиться в неблокирующий и асинхронный I/O?
Если тебе прям на уровне epoll/C надо... Ну тогда напиши для начала какой-нибудь простенький HTTP-сервер на блокируемых сокетах. Все реквест-хедеры пропусти, отдай клиенту статус, Content-Type и Hello, World! У тебя будет маленький исходный код, с которым уже можно экспериментировать. А то как так, сей в глаза не видел, но хочу сразу в ядро и шедулер. Там до шедулера у многих серьезных кодеров типа конструкторов всяких golang и nodejs проблемы возникали, типа как лучше распространить асинхронность на потоки, чтобы ядра проца не простаивали.

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

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

Insert(&my, &a);
Insert(&my, &b);
Insert(&my, &c);
Insert(&my, &d);
Insert(&my, &e);
Аноним 03/03/21 Срд 00:12:47 1955882495
>>1955876
>арр(ай)
ты пердеашь сам эленметн ,н5 адреs.
нужн0 воТ так вот :
ампарсанд арр(ай); илии арр плюс ай.
Аноним 03/03/21 Срд 00:15:28 1955883496
>>1955882
Там есть амперсанд, неправильную версию вписал.
Аноним 03/03/21 Срд 00:49:19 1955903497
>>1955883
А прикинь, каково кодировать malloc, ведь ты не можешь сделать malloc(sizeof node), потому что у тебя еще нет malloc.
Аноним 03/03/21 Срд 00:57:00 1955908498
>>1955903
а елсе у меня етсь ммап() и брик(), но ищо нет маллок() что тт на эт0 скажеw)))
>>1955883
ты гдкт на%уивертел в дефейнах N обьевляшках. сматри туда
Аноним 03/03/21 Срд 01:03:43 1955910499
>>1955908
>а елсе у меня етсь ммап() и брик(), но ищо нет маллок() что тт на эт0 скажеw)))
Блок с длиной -1 в дереве, если не хватает, то растим память. Но тут какая-то хуйня в треде вообще творится. С готовым malloc не можем дерево построить.
Аноним 03/03/21 Срд 01:07:50 1955912500
>>1955910
Здесь не в маллоке дело, а именно в цикле, т.к если просто переменные передавать, то всё нормально, все указатели на выделенные участки памяти на месте. Инсерт просто на корневом ноде останавливаться .
Аноним 03/03/21 Срд 09:00:46 1955965501
Аноним 03/03/21 Срд 11:30:50 1956088502
image.png 298Кб, 480x300
480x300
Доброе утро, котятки.
Аноним 03/03/21 Срд 11:57:26 1956111503
a4b745309a8767e[...].jpg 15Кб, 300x225
300x225
> хидеры
> инзерты
> брик
Аноним 03/03/21 Срд 13:49:52 1956257504
>>1956111
>Головной
>Вкладыш
>Кирпич
Аноним 03/03/21 Срд 14:37:58 1956334505
image.png 90Кб, 320x320
320x320
Аноним 04/03/21 Чтв 06:49:57 1956980506
Аноним 04/03/21 Чтв 20:05:30 1957520507
Снимок экрана 2[...].png 48Кб, 674x239
674x239
Анонче объясните что мне gcc наоптимизоровал?
Нахуе здесь безусловный переход на следующую иструкцию?
Аноним 04/03/21 Чтв 21:01:43 1957584508
>>1957520
Ололо, это C166?
Уровень оптимизации какой?
Аноним 04/03/21 Чтв 21:44:53 1957647509
>>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 1957665510
>>1957647
Ну да, остаётся удалить этот файл. Нахуя сгенерировал? Ну раз есть глобальная функция - должен быть код. Их по идее может убирать умный компоновщик, но я дед и ни разу им не пользовался.
Аноним 04/03/21 Чтв 22:01:01 1957673511
>>1957665
там такая программа которая генерит таски под autosar или как void void функции. просто не генерировать низя...
Аноним 04/03/21 Чтв 22:32:10 1957722512
>>1955767
А в Сях вообще нужна эта инкапсуляция?
И почему без перекота?
Аноним 05/03/21 Птн 01:06:44 1957825513
В чем разница между clock_t и time_t?
они полностью идентичны, или clock() возвращает время процесса, в то время как time() - календарное время?
Аноним 05/03/21 Птн 01:21:32 1957831514
>>1957825
time() возвращает календарное время
clock() возвращает время с момента запуска программы
Аноним 05/03/21 Птн 08:02:48 1957890515
>>1957825
Ну почитай доки ептыть. Слоск возвращает число таймерных прерываний, пришедших во время выполнения программы.
Аноним 05/03/21 Птн 10:56:23 1957957516
>>1957890
>>1957831
Это понятно. мне интересно, клоки/время с TASK_INTERRUPTIBLE тоже зачисляется?
Аноним 05/03/21 Птн 12:10:33 1958009517
>>1957957
> TASK_INTERRUPTIBLE
Чего? У нас тут С.
ПЕРЕКАТ Аноним 05/03/21 Птн 21:32:51 1958626518
>> 1958625
>> 1958625
>> 1958625
>> 1958625
>> 1958625
ПЕРЕКАТ Аноним 05/03/21 Птн 21:33:51 1958628519
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов