Этого треда уже нет.
Это копия, сохраненная 13 мая 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C Propaganda.jpg1,9 Мб, 2000x2610
C Programming Language #67 /clang/ # OP 1904954 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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)
2 1904970
>>1904813 →

>ch = st;


Ты пишешь значение байта (т.е. 0x20) в адрес. Если нужно в ch зафиксировать адрес то: ch = st + i * sizeof(char);

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

>ch = st + i * sizeof(char);


или же ch = &st;
4 1904979
>>04970
В таких тонкостях памяти процесса я ещё не разбирался (и не особо знаю где инфу взять).

>ch = st + i * sizeof(char)


А зачем i + sizeof есть квадратные скобки могут разыменовать?

>Асло если ты хочешь "поймать" правый крайний пробел


По Прате надо было первый попавшийся.

>>04973

>или же ch = &st;


Так это же вроде взятие адреса самой переменной указателя, а не значения по нему хранящегося.
5 1904985
>>04979

>Так это же вроде взятие адреса самой переменной указателя


А, блять, так и надо было.
6 1904990
>>04979
Макаба зачем-то съедает квадратные скобки.
Должно так:
ch = &st(i);
Только скобки разумеется квадратные. Так ты берешь адрес байта с пробелом. Без амперсанда - просто записываешь значение (0х20) этого байта в возвращаемый адрес.

>По Прате надо было первый попавшийся.


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

Я правда так и не понял, чем тебе strchr() не угодил.
7 1905005
>>04990

>Я правда так и не понял, чем тебе strchr() не угодил.


Угодил, на нём и переписал, просто было интересно в чём дело - в долбёжке в глаза.
8 1905055
не заебало пердолиться?
9 1905132
Меня вот заинтересовало почему бы просто не использовать типы из Rust в C? Они ведь действительно очень лаконичны и могуть быть определены, если typedef'нуть через громоздкие аналоги в inttypes.h? Ну и за'define'ить спецификаторы для scanf и printf. По типу https://pastebin.com/3hPbqxur

Как людям норм работать с int при написании целых ОС, когда там то 2 байта, то 4? Или вся суть заключается в том, чтобы взять самый быстрый тип int (обычно) и от него плясать беря чуть меньше или чуть больше уже в зависимости от ситуации?
10 1905237
>>05132

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

Раст тут не новатор нихуя. Хотя мне тоже кажется странным килотонны UB закладывать в стандарт языка изначально.
11 1905238
>>05237

Самофикс: разная размерность типов - не UB, а просто неопределенность, зависящая от платформы, разумеется.
12 1905539
>>04954 (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.
13 1905544
>>05539
двач удаляет звездочку, ну вы поняли короч, что 'звездочка.txt' это все файлы с расширением txt
sage 15 1905602
>>05539

>аналог линуксовой команды find


Хуясе ты ибанат))00)
Find может даже твою мать найти и трахнуть прямо в консоле.
Снимок экрана 2021-01-09 в 14.42.03.png72 Кб, 909x664
16 1905610
>>05602
Ну это хорошо, в нашем случае версия упрощенная, остальной функционал я сам уж.
>>05588
спасибо, это решает мою задачу. Так то у меня проект написан, основная ебля была с тем, чтобы искать все файлы, то бишь аналог звездочка.txt реализовать.
Еще вопрос.
Как добиться вывода в таком виде? Просто не очень понимаю, как динамически такие штуки делать.
17 1905689
>>05610
Обмазать счетчиками и ифами. Ничего сложного.
18 1906292
Пишу по-фану файловый менеджер. Соответственно для открытия файлов нужно вызывать nano/vim/etc...

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

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

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

Буду благодарен за ответ на любой из вопросов!
19 1906293
>>06292
В линуксах дефолтный для юзера редактор лежит в переменной окружения EDITOR - его и используй.

А в чём проблема сделать строку с нужными аргументами и вызвать system ("$EDITOR путь-к-хуйне")
20 1906345
Есть один тупой вопрос, извините: в чистом си можно объявить и инициировать массив с нулями? На стаковерфло пишут, что можно int i[n] = {0}; но у меня компилятор не пропускает.
21 1906346
>>06345
У тебя компилятор не пропускает потому скорее потому что n не константа
22 1906347
>>06346
n - переменная, в неё значение до этого считается. Прикрутить фор и забивать им нули - решение неочинь, да?
23 1906350
>>06347
Ты не можешь без фокусов в си создать массив размером с переменную.
В любом случае почему бы тебе не написать конкретную ошибку компилятора
24 1906359
>>06347
memset(arr, 0, sizeof(arr));
Либо же для массива, объявленного где-то и переданного в функцию:
memset(arr, 0, sizeof(×arr) × length);
25 1906480
>>05237
В чем Раст новатор так это в удобных названиях для точных типов, мне кажется в C людям просто лень вбивать uint64_t и PRId64, SCNd64, и все просто пользуются long long и прочими стандартными типами. Ну Расту было проще, не надо было поддерживать legacy. Я ждал, что кто-то недостатки перечислит такого подхода как я выше описал, но мне кажется даже если код выкладывать с такими забиндеными Растовыми типами вместо uint64_t, то все даже очевиднее будет, чем разбирать все эти (num)_t в конце, просто u64 и ничего лишнего.
26 1906481
>>06480
PRIu64, SCNu64 соответствуют uint64_t фикс*
27 1906495
>>06480
Это да, названия отбитые. Тут уже вопросы к дедушкам, какого хрена они не сделали жесткую размерность типов, а нахуевертили черти что.
28 1906695
>>06495

>какого хрена они не сделали жесткую размерность типов


Мультиплатформенный язык программирования. У разного железа разные размерности.
А растоговно, как и любая скриптопараша, работает само в себе, в своем манямирке, безотносительно железа, поэтому там и можно сделать одно фиксированное навсегда и навезде.
29 1906706
>>06695
Все всегда можно сделать фиксированным. Вопрос в том, как оно будет адресоваться и сколько инструкций потребует для выполнения.
30 1906712
>>06695
Хочешь сказать логично из 8 16 32 64 битных репрезентаций сделать не 4 точных типа, а 5 где два из них будут иметь одну размерность на стыке и не будет очевидно до проверки, где это происходит? В стиле либо int = long, либо long = long long. У C просто плохая историческая практика закрепилась из-за того что все добавляли постепенно как тот же long long в C99 и по-разному определяли типы постепенно поднимая размерности. Вне этого подхода сейчас на любом железе будут и 8 16 32 64 битные варианты хранения чисел, кроме совсем экзотического legacy.
31 1906721
>>06712
А еще бывает short = int. Тоже прекрасно.
32 1906728
>>06712
Людям не нужна разрядность. Людям нужен тип целое число. Например количество аргументов в строке, количество строчек в меню.
Разрядность нужна единицам байтоебов с хитрыми битовыми алгоритмами.
33 1906733
>>06728
Людям надо знать, сколько в их целое число поместится. А то можно сделать int, а окажется, что он размером в два байта и хопа - переполнение.
34 1906738
>>06733
int_least_32_t
35 1906739
>>06733
Вот когда окажется что тебе нужно большое целое, тогда ты возьмешь long.
36 1906740
>>06738
Ну и опять мы возвращаемся к тому, что нужно указание размерности.

>>06739
Который может быть равен int. Отлично.
37 1906938
>>06293
Пасиба, не знал о такой переменной окружения. А exec'ом как пользоваться не знаешь? Пишут, что system уязвим.
38 1907027
>>06712
int это размер соответствующий железу. На 32-битном проце будет 32 бита, и т.п. Это значит, что один и тот же код на любом железе будет аналогичный, т.е. код предсказуемый, ты знаешь какой код пишешь.

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

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

Скриптомакака - как плохой начальник. Не знает и не понимает что делают подчиненные и срать хотел. Его волнует только результат "чтобы было сделано, ведь нужно отчитаться перед высшим начальством/заказчиком/инвесторами". А что там у работников, которые это реалдьно делают, емук позуй, какая у них нагрузка, и вообще. Он делает так, если сделано, хорошо, если не сделано, надо нанять других, кто может, а этих уволить.
Вот и у скриптомакак такое же отношение к компьютьеру. Если не работает, нужно выкинуть компьютер и заменить на новый, коиторый сможет.
39 1907029
>>07027

> Если не работает


Если не справляется
download (1).jpeg9 Кб, 252x200
40 1907030
>>07027

> int соответствует железу


> Си язык программирования железа


> ПУК СРЕНЬК АЛГОРИТМ CRC32 не работает потому что на этом железе int 16 битный

41 1907055
>>07030

>АЛГОРИТМ CRC32


???
42 1907060
>>07030
Что не так?
Шаблон порвало, ньюфак?
43 1907235
>>07027
Разговор не о том, что нефиксированные типы не нужны, а о том, что фиксированные очевидно нужно было делать из коробки, а не костылем сбоку.
44 1907259
Размеры типов устанавливает производитель процессора, и естественно руководствуется исключительно прибылью, а не соответствием стандарту.
https://news.ycombinator.com/item?id=3112704
45 1907281
>>07235
В этом языке все реализуется костылем сбоку
46 1907443
>>07235
Пердопроблемы. В винде всю жизнь есть DWORD, BYTE и т.д. Пользуйся наздоровье, всё из коробки.
47 1907466
>>07443
Единственное, что в винде нормально сделали. И то названия всратые. DWORD это сколько, блядь? Раньше это было 16 бит, щас в MSDN написано, что это 32.
48 1907474
>>07466
Так, я обосрался. Это раньше слово было 16 бит, двойное 32, а сейчас слово 32, но DWORD==32 оставлен из соображений совместимости.
49 1907488
>>07466

>DWORD это сколько, блядь?


sizeof() в помощь. А вот пихать цифры в названия типов это плохая идея, слова лучше запоминаются и меньше путаются и мельтешат.
50 1907634
>>07488
u64 плохо запоминается?
51 1907756
Как в мейкфайле прописать клинер, чтобы мейк не срал в stderr, типа файл хуйня.с не найдет в директории?
52 1907794
>>07756
rm -f
53 1907959
Можно ли вкатитьсы в си без корочки? Что "учи язык" - это понятно. Но си ж низкоуровневый, нужно трогать штуки, опасно близкие к фатальной ошибке. Дипломированное знание устройства компа обязательно или шансы есть? Подводные? Истории успехов?
54 1907978
>>07959
Можно запросто, в 80-е 12-летние песдюки вкатывались даже в ассемблер - такие потом игры писали на продажу. Читай книжки, их для начала достаточно.

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

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

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

Последнее - в чистом виде на Си новые проекты уже практически не встречаются. Практически весь код на Си - старьё типа nginx или linux, где и без тебя всё збс. Причин писать на нём что-то новое очень мало. Даже микроконтроллеры с 1КБ памяти на борту уже, бывает, поддерживают C++. Поэтому сколько бы ты Си не задрачивал, зарплату это тебе не прибавит.
55 1907988
>>07978
Я сходу могу назвать новый проект на сишке - janus-gateway. Как раз щас с ним разбираюсь.

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

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

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

Но вообще, ящитаю, одна сишка с высокой долей вероятности будет бесполезна, если только ты не ядерщик или эмбеддер. Вероятнее всего тебе потребуется знать еще два-три языка. На скриптухе или высокоуровневом писать бизнес-логику, на сишке - критичные к производительности вещи.
56 1907994
>>07978

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


По-моему ты гонишь, не может компилятор в таком случае выкинуть код. UB значит, что результат может быть любым, условно ты можешь получить число по модулю, а можешь 0.
Но это скорее про случаи m[x++] = m[x++] + n[x++]. Просто вот так не надо писать и всё, одни какие-то подобные случаи прописаны в стандартах, другие нет.

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

>Причин писать на нём что-то новое очень мало.


Тут ты тоже не прав, поскольку Си это один из основных языков для расширений, а плюсы тут плохо стыкуются, и реально много пишут на Си, без плюсов.
57 1908040
>>07994
Это местный форсер, который срет примером со сложением повсюду. В компиляторах есть флаги чтобы отлавливать целочисленные переполнения, в стандарте это UB потому что на разных аппаратных платформах это работает по разному, а сишка, в отличие от джавы, должна работать везде.
58 1908086
Почему вылетает ошибка сегментрования?

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

ptrs[0] = &ar[0][0]
59 1908088
>>08086
Ложная тревога, вывод был по строкам.
60 1908091
>>08040
Ты описываешь implementation defined, а не UB. Это явления другой категории.
При UB компилятор действительно может убирать инструкции. Условный пример, ты делаешь какое то UB, а потом пишешь if(cond) {...} компилятор волен полностью выкинуть этот код, потому что по его мнению cond никогда не выполнится, потому что считается что UB в программе отсутствуют.
61 1908097
Я что-то не могу додуматься, почему так не работает ?

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

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

int main()
{
int arr;
int n;
scanf_s("%d", &n);
FillPtr(arr, n);
}
62 1908101
>>08097
Найс код скопировался конечно
63 1908102
>>08097
А зачем ты 1 раз и потом еще n раз малочишь арр?
64 1908104
>>08101
А, ну перезаливай.

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

int main()
{
\t printf("test\n");
}
[/code]
65 1908107
>>08104
Найс, поставил эту вашу макабукоду.
66 1908116
>>08097

#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);
}
67 1908117
>>08086
А теперь собственно ошибка вылезает на этом моменте

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;
}
68 1908118
>>08116
Да снова нормально не скопировалось
69 1908119
>>08117
Короче ебал его рот, вот pastebin, проблема в цикле, внутри функции

https://pastebin.com/MNku6ski
70 1908125
>>08119
А сама цель:

указатель 0 = &элемент обычного двумерного массива 0 0
Как пример:
Обычный массив: c b a d f
Массив указателей: 0 1 2 34
if(b < 0) в данном случае меньше
{
0 = &b;
1 = &c;
}
71 1908146
>>08125
То есть сортировка строк из двумерного массива в алфавитном порядке без изменения исходного массива.
72 1908173
Ты бы лабу хоть отформатировал.
73 1908303
>>07988

> Я сходу могу назвать новый проект на сишке - janus-gateway. Как раз щас с ним разбираюсь.


Ну да, писать на Сишке можно и сейчас, но нахуя? Этот проект по описанию просто идеален для Go или Rust, а они, поди, решили, что без языка 50-летней давности им ощущения не те.

> На самом деле сишники охуенно востребованы. С оговоркой: сишные боги.


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

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


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

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


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

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

>>08091
Дело-то в том, что в Си переполнения действительно UB. Вот пидорок выше правильно пишет, что есть в компиляторах флаги, переводящие некоторые UB в implementation defined. В этом и дело - ты приличный человек и предполагаешь, что и Си проектировали приличные люди. А они уёбки, понатыкавшие в языке сотни ждущих своего часа мин. И всё ради 10% производительности в 10% микробенчмарков. Казалось бы, студенческого уровня косяк - ради пары процентов скорости сломать программу - а оказывается, там целый комитет старых гондонов сидит, стандарты пишет.
73 1908303
>>07988

> Я сходу могу назвать новый проект на сишке - janus-gateway. Как раз щас с ним разбираюсь.


Ну да, писать на Сишке можно и сейчас, но нахуя? Этот проект по описанию просто идеален для Go или Rust, а они, поди, решили, что без языка 50-летней давности им ощущения не те.

> На самом деле сишники охуенно востребованы. С оговоркой: сишные боги.


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

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


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

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


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

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

>>08091
Дело-то в том, что в Си переполнения действительно UB. Вот пидорок выше правильно пишет, что есть в компиляторах флаги, переводящие некоторые UB в implementation defined. В этом и дело - ты приличный человек и предполагаешь, что и Си проектировали приличные люди. А они уёбки, понатыкавшие в языке сотни ждущих своего часа мин. И всё ради 10% производительности в 10% микробенчмарков. Казалось бы, студенческого уровня косяк - ради пары процентов скорости сломать программу - а оказывается, там целый комитет старых гондонов сидит, стандарты пишет.
74 1908317
>>08303
Хуя тебе печет от сишки
75 1908330
>>08303

> Этот проект по описанию просто идеален для Go


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

> Rust


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

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


Я же написал: сишные боги. В яндексе/мейле/етц топовый сишник стартует с 200k и идет дальше. Это я тебе как экс-яндексоид говорю.
76 1908346
>>08330
Топовый пхпшник лол сука тоже с 200к стартует, только он вообще не ебет что такое память, потоки, процессы и так далее, тупо пишет дтохи, контроллеры, говносервисы да говновалидацию да в базу лазает.
77 1908351
>>08346
Сишку стоит изучить только ради того, чтобы таким тупым говном не заниматься
78 1908353
>>08351
Кому что, многим ебать байты не уперлось, а вот писать бизнес логику на пыхе норм. Совершенно разные задачи.
79 1908379
>>08353
Очевидно что этим людям нужно сидеть в пхп треде, а не расказывать нам как им неинтересна сишка
80 1908386
Говнопрогер на пыхе решил изучить итерналы своего языка и понял, что зенд енджайн написан на сишке. Бля, поцоны, а реально на си работу найти? Меня заебала уже эта пыха, хоть вешайся...
81 1908416
>>08379
Так речь вообще о другом шла.
82 1908427
>>08346
Я ничего не знаю о рынке пхпшников, но мне кажется что топовый должен как раз знать сишку, чтобы фиксить ядро этого говна. Имхо, за пхп можно получать столько только если удачно примазаться на старте и сидеть сеньером в техкомитете, либо работая на западного барина. Кто вообще наймет пхпшника-онли с улицы за что-то большее 100к?
83 1908436
>>08427

> Кто вообще наймет пхпшника-онли с улицы за что-то большее 100к?


Любая крупная компания у которой есть бэк на пыхе?
84 1908470
>>08436
Не, ты не понял мой вопрос. Допустим, в компании есть бек на пыхе. Зачем компании нанимать пыхомакаку за зарплату больше миски риса, если кроме пыха она ничего не умеет?

В яндексе есть racktables, который написан на пыхе. Соответственно, есть несколько человек, которые его поддерживают. Так вот у них у всех кроме пыха еще пяток языков в запасе, и пых далеко не основной. Зарплата соответствующая.
85 1908471
>>08470
Ну а нахуй компании, у которой кроме пыхи и гошки на бэке нихуя нет, нанимать такого спеца?
86 1908475
>>08470

> Зачем компании нанимать пыхомакаку за зарплату больше миски риса


Потому что нормальный бэкендер не пойдет работать за миску риса.

> если кроме пыха она ничего не умеет?


А что он должен уметь еще? Ну само собой он может в БД, брокеры, кеши, куберы и прочее, ведь он бэкенд разработчик. Зачем ему знать 5 языков? каждый одинаково хуево
У вас сишников своя реальность где 200к деньжища?
87 1908481
>>08475
Нормальный бекендер будет знать не только пых.

> У вас сишников своя реальность где 200к деньжища?


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

мимопроходил
89 1908486
>>08481

> Нормальный бекендер будет знать не только пых.


Ну будет знать пыху + го или пыху + питон/ноду, зачем ему 5 языков?
Или SQL, HTML и прочее тоже идет в счет?

> Сишник, работающий на западного барина, поднимает гораздо больше.


Кто угодно получает больше на западном рынке.
90 1908490
>>08482
Ща тебе нонейм с двача пояснит, что твой опыт не опыт, а сам ты сисадмин, если не знаешь... делаем ставки чего. Я бы поставил на кложу/элексир. Или раст.
91 1908495
>>08490
Примерно это и ожидал, читаешь мои мысли. Он бы меня сразу в еникейщики определил
92 1908502
>>08486
>>08482
Господа, чтобы сразу не было ко мне претензий. Я сужу с позиции большого тырпрайза, поскольку работал в основном именно там, пока не ушел на вольные хлеба.

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

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

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

Что до моего личного определения "нормального бекендера" - это человек, который не только может что-то писать на каком-то языке, но понимает еще и тонкости оптимизации, сеть, ось и умеет в архитектуру. При необходимости может пойти и попатчить ядро или любой опенсорс, чтобы решить свою локальную проблему.
93 1908510
>>08495
Да ну бросьте оба. Я же не фанбой отбитый. Просто пересказываю то, что видел сам. Просто если чел не может докопаться до глубинной проблемы, связанной с интерпретатором того же пыха, то что он будет делать? Заведет тикет на гитхабе что ли? Будет по форумам ходить?

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

Я не говорю, что PHP+SQL+JS-онли ребята не нужны. Нужны, конечно. Просто получают они меньше чем тот класс, который я привел в первой опции.
94 1908520
>>08510

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


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

> Я не говорю, что PHP+SQL+JS-онли ребята не нужны. Нужны, конечно. Просто получают они меньше чем тот класс, который я привел в первой опции.


Ну 200к они легко получают, про работу на запад за доллары я вообще молчу.
95 1908526
>>08520

> как часто ты лезешь чинить интерпретатор?


PHP не чинил ни разу, так как не пишу на нем. Раза три чинил питон, и за последний год нашел несколько багов в ядре, которые аффектят юзерспейс. Один из них весьма древний.
96 1908529
>>08510
Ты наглухо ебанутый и оторванный от реальности как будто, если 200к для тебя деньги, то их получают, 300к тимлиды тоже получают, тупо за крудошлепские сервисы с пыхой да симфони, да там кафка, кубернетес и прочая хуйня, но сам язык там пхп и другой язык там не нужен, никакой интерпретатор там никто не дописывает. На джаваскрипте так же, никто лезть в v8 не будет переписывать, а пишут бэк там вчерашние формошлепы фронтендеры, еще хуже чем на пхп в плане архитектуры.

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

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

>Раза три чинил питон, и за последний год нашел несколько багов в ядре, которые аффектят юзерспейс


У меня есть знакомый питонист, не знает как в питоне gc работает, получает 200к.
98 1908535
>>08529
Глаза разуй, еблан. Я тебе сказал, что СИШНИК получат ОТ 200к. Поскольку сумма обсуждается в рублях, то речь, очевидно, идет о рашке.
99 1908536
>>08532
Ну, всякое бывает. Речь изначально шла о том, что сишка дает преимущества в работае и позволяет поднять себе ценник.
100 1908539
>>08535
Так ты же про толкового и в крупной компании, пока таким станешь уже седым станешь.
101 1908541
>>08536

>и позволяет поднять себе ценник.


Очень сомнительно, если проект байтоебский то да. А когда ты пишешь условный маркетплейс, банкинг или агрегатор какой нибудь хуйни, то это вообще непонятно зачем нужно.
102 1908542
>>08539
Ну почему же. Знаю челика, ему 35. Работает в яндексе, в основном хуярит ядро, по мелочи пишет на питоне и гошечке. Стоит дорого.

Толковость появляется от опыта работы. Если годами json`ы перекладывать, то понятно, можно до седых мудей таким не стать. Если вписаться в технически сложный проект и не сидеть в нем до скончания времен, то опыт и наберется.
103 1908545
>>08541
А тут уже вопрос, чем именно ты хочешь заниматься. Если маркетплейсами - то да, необходимость почти нулевая. А если какой-нибудь сверхвысокий асинхронный хайлоад (r) (c) (tm), то там это нужно. Деньги уже другие, разумеется. Полмиллиона и выше.
104 1908548
>>08545
А уже 500к+, ставки повышаются.
105 1908551
>>08548
Долбиться в глаза прекращай, тебе говорят.
106 1908554
>>08551
Чел ты поехавший.
107 1908555
>>08554
Ты скозал, манька?
108 1908557
Ну и к чему вы в итоге пришли? Нахуй было спорить, если вы кроме своего мнения других не приемлите..

пойду дальше другие срачи посмотрю
109 1908637
как подключить библиотеку которую я скачал и скомпилировать?
хочу подключить <xxxxxx> вот так через <>

как в codeblocks или в терминале єто делать?
110 1908890
>>08502

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


Ты таких ИРЛ вообще встречал хоть раз?
111 1908948
>>08890
Да
Причем без шуток. Знакомый погромист и либы чужие патчил, когда находил дефекты в них, и архитектурой занимался, оптимизацией производительности, а сам по себе мастер по написанию кода для бэкэнда.
112 1909066
>>08890
Да. Работал с такими челиками в разных командах. Как правило после рашкинских компаний они перекатываются куда-то в более интересные места. Например, челик со знанием сей, плюсов, питона и тонкостей сетей (плюс цисок, жуниперов и хуевеев) укатился в спейсикс. Другой челик с таким же набором - в фейсбук. Родственник мой пилил распределенные системы. Ну и я тоже, т.к. работал в упомянутых командах. Я в сетях особо не разбираюсь, но у меня прокачан скилл проектирования архитектуры и распределенных систем. Укатился в свой софтово-железячный стартап.
113 1909171
>>09066

>в свой пиздобольский угол


пофиксил, не благодари!
114 1909175
>>09171
Если ты - дно, то не думай, что тут все такие же, манька.
115 1909211
>>09175
не плакай, стартапер-архитектор-двачер
116 1909224
>>09211
плакаешь тут ты
image.png374 Кб, 757x477
117 1909239
>>09211
В чем проблема, маня?
118 1909257
>>09224
>>09239

не мороси,
лучше подучи стандарты си!
119 1909388
Знатоки, что тут происходит?
https://pastebin.com/FnRrs2tn
120 1909600
>>09388
Перемешивает биты в числе особым образом, чтобы вышло число с симметрией относительно центра? Хуй знает, запутанный обмен, лень разбираться больше 5 минут, такое прямо в IOCCC отправлять после должной доработки, лол.
121 1909873
Как внутри printf() вывести еще функцию чтобы получилось что-то вида printf(fn(), fn2(), fn3())?
122 1909890
>>09873
Разобрался
123 1909896
Чем вы быстрее плюсов? Зачем вы вообще нужны?
124 1909930
>>08097

Потому что хуйня какая-то. Зачем ты малок засунул в фор, что ты пытаешся сделать?
125 1910016
>>07027
Мне кажется, что такой подход был уместен, когда были архитектуры условно 16-битные и 15-битные, 32-битные и 27-битные, двоичные и экспериментальные троичные.
Но когда на ПК int 32-битный, а на ардуине 16-битный и алгоритм перестаёт работать, то это плохо.
image.png297 Кб, 1100x616
126 1910080
Безымянный-файл-изображения-(25)-5-b-f644.jpg258 Кб, 1200x898
127 1910423
Если в буфер размером K прочитать поток размером N, то N-K байт останутся в стдин (например по exit() вылезут в консолечке).
128 1910432
>>10016
Да, такой подход не уместен, он единственно возможен, ибо других не может быть.
Посмотри на пики. Есть два робота, большой и маленький, и язык программирования роботов. Ты пишешь команду:

>сделать_шаг();


В результате, оба робота должны одинаково сделать шаг, и похуй что первый робот выполнит поставленную задачу - раздавить вон того тупого еблана вроде тебя слева, а второй шагнет на пару сантиметров и ничего не добьется. Это нормально, так и должно быть. А вот игнорировать спецификации роботов и хотеть чтобы любой робот одной командой выполнял одинаковую задачу, т.е. одной командой первый робот просто делает шаг, а второй разбегается, подпрыгивает, достает нож и втыкает его в шею цели, т.к. весом убить еблана не может, зато задача выполнена. Такая поебень - не программирование, и никому не нужна, кроме тупых ебланов, которых надо вычистить как вредные органические отходы, заражающие планету.
129 1910808
>>10432
Бред. Современный мир омонополен несколькими крупными производителями микроэлектроники и все они двоичные, а их регистры в большинстве своём кратны восьми и являются степенью двойки. И очевидно, что каждое 32-битное число, когда к нему добавляется 1 должно либо увеличено на единицу, либо переполнено и обнулено. А когда один и тот же тип ведёт себя как сумасшедший на разных машинах, это очень плохо. Представь, написал ты машине variable++, а она вместо того, чтобы увеличить значения на единицу, вызывает rm -rf /*. Нарушаются все принципы, которые только можно.
Зачем вообще в таком случае программировать на сижке, если можно сразу на ассемблере? Там и изучения спецификации машин, и библиотеки можно оптимизировать под готовые инструкции. В одной машине не будет инструкции для синуса и придётся функцией посчитать. А в другой будет, но значение плюс-минус 0.1, ещё и рандомное каждый раз, потому что считается через аналоговую электронику. Вот будет веселье программисту! Все графические и физические движки будет переписывать на ассемблер. Настоящее программирование, как положено настоящему мужику!
Я не мужик, так что я такое не выбираю. Мои алгоритмы должны работать одинаково на всех машинах. Чтобы один и тот же код можно было запустить хоть на ПК, хоть на микроконтроллере и он исполнился правильно.
И, даже, на разных типах, для чего в современных языках программирования есть дженерики и темплейты (сишные макросы до них не дорастут).
То, что ты описал не нужно нормальным людям, но я не считаю, что вас надо уничтожать. У вас есть право на своё мнение и вы можете заниматься байтоёбством сколько хотите.

Хотя, действительно, есть ряд задач, где можно типы сделать не совсем ясными. Например, флоат для 3D-графики. Не всегда важно, будет single или double считаться в шейдере, потому что в большинстве программ отображение графики будет почти одинаковым. Ну, может цвета пикселей или их расположение будет немного другим. В таком случае уместно вводить отдельный тип, который может себя вести как халф, сингл или дабл.
129 1910808
>>10432
Бред. Современный мир омонополен несколькими крупными производителями микроэлектроники и все они двоичные, а их регистры в большинстве своём кратны восьми и являются степенью двойки. И очевидно, что каждое 32-битное число, когда к нему добавляется 1 должно либо увеличено на единицу, либо переполнено и обнулено. А когда один и тот же тип ведёт себя как сумасшедший на разных машинах, это очень плохо. Представь, написал ты машине variable++, а она вместо того, чтобы увеличить значения на единицу, вызывает rm -rf /*. Нарушаются все принципы, которые только можно.
Зачем вообще в таком случае программировать на сижке, если можно сразу на ассемблере? Там и изучения спецификации машин, и библиотеки можно оптимизировать под готовые инструкции. В одной машине не будет инструкции для синуса и придётся функцией посчитать. А в другой будет, но значение плюс-минус 0.1, ещё и рандомное каждый раз, потому что считается через аналоговую электронику. Вот будет веселье программисту! Все графические и физические движки будет переписывать на ассемблер. Настоящее программирование, как положено настоящему мужику!
Я не мужик, так что я такое не выбираю. Мои алгоритмы должны работать одинаково на всех машинах. Чтобы один и тот же код можно было запустить хоть на ПК, хоть на микроконтроллере и он исполнился правильно.
И, даже, на разных типах, для чего в современных языках программирования есть дженерики и темплейты (сишные макросы до них не дорастут).
То, что ты описал не нужно нормальным людям, но я не считаю, что вас надо уничтожать. У вас есть право на своё мнение и вы можете заниматься байтоёбством сколько хотите.

Хотя, действительно, есть ряд задач, где можно типы сделать не совсем ясными. Например, флоат для 3D-графики. Не всегда важно, будет single или double считаться в шейдере, потому что в большинстве программ отображение графики будет почти одинаковым. Ну, может цвета пикселей или их расположение будет немного другим. В таком случае уместно вводить отдельный тип, который может себя вести как халф, сингл или дабл.
130 1910843
>>10808

>Бред


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

>Мои алгоритмы


Си - язык программирования железа, а не алгоритмическая параша для первоклашек и сходных с ними по интеллекту дегенератов.
Езе раз: СИ - НЕ АЛГОРИТМИЧЕСКАЯ ПАРАША. Ферштейн?
131 1910929
>>10808

> Бред. Современный мир омонополен несколькими крупными производителями микроэлектроники и все они двоичные, а их регистры в большинстве своём кратны восьми и являются степенью двойки. И очевидно, что каждое 32-битное число, когда к нему добавляется 1 должно либо увеличено на единицу, либо переполнено и обнулено. А когда один и тот же тип ведёт себя как сумасшедший на разных машинах, это очень плохо.


А прям много таких машин где int ведёт себя как сумасшедший?

> Представь, написал ты машине variable++, а она вместо того, чтобы увеличить значения на единицу, вызывает rm -rf /*. Нарушаются все принципы, которые только можно.


Поехавший пример однако.

> Зачем вообще в таком случае программировать на сижке, если можно сразу на ассемблере?


Лучше сразу на сигаре.

> Там и изучения спецификации машин, и библиотеки можно оптимизировать под готовые инструкции. В одной машине не будет инструкции для синуса и придётся функцией посчитать. А в другой будет, но значение плюс-минус 0.1, ещё и рандомное каждый раз, потому что считается через аналоговую электронику. Вот будет веселье программисту! Все графические и физические движки будет переписывать на ассемблер. Настоящее программирование, как положено настоящему мужику!


Чтоб такой хуйни не было и пилят более комплексные языки программирования.
А если какая-то функция на железке неадекватная, и не ведёт себя так как на другом железе - ее выносят в specific функционал, и делают реализацию чтобы вело оно себя так как и везде.

> Я не мужик, так что я такое не выбираю. Мои алгоритмы должны работать одинаково на всех машинах. Чтобы один и тот же код можно было запустить хоть на ПК, хоть на микроконтроллере и он исполнился правильно.


Замечу ты это про предыдущий абзац, а там сказано тобой же про ассемблер. А где собственно Си тут?

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


Не понял к чему это тут.

> То, что ты описал не нужно нормальным людям, но я не считаю, что вас надо уничтожать. У вас есть право на своё мнение и вы можете заниматься байтоёбством сколько хотите.


Да ты поехавший. Привел в пример ассемблер. И рассказывает что мы какие-то не такие.

> Хотя, действительно, есть ряд задач, где можно типы сделать не совсем ясными. Например, флоат для 3D-графики. Не всегда важно, будет single или double считаться в шейдере, потому что в большинстве программ отображение графики будет почти одинаковым. Ну, может цвета пикселей или их расположение будет немного другим. В таком случае уместно вводить отдельный тип, который может себя вести как халф, сингл или дабл.


Вообще разница есть между float и double в графике. Как минимум в производительности, и в точности. Особенно когда считаешь геометрию. Или сраное сглаживание.
131 1910929
>>10808

> Бред. Современный мир омонополен несколькими крупными производителями микроэлектроники и все они двоичные, а их регистры в большинстве своём кратны восьми и являются степенью двойки. И очевидно, что каждое 32-битное число, когда к нему добавляется 1 должно либо увеличено на единицу, либо переполнено и обнулено. А когда один и тот же тип ведёт себя как сумасшедший на разных машинах, это очень плохо.


А прям много таких машин где int ведёт себя как сумасшедший?

> Представь, написал ты машине variable++, а она вместо того, чтобы увеличить значения на единицу, вызывает rm -rf /*. Нарушаются все принципы, которые только можно.


Поехавший пример однако.

> Зачем вообще в таком случае программировать на сижке, если можно сразу на ассемблере?


Лучше сразу на сигаре.

> Там и изучения спецификации машин, и библиотеки можно оптимизировать под готовые инструкции. В одной машине не будет инструкции для синуса и придётся функцией посчитать. А в другой будет, но значение плюс-минус 0.1, ещё и рандомное каждый раз, потому что считается через аналоговую электронику. Вот будет веселье программисту! Все графические и физические движки будет переписывать на ассемблер. Настоящее программирование, как положено настоящему мужику!


Чтоб такой хуйни не было и пилят более комплексные языки программирования.
А если какая-то функция на железке неадекватная, и не ведёт себя так как на другом железе - ее выносят в specific функционал, и делают реализацию чтобы вело оно себя так как и везде.

> Я не мужик, так что я такое не выбираю. Мои алгоритмы должны работать одинаково на всех машинах. Чтобы один и тот же код можно было запустить хоть на ПК, хоть на микроконтроллере и он исполнился правильно.


Замечу ты это про предыдущий абзац, а там сказано тобой же про ассемблер. А где собственно Си тут?

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


Не понял к чему это тут.

> То, что ты описал не нужно нормальным людям, но я не считаю, что вас надо уничтожать. У вас есть право на своё мнение и вы можете заниматься байтоёбством сколько хотите.


Да ты поехавший. Привел в пример ассемблер. И рассказывает что мы какие-то не такие.

> Хотя, действительно, есть ряд задач, где можно типы сделать не совсем ясными. Например, флоат для 3D-графики. Не всегда важно, будет single или double считаться в шейдере, потому что в большинстве программ отображение графики будет почти одинаковым. Ну, может цвета пикселей или их расположение будет немного другим. В таком случае уместно вводить отдельный тип, который может себя вести как халф, сингл или дабл.


Вообще разница есть между float и double в графике. Как минимум в производительности, и в точности. Особенно когда считаешь геометрию. Или сраное сглаживание.
yoba.png5 Кб, 129x129
132 1910959
>>10016
Тебе стандарт и традиция гарантируют для инта +-32767. Если ты знаешь, что в алгоритме нужен больший диапазон, не используй инт. И тогда не будет никакого "перестает работать".

Гораздо опасней существование в языке unsigned.
133 1911480
джава и оопе - некст абстракшен левл. всё.
134 1911791
Почему функция принимающая двумерный массив по сигнатуре может принять одномерный массив в качестве аргумента и и разместить его как первую строку?
135 1911937
>>11791
В си нет двумерных массивов в полноценном смысле (например вида [ , ])
Так что по сути у тебя массив массивов.
image.png77 Кб, 705x767
136 1911951
>>11937
Я знаю. Функция по сигнатуре принимает переменную хранящую указатель на указатель. Но поему-то в качестве аргумента можно просто прописать указатель на строку и он запишется в локальный массив указателей на указатели т.е в двумерный массив функции. По-моему это какая-то очень неочевидная хуйня.
image.png23 Кб, 452x208
137 1911955
>>11951
переменную хранящую указатель на массив указателей
фикс
138 1911971
>>11951
Короче в качестве аргумента был передан одномерный массив, но поему то он автоматически был записан в первую строку локального двумерного.
139 1912041
C помощь read как-то можно считать символы не передвигая при этом позицию в файле? То есть записало в строку, но при следующем read начинало бы с того-же места?
140 1912357
>>10808
братишь, занимаешься графикой?
141 1912359
>>10843
ты какой-то обиженка
есть железо, есть алгоритмы - в чем проблема? Одно без другого - как ручка без чернил (ну или чернила без ручки)
Нам как фронтендеры нужны с их красивыми сайтиками, или питонисты с их джанко и мл
так и хардварники с их управлением памятью, оптимизацией и прочим
выпей уже таблеток, а?
142 1912361
>>10959

> Гораздо опасней существование в языке unsigned.


поясни плз
143 1912386
>>12361
Скорее всего он имеет в виду, что при декременте оно не может уйти в отрицательные числа и вызовет где-нибудь переполнение.

Вообще было бы здорово иметь возможность отлавливать такое, как с делением на ноль.
144 1912387
>>12041
fseek или lseek
Читать и возвращать позицию на количество прочитанных байт.
145 1912424
>>12361
Поясняю: пикрил 1 - опасно; пикрил 2 - безопасно.

>>12386

> было бы здорово иметь возможность отлавливать такое


Возможность есть, отлавливай наздоровье.
146 1912433
>>12424

> Возможность есть, отлавливай наздоровье.


Это как?
147 1912435
А в каком случае оверфлоу может что-то там повредить, если конпелятор прежде чем декрементировать memx, кидает это в соотетствующий блок регистра?
И даже для машины subb, subd, subl и subq это разные инструкции, работающие с соотвествующим размером.
148 1912471
>>12386

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


Ровным счётом та же проблема с signed.

ХЗ, давно не писал на Си, но вроде как хорошим тоном считается использовать int32_t/uint32_t
149 1912492
>>11955
Не знаю как объяснить попроще, но это не массив указателей, там нет индирекции
https://nullprogram.com/blog/2016/10/27/
150 1912502
>>12492
Без ассемблера возможно понять?
16034677706730.jpg10 Кб, 200x200
151 1912505
>>12361
-1 > 2u
kKqHfJnYZs4-b-a110.jpg165 Кб, 1079x1233
152 1912515
БЛЯТЬ, поясните нюфаку чем всё-таки опасны эти ваши овер/андерфлоу? Я раньше думал, что соседние байтики и битики страдают, но как оказалось, это не так.
>>12424

>Поясняю: пикрил 1 - опасно; пикрил 2 - безопасно.


И первое, и второе - опасно, если воткнуть в анус.
153 1912528
>>12424

>Возможность есть, отлавливай наздоровье.


Это про interrupt_overflow?
kitty.jpeg51 Кб, 750x646
154 1912536
>>12515
f(i) { if (i+1<0) puts("f"); }
g(i) { if (i<0) puts("g"); }
main()
{
f(0x7fffffff);
g(0x7fffffff+1);
}
155 1912540
>>12536
f() и g() должны прокнуть. Что не так?
16034677706730.jpg10 Кб, 200x200
156 1912547
>>12540
Печатает только g (GCC с оптимизацией или без).
nope.png90 Кб, 764x481
157 1912575
158 1912710
>>12515
Тем что это UB (undefined behaviour) то есть компилятор может считать что ты написал некорректный код и выкинуть его или поменять на другой. Хуже того, вся программа считается UB.
159 1912737
>>12710

>Тем что это UB (undefined behaviour)


А где здесь ЮБ? Если сегментация не нарушается, а переполнение только-только зажигает OF и сама память меняет значение с TYPE_MAX на TYPE_MIN (и наоборот). Я конечно понимаю, что такое посредственно может вызвать перезапись буффера (например записать 0х7ff байт вместо одного), но эта проблема вроде как отдельно решается.

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



Это как? Конпелятор будет предугадывать или даже вычислять, что там случится в рантайме? Меня траллируют, да?
160 1912783
setjmp
161 1912869
>>12737
UB в ящыке Си, никаких О флагов в языке не существует. Это не ассемблер.
yoba.png5 Кб, 129x129
162 1913222
>>12710
Конпелятор делает оптимизации, которые меняют поведение кода в случае переполнений.
Вот это

> if (i+1<0)


может заменить на

> if (i < -1)


сэкономив одну инструкцию.
Подставь maxint на место i. Первый иф будет истина, второй ложь.
Стикер512x512
163 1913495
>>13222

>if (i < -1)


То есть при -1 все ок?))))
164 1913531
>>12433
Обыкновенно. Включи голову: int не отлавливает переполнение, значит что нужно сделать? Нуууу!? Конечно же написать свой manyaint который будет отлавливать. Ты программист или кто? Кто еще за тебя будет программировать твои маняхотелки, кроме тебя самого? Язык имеет все средства для реализации чего угодно, так что вперед и с песней.
image.png118 Кб, 288x254
165 1913856
>>13531
Бля, охуительная история. Я думал ты что-нибудь умное расскажешь, а ты предложил навернуть абстракцию поверх обычной переменной.
image.png14 Кб, 747x194
166 1913924
Почему прога не робит? Я просто блять тупой и не понимаю, схуяли доступа на изменение массива нет?
167 1914002
>>13924
>>13924
Не шарю за сихи ваши, мб потому что s продекларирована но проинициализирована?
168 1914022
>>13924
А что ты передаешь в функцию? "stroka", я угадал?
169 1914065
>>13924
https://ideone.com/iUFskp
А что не так собственно?
170 1914071
>>13856

>дайте мне абстракцию, мам


>ну на, держи


>бля, охуительные истории, абстракцию предлагают


С дефектами мышления в программировании делать нечего.
171 1914076
>>14022
Кстати да, есть вероятность что он передает внутрь строку указателем из .data, из-за этого ловит сегфолт.
172 1914207
>>14071
Где ты в моем сообщении увидел слово "абстракция", клоун?

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



Вот именно, пиздуй из профессии. Мало ли что ты там увидишь в следующий раз в коде, вдруг тебе послание с нибиру мерещиться начнет.
sshot-2021-01-18-17-33-42.png9 Кб, 433x269
173 1914220
174 1914341
>>14207
Дебил?
175 1914356
>>14220
компилятор поменяй
176 1914366
>>14341
Ну, дебилом бы я тебя не назвал. Просто не очень умный.
177 1914606
>>06345
Читай что такое динамическое выделение памяти, а конкретно calloc.
178 1915393
>>13924
Stephen Prata, C Primer Plus
Chapter 11: Character Strings and String Functions
Досконально раздраконена тема, просто досконально. Прочитай и все вопросы про массивы/ссылки/строки отпадут начисто.
descent.jpg36 Кб, 640x480
179 1915401
Надеюсь здесь сидят шарящие анончики.
Вопрос тупой, и мне заранее стыдно, но не у кого спросить.
Смотрю на сорс моей любимой игрули детства:
https://github.com/videogamepreservation/descent
ГДЕ ТОЧКА ВХОДА?
Типа main.c или что-то такое?
180 1915433
>>15393
Не отпадут.
передача одномерного массива в функцию с параметром двумерного-кун/тян
181 1915492
>>15433

>передача одномерного массива в функцию с параметром двумерного-кун/тян


Шизоид?
182 1915504
>>15492
>>11951
https://github.com/sgreenlee/C-Primer-Plus-Exercises/blob/master/ch12/exercise09.c

Самое странное что всё прекрасно передаётся (одномерный массив в качестве двумерного в find_word).
183 1915519
>>15401
MAIN/INFERNO.C если я не ошибаюсь
184 1915528
>>15401

To build the executable, you should be able to just run maked1.bat.
Descentr.exe should be built in the main subdirectory.
sshot-2021-01-19-20-05-43.png120 Кб, 952x428
185 1915787
Для сишечки оказывается есть простенький вывод графики через эту библиотеку http://openbgi.sourceforge.net Можно даже игру небольшую накодить.
186 1915795
>>15787
проц будешь юзать.
187 1915801
>>15795
Да, вывод получается очень медленный, но зато кодить просто - для начального нубоуровня сойдет.
188 1915865
>>15528

>Descentr.exe should be built in the main subdirectory.


Ну и нахуй мне экзешник? Я же про код спрашиваю.

>>15519
Лол, точно
int main(int argc,char argv)
189 1915962
>>15787
а mlx чем не угодил?
sage 190 1916062
>>15962
Тем, что про него даже гугл не знает.
191 1916151
>>16062
MiniLibX
192 1916309
>>16151

>MiniLibX


Всегда удивляло, откуда берут такое васянское говнище (поддерживает даже BSD! ебать) без нормальной документации, сделанное на коленке даунами, которое даже скомпилироваться не может нормально?
193 1916662
>>15401

>https://github.com/videogamepreservation/descent


Вот это говнокод, пиздец.
Анон, если хочешь хорошего кода, смотри в сторону движков iD Tech.
194 1917661
>>16662

> Вот это говнокод, пиздец


Вся суть. Раньше писали крутые игры, а теперь пишут красивый код и дрочат на историю комитов, на тесты, на линтеры... что угодно, только бы не заниматься делом.
195 1917847
>>17661
Можно писать красивый код и не дрочить на коммиты. Лично я обмазываюсь линтерами из параноидальных соображений.
sshot-2021-01-22-17-05-47 - snake.zip.png27 Кб, 419x439
196 1918182
>>15787
Закодил змейку. Пипец сложновато. Ели кто хочет оценить уровень говнокода, то архив с бинарниками и исходниками прилагаю в картинке.
197 1918229
>>18182
как это в картинке?
198 1918236
>>18229
Ну типа как рар-жипег, только это зип-пнг.
199 1918249
>>18236
а как ты так сделол
200 1918255
>>18249
Раньше каритнку и архив склеивали просто вместе. Но сейчас хитрый Абу что то там нашатал и теперь его макаба вырезает все архивы у раржипегов. Сейчас надо разобраться в структуре формата джипег или пнг, покурить документацию, и встраивать архивы в подходящие для этого места внутри файла. Я так сделол.
201 1918280
>>18255
Ах тыж вредоносный анон
15142286142860.png240 Кб, 738x405
202 1918293
>>16309

>без нормальной документации


>скомпилироваться не может нормально


Так и пиши что не осилил
mcpp.PNG301 Кб, 339x423
203 1918300
Аноны, пиздец тупой реквест, но тем не менее.
Хочу Borland C/С++ IDE настроить на win10.
Какие варианты? Вроде нагуглил сборку от Раджеша Шрияпутры, но хуй я позволю этому говну ступить на мой пека.
2n9pt8.jpg46 Кб, 600x450
204 1918320
>>18182

>graphics.h

205 1918898
Если возвращать объекты из сегмента данных или стэка, то энивей будет ЮБ? Следовательно возвращать можно только кучу?
206 1918899
>>18293
Пиздос какие страшные куклы!
207 1918966
>>18898
Что такое сегмент данных в Си?
208 1918968
>>18898
Что почитать чтобы стать таким же умным как ты?
209 1918973
>>18898
А вот в каком сегменте си размещает структуры?
sage 210 1919191
Подскажите, плез, как быстро заполнить поля структуры, указанной по линку?

https://pastebin.com/etpP4MdD

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

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

Не пойму, как присобавить заполнение, как у массива структур:
temp_profile_t heater[] = { // массив структур
{0, "Profile 1", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
1, "Profile 2", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
2, "Profile 3", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
3, "Profile 4", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
4, "Profile 5", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}
},
{0, "Profile 1", true, {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},
1, "Profile 2", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
2, "Profile 3", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
3, "Profile 4", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0},
4, "Profile 5", true, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}
},
};
211 1919194
А тут кроме юмористов, кто-то ещё остался?
>>18968
Ветхий Завет и Кернигана&Ритчи.
>>18966
Всё что декларировано за пределами функций.
>>18973
Где объявишь, там и разместит.
sage 212 1919421
>>19191
(type){ initializer }, зовется compound literal.

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


Сделай функцию.

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

>>19194

> кто-то ещё остался


Мне кажется, что тред себя исчерпал или вся борда?. Но кое-кто остался, и они иногда еще отвечают.
213 1919684
>>19191
Bump.
214 1919779
>>19684
Функцию инициализации напиши. Все равно понадобится если будет увеличение объема данных или например будешь их грузить из файла.
14489889778220.jpg48 Кб, 1130x879
215 1919837
>>19779
https://onlinegdb.com/PMP_8NSgC
Сделал вот так?

Можно как-то лучше?
216 1919976
>>19837
Вимп.
217 1920356
Для вирусня ориентированного кодинга что читать/изучать?
218 1920387
>>20356
УК РФ
219 1921470
Я правильно понимаю, что по скорости расклад такой?

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

+ unrolling от 8-и шагов дает прирост ощутимый
220 1921474
>>16309
Деды вообще документаций не писали и ничего не оставляли кроме пары комментариев. Хочешь пользоваться? Сам правь исходники и исправляй ошибки. Иначе как все развиваться будет то, если до тебя все было написано, тут значит идеальная ситуация.
221 1921699
>>21470
int i; пиши в начале функции, это сэкономит время на выделение регистра!
222 1921724
>>21470
В 1980-м, да. Если сегодня, то смотри выдачу компилятора, удивишься.
223 1922759
Тред живи.
224 1922760
>>21470
Обратный цикл всегда быстрее будет. Так как меньше затрат на вычисление переменной i.
225 1922819
Кто нибудь обьясните что делать с глобальными переменными. Есть одна глобальная переменная в .h файле. Писал прогу на маке и все было бы прекрасно, но дома у меня линукс и при попытки линковки одного и того-же кода, который работал на маке, выдает ошибку о множественных включениях этой переменной. Перепробовал различные варианты external, но все еще не линкуется. Кто нибудь поясните по полочкам что да как тут, в .c или .h файле писать и прочее...
Нет, избавиться от глобалки не могу, используется везде, я умру бегать по куче файлов\функций передавая одну переменную
226 1922829
>>22760
При обнулении битов электричества меньше тратится?
2021-01-27.png57 Кб, 1920x1080
227 1922906
228 1922923
>>22819
Pragma once не является стандартом, поддержка зависит от компилятора.
229 1922924
Ты же в курсе что такое хедер гарды?
230 1922948
>>22819
Глобальная переменная должна жить в какой-то одной единице трансляции.

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

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

>>22923
Все компиляторы уже лет 10 его поддерживают, норм.
231 1922953
>>22948
Почему тогда у него на маке работает, а на линуксе нет?
232 1922974
>>22819
Код в студию.
233 1923017
>>22953
Полгода назад зарелизился новый GCC, в котором отпилили поддержку глобальных переменных в хедере. Оно как бы работало, но так нельзя было делать. Теперь вообще нельзя. Вероятно на маке еще не дошли до этого. Делай как говорит этот анон >>22948
234 1923074
>>22923
Прагма тут вообще не при чем: что с ней, что с ifdef'ами у него глобалка объявляется в каждом .c-файле, включающем хедер.
Тут скорее интереснее, каким образом на маке "всио собиралось".
235 1923243
Почему у меня каждый раз полукаются макароны из функций?
Где почитать как более менее нормально программировать?
Каждый раз настроение от этой хуйни падает.
236 1923262
>>23243
Посмотри исходники реального софта типа ZSH и узбагойсо.
237 1923266
>>23262
Там сложно
238 1923328
>>22829
Ну сравнить одно число с другим и определить какое больше это две разные операции, мне кажется четкое сравнение быстрее будет, чем побитовое решение где больше, а где меньше, хотя хз
239 1923449
>>23243

>макароны из функций


Тащи пример
240 1923490
>>23243

> Почему у меня каждый раз полукаются макароны из функций?


Большие функции или много маленьких?

> Где почитать как более менее нормально программировать?


Ядро bsd, linux.
241 1923522
>>23490
Когда хочу добавить новый функционал, то не могу просто написать все в новую функцию, приходится редактировать старые функции тоже. Получается все размазанно по всей программе и добавлять новый код все сложней и запутанней.
242 1923540
>>23522
Это все придет с опытом, без этого никак. А вообще, читай "Чистый код", "совершенный код" и тому подобное. Принцип SOLID. Язык Си конечно низкоуровневый и не очень выразительный, поэтому провоцирует слишком закапываться в детали реализации - в других языках там бы просто гонялись объекты взад вперед, а каждая функция занималась только своей маленькой задачей.
243 1923592
>>22906
Убери прагму или замени на каноничные ифдефы.
Ругается сс glob.c main.c func.c ?
244 1923934
>>23243
Рассматривай каждую функцию как один маленький модуль.
С нулевой зависимостью от макросов, глобальных переменных. Здесь лучше расширять интерфейс, нежели увеличивать зависимость от ебеней. На нижнем уровне пишешь из таких вот функций, на верхнем - из больших процедур.
1354948987654.png878 Кб, 1280x720
245 1924625
>>04954 (OP)
Особо не надеюсь, но может кто то подскажет название. Читал в сосничестве около десятка лет назад книжку. Там всякие советы по написанию кода были. Половина книжки была про Си вторая про плюсы.
246 1924697
>>24625
Книгам место в сортире. Чтобы познать дао, надо писать и читать код ядра.
247 1924724
>>24697
Дай ссылку на код ядра.
248 1924783
>>24697

>Чтоб поесть говна, надо писать и читать код ядра.

249 1924839
>>24697

>надо писать


и что там писать? MMU?
Герберт Шилдт - Полный справочник по C.7z.png679 Кб, 368x512
250 1924962
изображение.png2,6 Мб, 1911x2776
251 1925564
Существует ли сабж в электронном виде? После его же книги по С++ покупать не хочется, а посмотреть интересно.
252 1925744
Аноны, учу С# используя visual studio 2019. Проблема в том, что использую 2 разных компьютера в разных местах. Если возможность запихнуть проекты в подобие облака? Ебался с гитхабом, но толку мало, проект туда с одного компа запихнул, а как его вытащить на другом компе не понял.
253 1925896
>>25744
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)

Поставь себе терминал нормальный на Винде и гит тоже, ты как я понял через сайт все делал, там это сделано для экстренных случаев, так делать не стоит. И так в этой сфере даже минимально развиться не сможешь. Я чутка набросал команды основные, сам давно не пользовался.
254 1925899
>>25896
git add можно без .
git init projectname создаст папку отдельную, если хочешь в этой же папке стартануть, то просто git init

А я тут посмотрел, тебе и терминал не нужен, на Винде Гит с включенным терминалом поставляется в программу саму.
255 1926294
>>24839
Есть mit'шный курс по операционным системам на си, где нужно допиливать xv6. Хорошая штука, всем советую.

мимо
256 1926409
>>08303

>может удалить вообще весь код, который сам по себе может привести к UB. В том числе проверки, этот UB предотвращающие!



Бля, дебилы, делают UB в "проверке", "предотвращающей" UB, компилятор удаляет "проверку"
-- РРЯЯ, конпелятор меня ненавидит!
257 1926433
>>26409
Да здравствует -O0!
258 1926542
>>04954 (OP)
Господа, посоветуйте атомарный инкремент/декрементдля size_t, ну чтоб переносимый. Спасибо.
259 1926552
>>26542
Самый тупой способ - бахнуть 2 статические инлайн функции для инкремента и декремента в заголовочнике, внутри функций детектить компилятор через условную компиляцию и сделать вызов нужных builtin функций для атомарных операций из нужного компилятора. Подключаешь заголовочник - есть переносимые атомики для size_t. Как-то так.
260 1927179
>>04954 (OP)
Есть один uint32.
Как узнать, сколько всего битов в нем равны единице?
Короче говоря, нужна функция, которая бы брала аргументом uint32 и выдавала число битков в нем.
Пока что на ум приходит только простым перебором, типо 32 раза сдвигать число, проверять первый бит и если единица инкрементировать счетчик, но может есть более быстрые и рациональные способы?
261 1927183
>>26552

>статические инлайн функции


Помню как то прогал давно на с89 и нужна была инлайн функция для быстродействия, но компилятор её не поддерживал.
Единственным способом задать инлайн функции (в том числе и с аргументами) получилось только через макрос.
263 1927333
>>27179
__builtin_popcount и подобные
264 1927381
>>27179
Это реально в какой то задаче понадобилось? Или это просто в универе задание со звездочкой?
265 1927487
Братушки поясните особенности в динамическом и статическом массиве на пальцах. Типо одно используют для того второе для другого потому что так и так.
Я заебался смотреть 20 минутные видосы и хуй поймёшь.
Я так и не понимаю почему иногда массив чаров я могу отправлять в функцию, а иногда выходит ошибка. Или что почитать. Или только в процессе драк с компилятором можно привыкнуть к синтаксису?
266 1927522
Кто то может пояснить, есть ли на си нормальные готовые библиотеки? Хочу вкатываться и писать простой хакерский софт
267 1927527
>>27381
Бывает нужно если число используется как битовая маска

Например у тебя есть массив объектов, и массив uint32 который используется как маска какие объекты активны, какие нет. И тебе нужно посчитать сколько объектов активны.
268 1927534
>>27487
И то, и то кусок памяти. Один определен в секции в исполняемом файле, а какой-то выделяется в рантайме. Разница только в выделении и освобождении(если требуется) этой памятьи.
Вполне возможно ты где-то с синтаксисом ошибся.
269 1927607
>>27381
В некоторых протоколах минимальный контроль ошибок делается выставлением бита четности.
270 1927737
>>27534
Братиш, а вот если я пока не пользуюсь массивами больше 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.

}
270 1927737
>>27534
Братиш, а вот если я пока не пользуюсь массивами больше 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.

}
271 1927809
Программисты, а вы счет древних русов знаете?
272 1927948
>>27737
Будто я знаю зачем тебе это. Поставь себе задачу и думай как ее решить лучше.

Нихера не статик. Ты выделил на стеке. Массив внутри с массивами. Судя по всему передаешь в функцию которая ожидает чисто указатель. Что это за ерунда?
Тебе б синтаксис учить и вникать почему все так. Язык Си тупее чем ты думаешь. И думать за тебя он не будет.
273 1927973
>>27607
Это понятно, но это обычно на ходу считается же - принимаешь каждый бит и сдвигаешь, потом в конце смотришь сошлось или нет - popcount тут не нужен.
274 1928150
>>27948
Харкач звёздочки убрал во входных в функции
Функция Array_nuller принимает инт, и чар array

Я хочу двумерный массив забить ноликами. Чяднт?
275 1928155
>>28150
Может в чар инт пишешь?
276 1928180
Вместо звёздочек поставил 'ж'
void array_nuller(int x, char жж array)
{
int j;
int i;

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

int main ()
{
int x;

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

array_nuller(x, array);

return (0);
}
276 1928180
Вместо звёздочек поставил 'ж'
void array_nuller(int x, char жж array)
{
int j;
int i;

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

int main ()
{
int x;

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

array_nuller(x, array);

return (0);
}
277 1928183
>>27973
Это если какой нибудь уарт программируешь, а когда надо послать целиком битый пакет для проверки?
278 1928236
>>28180
Используй
for i... for j... a[i@x+j] = 0;
279 1928482
>>27179
Переведи его в двоичную систему исчисления через рекурсию, либо через циклы, сложи результаты в массив, как я помню с помощью рекурсии у тебя все как надо сложится, а в цикле сам смотри как. Ну и посчитвй единицы в числе. Как пример.
280 1928558
>>27179

>более быстрые


Если память - не проблема (не жёсткий эмбеддед), то самое быстрое будет таблица на 64к с заранее расчитываемыми при старте программы (ну или например при компиляции если кресты, или захардкодить) значениями числа битов для всех двухбайтовых чисел. Тупо берешь пару чисел по индексу верхних и нижних двух байт твоего числа и складываешь.
281 1928561
>>28558
Cache misses
282 1928566
>>28561
Ну ок, если 64к не влезет, пусть будет таблица на 256 чисел и складываем 4 числа, а не 2.
283 1929405
>>28566
Зачем если есть инструкция в процессоре?
284 1929425
>>29405
Гарантируешь, что есть в любом процессоре?
285 1929430
>>29425
В любом десктопном есть
286 1929434
>>29430

>десктопном


Ясно.
287 1930354
>>28180

>я хочу двумерный массив забить ноликами


Не понял твоего кода вообще, но вот решение.

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

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

Это VLA (Variable Length Array), если хочешь попроще то просто замени ptr[][side] на ptr[][4], но потеряется гибкость и тебе все равно придется передавать side как формальный аргумент, так что смысла в этом мало.
288 1932610
>>28180

>array[++j] < x


могу ошибиться, но ты сравниваешь адрес с интежером. о чем тебе и вопит конпелятор
289 1932681
Наверняка платина, но вдруг у кого есть решение. Коротко говоря хочу такой макрос #define inv(var, method, args...) typename(var)##__##method (args), ну чтоб оно работало. То есть например чтоб такой код:
Vec v = (...)
Data data = inv (v, get, 1)
превращался в
Data data = Vec__get(v, 1)
Поковырялся с _Generic, но там вообще странное мутное говнище получается.
Спасибо.
290 1932749
>>32681
Я думаю ты перерос Си
291 1932805
>>32681
Имя типа по объекту, насколько я понимаю, можно только в С++ получить. Хотя возможно gcc предоставляет какой-то спрятанный builtin_type_name для C. Но в документации пусто об этом.
Остальное вроде не проблема, по типу VA_ARGS с двумя подчеркиваниями в начале и в конце, указатель на объект кидать первым аргументом во все функции, ну и функции накидать с нужными именами.
292 1933193
Посоветуйте годную бесплатную IDE для С, типа Анаконды для пайтона?
293 1933212
>>33193
VS community, Xcode чем не устраивают?
294 1933243
>>33212

>VS community


Visual Studio Code в смысле? Я просто перекатываюсь с пайтона на С/С++ для числовых вычислений, не особо разбираюсь в обстановке. Научных дистрибутивов типа Анаконды, я так понимаю, для С нету.
295 1933290
>>32805
>>32749
Ну, вдруг охуенное решение есть, а я ни ухом не рылом. Спасибо в любом случае.
296 1933294
>>33290
Попробуй кодогенерацию.
297 1933296
>>33243
Нет, VS community это Visual Studio версии Community (а не платный энтерпрайз и прочее)
Visual Studio Code это вообще блокнот с продвинутой подсветкой и плагинами, то есть другое.
9781466569676.tif388 Кб, 806x1200
298 1933311
>>33296
Ок, спасибо. Как я понимаю, я устанавливаю VS community, открываю книгу Праты и начинаю знакомство с основами, а после этого можно будет перейти и к другим специфическим вещам типа пикрила, да?
299 1933675
>>33311
Watcom, Code-Block иде.
300 1933685
>>33675

>Code-Block иде


О, спасибо, а то я начал устанавливать VS community, выбрал Clang-компилятор, а там сразу до десятка Гб на жестком диске затребовало, которых у меня нет.
301 1933706
>>33685
Так удоли игры и порнуху
302 1933738
>>33706
У меня на диске С места нету (дома компьютер старый, всего 30 Гб на диске С, свободно 2), а VS community туда почему-то лезет, даже если я все устанавливаю на диск D.
303 1933758
>>33685
ставь мс-компилятор
304 1933820
Допустим я хочу подучить ассемблер и попиздиться с gcc. Если я реализую одну и ту же функцию на сишке, а потом на ассемблере, то как проверить какая из них быстрее? С флагом -O3 вызовы функции в main либо просто оптимизируются, либо результат вычисляется предваритально. Да и если в цикл эти функции обернуть, то там наверное какое-нибудь кэширование будет на низком уровне, неестественно ускоряющее работу функций, но я в этом не разбираюсь.
305 1933891
>>33820
google benchmark, ну или сам напиши свой бенчмарк через rdtsc или QueryPerformanceCounter в винде
306 1933966
СУКА ЕБАНАЯ СИДЕЛ ВЕЛОСИПЕДЫ НАХУЙ ИЗОБРЕТАЛ БЛЯТЬ НАХУЙ ЛУЧШЕ НА БУМАГЕ НАХУЙ НАЧИНАТЬ ЧЕМ СИДЕТЬ ПО 2 ЧАСА РЕШАТЬ ЛЕГКУЮ ХУЙНЮ
307 1933970
>>33820
Проверяемую функцию - в отдельный файл.
308 1933972
>>33706
Удалил игры и порнуху кстати, уже 2 недели не играю просто сижу пишу код и бегаю. Не могу отпустить Си сука такой интересный язык, а деньги зарабатывать надо и деньги кончаются что делать сука стать бомжом с макбуком?
Я весь год сидел занимался Сишечкой, вон в игры вкатываюсь но как оказалось знание физики и математики нужно чтобы получалось годно, а еще алгоритмы и структуры данных. Но я 9 классник, планирую поступать в какую нибудь шарагу при техническом вузе или заканчивать 10 и 11. Благо к деградаций интерес исчез и всё что я делаю это код и учеба
309 1933974
>>33972
А да, че высрался то, ребят я хотел заработать деньги на вебе, я долбоеб же да? Или у меня есть перспективы всё таки зарабатывать без корочки на Сишечке и плюсах на учёбу и покушать?
310 1933976
Прастите что сру своим говном никому нахуй не нужным, тред Си мне ближе всех что есть из интернет ресурсов, кроме конеш какой нибудь плеромы
311 1933979
>>33972
А да мне 23.
312 1933981

> 9 классник


Репорт.
313 1933988
>>33981
23 летний 9 классник
314 1934134
>>32681
Охуеть чувак ты крут.
315 1934135
>>33974
Для веба тебе тоже диск понадобится под ноду.
316 1934138
>>34135
Извини, диск? Или ты имеешь ввиду освоить как следует Си выше уровня вкатывальщика (На данный момент я разбираю ресурсы на awesome c, и параллельно вот уже заканчиваю Прату) и вкатываться в веб?
317 1934290
>>34138
Я имею в виду что для веба тебе тоже придется купить новый диск, потому что там очень раздутые инструменты по десятку гигов. Голый хтмл в блокноте там не котируется, тебе придется пачками выкачивать либы зависимостей.
318 1934305
>>34290
А всё понял. Спасибо за совет дружище. Если интересно. Я все таки продолжу глобальное изучение C, пока не изучу всё что связано. И попробую работу найти, а там если получится то в плюсы.
319 1934783
бля, поцонва
короче вопрос к вам всем (если увидете это сообщение в Си треде - не обессудьте, похожий вопрос просто)
короче я вот школотрон 23 лет, в этом году заканчиваю шарагу
в ООО РогаИКопыта я занимался топовыми задачами, связанными с железом (ну всм не один тянул проект, а в команде в роли ждуна) типа датчиков в металургии, контроллеров приводов и прч штуках
занимался этим два года
но есть трабл - в этой конторе даже у руководителей зп 45-50, у меня ее вообще нет - чалюсь там только из-за кайфа работы с реальным железом и я вот хочу сменить профессию
но смотрю на хабр карьеру/ххру - пиздец
из ОЙТИ одни жанги\спинг\датасосист
А в си одни НИИУУПГУИПМС, где с зп, думаю, также
че, все вообще плохо? я зря учился роботов программировать 6 лет бля?
320 1934847
>>34783
Кент в НИИХУЯ за 100+к погромирует и там это не предел
Но это правда в ДС
321 1934898
>>34847
я в дс
а он в каком нии? сильный данон, если скажешь?
322 1934978
323 1935050
А подскажите где можно почитать про использование компилятора?
пока варианты такие man gcc, глава в прате programming mechanics. В КиР вроде нет про это.
Мне немного надо, прост ликбез для курса в шараге.
325 1935253
https://www.youtube.com/watch?v=335ylTUlyng
Про тулчейн для новичков
326 1935588
Экспериментирую с функцией fopen с параметром r+b, в неё сохраняю строку с fwrite, буфер с 1024 битами. Как вообще двигаться по записям внутри файла если используешь бинарный режим? С помощью этого самого буфера? Мол, нужна запись, берешь её индекс и двигаешь указатель файла с константой буфера? Или как? А удалять как, интересно? Размер буфера должен быть неизменяем, т.е при любых обстоятельствах быть 1024?
327 1935599
>>35083
Мимокрок

Ага вот как оказывается, сука.
328 1936001
>>35588
Попей таблетки, почитай ман.
329 1936090
пацаны, расскажите какие зарплаты в эмбедеде? думаю вкатиться туда, пару лет набраться опыта и съебать в омурику, где этим занимается не только концерн залупки
проживу пару лет с этой зп? Есть в районе 100? 150?
330 1936204
>>36090
Ты ёбнулся что ли? Какие 100-150? На питоне / джаваскрипте еще реально такие суммы поднимать. Сишники сосут бибу. 80-90 потолок.За пару лет ты такого опыта не наберешься.
331 1936318
>>36204
Вакансии системного прогера от 100к обычно

мимо
332 1936321
>>36001
Какой ман? Какие таблетки? Конкретику пожалуйста.
333 1936322
>>36318
Посмотрел на hh и indeed С/С++ эмбеду в ДС платят 150-300К в мес, сибирь 60-120, на востоке 80-150. Поляндия 7000$ сеньору.
334 1936323
>>36204
Пошел нахуй пиздабол
335 1936407
>>36322
>>36090
так я в дс как раз, звучит как зп питоняки или крестовика
жаба конечно ебет
но даже 150 это хорошо (лично для меня)
главное, чтобы рост был (и знаний и зп)
поэтому я бы еще раз свой вопрос задал именно ДСникам
че по зп, столичники?
336 1936626
>>36407
Чувак в ДС ВСË ОХУЕННО!
337 1936637
>>36626
стеб, не?
338 1936784
>>36637
Считаю, что не стёб. В ДС и дс2 зарплаты большие даже на не очень существенных должностях.
339 1936965
>>36637
Сука я понимаю что здесь всё мертво уже давным давно потому что с долбоебами общаться никто не хочет, но сука свои мозги то можно использовать иногда?
340 1937111
>>36965
ты стебешься сейчас?
341 1937178
>>36323
Это ты вот этому >>36322 и этому >>36318 скажи. На хх он смотрел, лол. Я ДСник говорю, что Сишники потихоньку вытесняются скриптодебилами. Ржавчина и змея, увы отъедают нишу. Эмбеддед навроде ардуины/стм32 только на западе хорошо оплачивается, но туда абы кого с курсами на юдему за плечами не возьмут.
342 1937520
>>37111
Твоя неуверенность над тобой стебется.
343 1937614
>>37520
бля мне кажется, что ты стебешься надо мной
344 1937615
>>37178
ну хз чел
у меня 150 зп
взяли после ООО РогаИКопыта
345 1937627
>>37178
тут другой вопрос, скорее, в том, что не очень то и премиальные компашки
реально концер залупки и прочее
но иногда платят, причем иногда даже неплохо
хз насколько такой опыт будет катироваться за бугром

> Ржавчина и змея, увы отъедают нишу


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

Имхо, наоборот вся эта залупа только развивается
ИоТ набирает обороты, робототехника набирает обороты
появились направления у Шмяндекса, сбера
Всегда ей касперский, нвидиа, хуевей
короче хуйню сказал, все норм и сишников
мне, кстати, интересно, у байтоебов яндекс тоже спрашивает АЛГОРИТМЫ сортировки и прочее говно?
346 1937632
>>37627
+ самсунг
347 1938155
>>37627

>ИоТ набирает обороты, робототехника набирает обороты


Я про ИоТ слышу уже лет 7, а про робототехнику так вообще всю жизнь.
Но на самом деле нет никакой робототехники, нет ИоТ. В РФ уж точно нет, максимум на западе стартапы есть и крупные концерны, где нужны промышленные роботы.
348 1938171
>>38155
согласен
но еще, пожалуй, скажу, что в сколково есть N стартапов с роботами
но вообще сколково это страна ардуино и машинного обучения ЛОЛ
349 1938201
>>37178

>Ржавчина и змея


А как же реалтаймовость? Если на расте еще можно как-то извернуться (и то большой вопрос как его к RTOS прикручивать), то питон сразу мимо. И да, реалтайм это в первую очередь не про скорость, а ее предсказуемость.
350 1938263
вопрос немного нерелейтед, но какой питун лучше поучить, чтобы понимать инитскрипты ядра?
image.png405 Кб, 796x380
351 1938268
Сап байтач. Есть один X220. Хочу наколхозить в него кастомный многоцветный светодиод. Например - чтобы краснел, если пинги растут или пакеты пропадают (WiFi в жопе мира, взять ложку вместо ножа не предлагать, мне интересна сама задача).

Правильно я понимаю, что мне нужно брать какой-то микроконтроллер, совмещённый с USB интерфейсом, что-то типа ATmega88, подключать его ко внутренним USB и писать драйвер?
Есть варианты проще или наоборот - совершенней и гибче?
Как получить входные команды, кроме USB?
Как бы ты это сделал?
Надеюсь, не промахнулся разделом/тредом.
352 1938275
>>38263
systemd
какой вопрос - такой ответ
353 1938278
>>36321
man fread
Таблетки - риспредал
354 1938300
>>37627
Верно.
>>37632
Вот это ваще двачую, общался с Поляком сишником, его с зубами оторвали нахуй с учебы в самсунг работать, потом его выбил кто-то в гугл, Питон не знал на момент когда общались, лол.
355 1938301
>>38268
В радио чуваки вроде знают Си.
356 1938324
>>07027

> алгоритмический скриптомакакинг.


> Скриптомакака - как плохой начальник.


Эк тебя разворотило. Сравнил зп настоящих интеллектуалов эмбеддеров и глупых никудышных "скриптомакак"?
357 1938413
Хотел вам вопросов задать, кто нибудь делает взносы (комиты) на гите какому нибудь проекту? Нормально ли нововышедшему Сишнику таким заниматься, или другие варианты есть?
Как новичку развиваться лучше? Писать свои проги и выкладывать на всеобщее обозрение? Олимпиады? Или же проектик какой нибудь сделать, типа часов или другой полезной утвари? Идти в контору напрашиваться или завод?
358 1938434
>>38413
ты в унике?
359 1938571
>>38434
Неа, думаю поступать.
360 1938585
>>38571
бля, школотрон, ты чего так на работу попасть хочешь? Конечно, обучение на работе имеет место быть, но не это обучение из рарзяда "вот структуры в си делаются ТАК, а перифирия работает ТАК" - это все уник + свои доп занятия. К моменту выхода на работу ты максимум должен быть не очень знаком со стеком (специфичный проц, мб какая-нибудь задроченная архитектура системы)
лучше поступить на соотвествующую кафедру и там хреначить курсовые нормально, а не "чтобы сдать"
при условии, что ты найдешь годного научника, проекты могут быть и правда серьезными
Кстати советую не проебывать микропроцессорную технику
если же по каким-либо причинам тебе прям нужно пойти на работу (ну вдруг родители не могут содержать, это норм), то, конечно, пет проекты топ.
Но если тебя твои смогут до 3 курса содержать, то лучше наберись знаний на курсачах + петика
а с 3 курса уже дерзай
image.png51 Кб, 408x234
361 1938617
>>38301
Чёрт, так и знал.
??????????-????-???????????-(118).jpg85 Кб, 706x638
362 1938920
Как получить родительскую структуру? parentof() и containerof() карочи.
363 1938936
>>38920

>container_of


Да
364 1938967
>>38268
Если под прыщами, то через псевдофс /proc. Можно напрямую общаться. Скрипт на питоне с гуи можно запиздячить. Си + gui либы tk/gtk так же легко пишуться.
365 1938992
>>38936
А что именно "да"? я просто спрашивал, как ее имплементировать. а то для меня подобные трики, словно поиск нарика по шприцу, оставленному в заброшенном толчке пару недель назад.
image.png585 Кб, 480x640
366 1939002
>>38967
Ух ты, вот это тема. Програмную часть понял, буду пробовать, как контроллер приедет.
Не ждал ответа, репостнул в rа.
Спасибо!
367 1939005
>>38268
взял бы платку arduino
(писать под нее можно и на с)
с usb. настроил бы на ней uart
написал бы консольную прогу
которая через com порт будет
общаться с этой ардуиной
и приговнякал бы к ардуинке
этот разноцветный светодиод
368 1939026
>>39005

>взял бы платку arduino


Ну это совсем на поверхности идея. Но выглядеть будет совсем вырвиглазно. Хотелось бы чего-то компактнее.

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

На втором пике контроллер с USB на борту, его должно хватить.
369 1939070
>>39026

>Хотелось бы чего-то компактнее


хакнуть встроенный диод?
370 1939080
>>39070

>хакнуть встроенный диод?


Да, например. Решение красивое и аккуратное, если с исполнением не налажать. По аппаратной/програмной части идей нет?
Cтавлю внутрь PIC, cажаю на USB и командую им через псевдофс.
371 1939184
>>38992
Если не в силах сам написать - погугли и скопипасть чужой макрос, в ядре Линукс точно есть container_of.
372 1939250
>>38585
Уже не школотрон, но это подходит и под меня. Благодарю.
373 1939412
>>39002
Пожалуйста. Изучай линукс. Для embedded, разных IoT, модулей навроде стм/ардуино — это просто кайф. Сперма/макакоось таких возможностей не имеет. И разработка простая будет, поддержка, сообщество огромное. Весьма рекомендую. Только предварительно почитай про внутреннее устройство линукса.
374 1940258
с чего начать изучение СЕЙ чтобы вкатиться в nasa jpl ?
есть ли ихние РЕЦЕПТЫ и СТИЛИ программирования?
где почитать какие ЗАДАЧИ в nasa jpl надо кодить на СЯХ?
375 1940342
Вопрос по WinAPI: Каким образом CreateProcess получает сведения о созданном до вызова этой функции безымянном канале?
376 1940361
>>40342
Наверное таким же образом как и родительский процесс может знать pid дочернего процесса.
377 1940391
>>39412
Я бы посоветовал виртуалочки, так безопасней экспериментировать.
378 1940395
Правду ли говорят, что питон медленный и его не стоит использовать для разработки всерьёз, и лучше вообще не учить, а учить C и ассемблер?
379 1940400
Я придумал себе такую задачку и внезапно всплыл один вопрос:

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

Что быстрее? Внутри цикла А наращивать Б, каждый раз проверяя условие, что А >= 5, или вынести наращивание Б в отдельный цикл за цикл для А и перед наращиванием Б проверить один раз, что А >= Б, но каждый раз проверять, равны ли А и Б? Я предусматриваю возможность, что по достижению цикла с Б, А может быть равно чему угодно от 0 до 10.
380 1940407
>>40400

> придумал себе такую задачку


Заметно.
381 1940417
>>40407
Что сказать то хотел? Зачем бессмысленный пост создавать?
382 1940419
>>40417

>Что сказать то хотел?


Что неудавшиеся программисты идут в аналитики и пишут вот такие ТЗ, а мы типа телепаты и должны это говно разбирать.
image.png305 Кб, 474x477
383 1940425
384 1940547
>>40400
Если А будет параметром цикла то Б надо в нем же и изменять.
c.jpg93 Кб, 1280x711
385 1940587
>>40391
Какие виртуалочки, от чего они меня должны спасти.
386 1941359
fputs добавляет строку к существующим символам в файле? Если да, то как заменить, а не добавить?
387 1941366
>>41359
А проверить слабо?
В описании не написано об этом, значит может быть что угодно
388 1941450
>>40391
А я где-то писал про установку прыщей как основной системы?
389 1942982
>>41359
fseek
390 1943002
>>38155

>В РФ уж точно нет


по сути промышленная роботехника это синоним автоматизированных конвеерных линий на производстве
но при этом в россии нет собственного станкостроения сегодня вообще
в 89 году делали 120 тысяч станков, сегодня - меньше тысячи
соответственно, никакой речи о автоматизированном промышленном производстве не может идти, когда у нас нет производства обычного оборудования, лол
391 1943661
Аноны, помогите. Пытаюсь понять, как работает обмен данными по анонимному каналу, нихуя не понимаю. Дайте мне примеры родительского и дочернего процессов, с обменном значением переменной или строки между ними, я наверняка пойму что-то, прочитав пример с минимумом кода.
изображение.png13 Кб, 571x222
392 1944519
Вот такая хуйня на официальном сайте мелкомягких. Что с этим делать? Почему не работает?

https://docs.microsoft.com/en-us/windows/win32/ProcThread/creating-a-child-process-with-redirected-input-and-output
393 1944653
>>44519
Фиксить, очевидно же
Ошибка вполне очевидная
394 1944663
>>44653
Я не понимаю, как исправить.
изображение.png6 Кб, 522x86
395 1944666
>>44653
Я могу только вот так, но не уверен, что не будет ошибок.
изображение.png34 Кб, 789x523
396 1944669
>>44653
О чём я и писал. Ошибка.
397 1944670
А, я скобку забыл >>44669. Проехали.
IMG20200330005848018-3-b-98f0.jpg107 Кб, 1280x853
398 1944685
Почитал про error handling и появилось несколько вопросов.
1. assert() поднимает SIGABT? Если да, то можно использовать

>signal(SIGABT, uninit);



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

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

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

>и деаллоцировать память?


Нет. У обработчиков сигналов куча ограничение, динамическое управление памятью одно из них.
400 1944743
>>44685

> Почитал про error handling и появилось несколько вопросов.


> 1. assert() поднимает SIGABT? Если да, то можно использовать


> >signal(SIGABT, uninit);


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


Зачем деаллоцировать память при выходе из программы?
По-моему есть смысл только файловые дескрипторы закрыть.

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


Около 140 значений у errno, если верить заголовочнику.

> 3. setjmp() сохраняет регистры в буффер и соответствующий адрес?


> как это можно использовать для управления ошибками.


longjmp вернёт выполнение в место где была вызвана функция setjmp.
Хуевая идея это использовать для управления ошибками.
401 1945342
Ещё раз пытаюсь запостить картинку, так как двач дважды её не загрузил.
402 1945395
>>45342
Говорят надо включить где то в настройках двача remove exif
403 1945399
Привет, аноны, я питонист, возникла необходимость запустить для теста функцию, но в си вообще не понимаю и честно говоря уже заебался за сегодня, 4-й язык который приходится осознавать за сегодня после жс, джавы, с++, вот код https://github.com/fengjixuchui/Tiktok/blob/master/douyin.c
В самом конце есть 2 функции XlogDecrypt и XlogEncrypt, скажите что написать в этом коде, чтобы передать в функции строку(либо хекс, я не уверен) и мне выдало ответ, прошу хелп
404 1945401
>>45399
Желательно в виде простой строки в консоль, алсо можете написать как вообще запускать си код, пока сам пойду гугллить
изображение.png4 Кб, 379x263
405 1945402
406 1945406
do{
scanf("%c", &stavka);
i++;
//getchar();
printf("Âû ââåëè %c\n", stavka);
scanf("%*[^\n]");

if (stavka == 'a' || stavka == 'b' || stavka == 'c' || stavka== 'q'){
flag = 0;
}
else {
flag = 1;
printf("Íåâåðíûå äàííûå ïîâòîðèòå ââîä %c %d ðàç\n", stavka, i );
}
} while (flag);
407 1945415
>>45399
Понял что могу онлайн компилировать и нужно видимо просто мейн функцию прописать, главный вопрос для меня
uchar __stdcall XlogDecrypt(uchar data, int *psize)
звездочка как я понимаю это указатель, как мне правильно вызвать функцию? Что в нее передавать, даже не до конца понимаю что такое uchar, указатель на символ определенно размерности? Т.е в эту функцию передаются символы, он с ними работает и возвращает тоже символы? Верно? А передавать в функцию мне нужно указатели на каждый символ, так?
408 1945418
409 1945434
>>44519
Вроде бы надо добавить литерал L"твоястрока".
image.jpg11 Кб, 225x225
410 1945837
>>44519

> Вместо


> if (pipe(fds)) err(1, "pipe");

411 1945921
>>45434
>>45837
Я не понимаю.
412 1945943
>>45921
Наверно имеется ввиду переходи на светлую сторону Линух.
413 1945985
>>45943
Нет. Я по-прежнему жду помощи в изучении обмена данными между родительским и дочерним процессами по анонимному каналу в винде.
414 1946405
>>45399
бля, санек, я настучу твоему пм что ты на дваче ищещь решение того за что тебе в принципе на фирме платят деньги
415 1946460
>>46405
Не знаю кто ты, даун, но мне похуй. Я, честно сказать, никого из вас в отделе за людей даже не считаю.
416 1946618
>>46405
Я вообще мимодурачек, случайно подписался на взлом тиктока блять, уже в горле эта хуйня сидит и разбираться в си нет сил, поэтому тут спрашиваю
417 1946659
>>46618

> взлом тиктока


Ору
418 1947067
Подскажите временную сложность free();
O(1) или O(n)?
419 1947074
Помогите пожалуйста, почему на else проход идёт?
420 1947120
>>47074
Ооо, по Прате что ли модифицированное задание решаешь. А зачем тебе вообще if else, если с конкретным значением сравниваешь, тут switch нужен.
421 1947275
>>47067
Думаю если ты поймёшь, что в данном случае на самом деле означает n, у тебя отпадут вопросы.
422 1947352
>>47120
Отдельную функцию ввода хочу сделать, а потом свитч.
423 1947511
>>47074
Попробуй после scanf
while(getchar() != '\n') continue;
424 1947553
>>40587
что мне нужно написать в юзерспейсе, чтобы прямо сейчас сжечь собственную мать?
425 1947572
>>47553
Программу для расчетов и обязательно юзать avx инструкции, avx инструкции, avx инструкции, avx инструкции, avx инструкции.
426 1947627
>>46659
да там делов-то, всего ничего, осталось только понять как сраный код на си запускать, там типы данных, которые видимо даже не инклюдяться никак и никак не обосзначаются типа алиасом, uchar, вот что за хуйня как и LOCAL
1613854369218.png164 Кб, 1080x1920
427 1947975
428 1948252
>>47553
Программу для коммуникации с драйвером режима ядра. А уже в драйвере организовываешь прямой доступ к портам/памяти.
429 1948290
>>47975
Да, я мудак, не заметил что в инклюдах не <> а ""
430 1948351
Аноны, я сейчас серьёзно, помогите мне разобраться, как записать что-нибудь в безымянный канал в родительском процессе, чтобы отправить это в дочерний по перенаправленному вводу.

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

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

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

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

> logcompileprog.log



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

recipe prog.c

Есть такая возможность в мейке?
432 1948734
>>48351
Ты пигешь на С++, обалдуй, в другой тред идуй.
433 1948856
>>48734

>пук

434 1948925
>>48734

>пук

image.png712 Кб, 1664x494
435 1948928
Где могут пригодиться битовые маски?
436 1948929
>>48928
нихуя себе что с форматированием
437 1948933
>>40258

>вкатиться в nasa jpl


Поступаешь в МВТУ им. Дауна на ракетную инженерию (возможно еще робототехника будет норм), ходишь в МКЦ, крутишься кабанчиком, вкатываешься в науку, идешь в магистратуру сколтеха, в аспирантуру за рубеж, там находишь нужных людей, которые тебя в nasa jpl перевезут. И вот тогда можешь начинать программировать космические корабли и марсоходы.
Но скорее всего ты проебешься и окажешься инженером-конструктором на ГКНПЦ им. Хруничева или другом менее понтовом заводе Роскосмоса, где будешь 10 лет работать за зп 50-60к.
438 1948943
>>48928
При битоебле, разумеется!
439 1949324
Анончики. Решаю задачу на преобразование инт в чар. Подскажите, где же я проебываю первую цифру?

#include<unistd.h>

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

i = 0;
a = 0;
if (nb < 0)
{
nb = -nb;
a = 1;
}
while (nb > 9)
{
c[i++] = (nb % 10) + '0';
nb = nb / 10;
}
c[i++] = nb;
if (a == 1)
{
c = '-';
}
while (i >= 0) write(1, &c[i--], 1);
}
439 1949324
Анончики. Решаю задачу на преобразование инт в чар. Подскажите, где же я проебываю первую цифру?

#include<unistd.h>

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

i = 0;
a = 0;
if (nb < 0)
{
nb = -nb;
a = 1;
}
while (nb > 9)
{
c[i++] = (nb % 10) + '0';
nb = nb / 10;
}
c[i++] = nb;
if (a == 1)
{
c = '-';
}
while (i >= 0) write(1, &c[i--], 1);
}
440 1949325
#include<unistd.h>

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

i = 0;
a = 0;
if (nb < 0)
{
nb = -nb;
a = 1;
}
while (nb > 9)
{
c[i++] = (nb % 10) + '0';
nb = nb / 10;
}
c[i++] = nb;
if (a == 1)
{
c = '-';
}
while (i >= 0) write(1, &c[i--], 1);
}
440 1949325
#include<unistd.h>

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

i = 0;
a = 0;
if (nb < 0)
{
nb = -nb;
a = 1;
}
while (nb > 9)
{
c[i++] = (nb % 10) + '0';
nb = nb / 10;
}
c[i++] = nb;
if (a == 1)
{
c = '-';
}
while (i >= 0) write(1, &c[i--], 1);
}
441 1949342
>>49324

>c[i++] = nb;


Код ноля не прибавил
sage 442 1950172
>>49324

>Подскажите, где же я проебываю первую цифру?


Пошаговое выполнение кода в средстве отладки для чего создано, а?
443 1950216
>>50172
оно консолька(
444 1950278
>>50216
И чо?
445 1950381
>>50216
Ну напихал бы в исходник отладочной печати в эту консоль, ч0 как маленький?
446 1950409
>>48933

> будешь 10 лет работать


40 при нынешнем пенсионном возрасте!
447 1952046
Пацаны, как реализовать имитацию работы в реальном времени, для сглаживающего фильтра например?
448 1952745
https://pastebin.com/y70eajE3
ЧЯНТД? Почему newList возвращает указатель на список из одного элемента, а значения полей равны нулю?
Не судите строго, только сегодня сел за более-менее серьёзное изучение.
449 1952765
>>52046
Ну берешь и пишешь. Вроде всё ясно? Ну, пиши, чо.
450 1952783
>>52745

ERROR: Conditional jump or move depends on uninitialised value(s)
(Stopped running after the first error. Please fix your code.)
451 1952880
>>52745
Продолжай булимене серьозное изучение.
452 1953302
>>52745
malloc() возвращает другой адрес с полученной памятью. head же указывает на рандомную ебань и так же будет передан вызывающей функции. Как фиксить - думой сам.
453 1953416
>>53302
Объясни, или я твою мать выебу, пожалуйста
Komeiji.Koishi.full.802878.jpg429 Кб, 666x782
454 1953435
>>53416
https://pastebin.com/1jFRM8Kc
ну если ты и сейчас не поймешь, где обосрался, то это всё нахуй, край пиздец.
455 1953446
>>53435
и вот ищо.
https://pastebin.com/xcLfxtCU

хуй знает в каких языках такая магия может быть
максимальное-лоллирование.png2,1 Мб, 2000x1333
456 1953794
>>47627
жидко пукнул с нынешних хакеров
457 1954071
Как заставить препроцессор работать дальше, если он не нашел определенный подключаемый хидер?
458 1954095
>>53416
Ты инициализируешь указатель указателем без значения.
459 1954098
>>54095
Либо надо было head = &current, но это некрасиво.
460 1954099
>>54098
две звёздочкиhead = &current
461 1954104
>>54071
1) Автоматизация. Вместо несуществующих создаются пустые файлы, и сборка по-новой запускается.
2) Написать виртуальную файловую систему.
3) Перебрать исходники препроцессора.
462 1954246
nasa-jpl-c в треде

а накидайте практических задачек(гитхаб, литкод, реддит), где обсуждают именно то что нужно знать и уметь на СЯХ, чтобы работать в nasa/jpl ?
463 1954248
464 1954252
>>54246

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

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

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

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

или нужно прям АКАДЕМИЧЕСКИ знать матешу прежде чем запускать gcc+vi ?
465 1954268
>>54104
За первый вариант спасибки. Я хоть и думал про такие извороты, но не мог предположить, что это называется автоматизация, а не костыли.
И теперь у меня два сценария сборки: в первом спавнится заполненный хидер, во втором пустой файл с тем же названием.
И все работае, так что еще раз спасибо.
466 1954821
Есть где-нибудь внятное объяснение или реализация однопрошитого дерева? Пиздец какой-то с поиском инфы.
467 1954823
>>54821
без индусов
468 1955002
>>54268
Это называется автоматизация только когда скрипт запускает сборку, получает себе stderr, анализирует его регекспами, находит там несуществующие хедеры, создает их и перезапускает сборку. Я это имел в виду, если что.
469 1955487
https://pastebin.com/uUy1s59Q

Почему по достижении return'а, судя по отладчику программа зависает на последней строке функции, даёт приглашение на ввод, но при этом не возвращается в main?
470 1955728
>>55002
Так у меня еще лучше, потому что нет перезапуска. а до регулярок я пока недорос.
>>55487
дебагпринты, gdb. Алсо здесь четыре точки выхода, так что непонятно о достижении какого return идет речь.
изображение.png335 Кб, 1920x1080
471 1955736
>>55728

>так что непонятно о достижении какого return идет речь


Самого первого, при инициализации корневого узла.
472 1955767
>>53446
Блять это что за обучение нахуй такое? ПРИДУМАЛИ МАССИВЫ ИЗ СТРУКТУР И ДОЛБОЕБ ВСЁ РАВНО БУДЕТ ИСПОЛЬЗОВАТЬ ДЛЯ ЭТОГО УКАЗАТЕЛИ!
???.png53 Кб, 824x923
473 1955773
>>52745
Почему так нельзя? Безопасней, проще, быстрее.
474 1955776
>>53446
Скорее всего не аллокатор, а компиляторная оптимизация. НУ А ХУЛЕ НЕТ ТА?
a4b745309a8767e00aeb8d41c0ce195c.jpg15 Кб, 300x225
475 1955778
>>55773
struct LIst {
int index;
int value;
}
476 1955779
>>53446
Мож там просто хипы были рядом друг с другом, короче думаю так всё было:

Короче каждый раз шла аллокация 16 байтов, (2 инта + еще одна такая же структура), 8 байтов занимались, остальные оставались, шла еще такая же аллокация, на том самом месте где был указатель занимались оставшиеся 8 байтов, и так до конца, в итоге в конце остается незанятая ячейка памяти из 8 байтов. Либо куча дыр, но я ставлю на вытекание памяти. Там не используется освобождение, можно стенкой посмотреть.
477 1955781
>>55778
struct            LIst     {
                int                   index;
           int                            value;
}
478 1955797
>>55778
>>55781
Уймитесь, содомиты.
X = [X|X]
479 1955805
>>55797
Нихуя не понял
480 1955811
Как по хардкору вкатиться в неблокирующий и асинхронный I/O?
Сам пишу не на си, просто есть очень большое желание понять, как оно там внутри все работает. Нужно в сторону poll/epoll смотреть? Есть какие-нибудь годные гайды или книги?
481 1955823
>>55811
Почитай любые книжки по ядру: как шедулер работает, как процесс блокируется... На этом фоне poll - простенькая надстройка.
482 1955825
>>55823
А с чего начать? Я сам студент, курс по осям будет только осенью, да и вряд ли там сильно глубоко в ядро залезем.
Для начала курс на степике может пройти, а потом книжки по ядру ОС почитать?
483 1955826
>>55797
Объясни в чем суть двух постов и как ты это понял?
484 1955829
>>55736
Инициализация должна проходить успешно: посмотри внимательно тайпдефы и декларации, или скинь их.
>>55767
Ну линкед листы это довольно весело для обучалок.
>>55779
Там всегонавсего каждую итерацию инициализировался новый нод который не привязывался к предыдущему.
Да, самые обыкновенные меморилики.
485 1955834
>>55829
Как правильно линкед листы делать?
486 1955846
>>55829
Ааа ему надо было сначала аллокацию головному ноду сделать.
487 1955847
>>55778
Где смеяться?
488 1955849
>>55834
head = malloc(sizeof(node));
init(head);
for(crt=head;;) {
crt->next = malloc(sizeof(node));
crt = crt->next;
init(crt);
}
crt->next = 0x00;
489 1955850
Хочу написать калькулятор с ГУИ или приложуху какую нибудь бесплатную, например пробежки отслеживать. В планах использовать ГТК+.
Этого хватит? Дефолтного тутора хватит на сайте гнома? Или книжку взять?
А то хочется отвлечься от монотонной зубрежки, вообще пишу всякие задачки на сторонних ресурсах, но там тоже монотонность. Хочется написать что нибудь уже.
490 1955854
>>55849
Хуя круто как. И понятно.
491 1955855
>>55811

>Как по хардкору вкатиться в неблокирующий и асинхронный I/O?


Если тебе прям на уровне epoll/C надо... Ну тогда напиши для начала какой-нибудь простенький HTTP-сервер на блокируемых сокетах. Все реквест-хедеры пропусти, отдай клиенту статус, Content-Type и Hello, World! У тебя будет маленький исходный код, с которым уже можно экспериментировать. А то как так, сей в глаза не видел, но хочу сразу в ядро и шедулер. Там до шедулера у многих серьезных кодеров типа конструкторов всяких golang и nodejs проблемы возникали, типа как лучше распространить асинхронность на потоки, чтобы ядра проца не простаивали.

>>55850

>Этого хватит?


Попробуй и поймешь.
492 1955865
>>55849
я ща сдохну от испанского стыда
493 1955876
>>55829

>Инициализация должна проходить успешно: посмотри внимательно тайпдефы и декларации, или скинь их


Вероятно основная проблема в том, что в main инзерты вызываются внутри цикла с передачей им в качестве аргумента адрес i-того элемента массива типа Data

for(int i = 0;i < 5;i++) Insert(&my, arr(i));
494 1955879
>>55876
Просто если адрес обычных переменных Data (не массивных) передавать в несколько копипастнутых строчек Insert, то всё нормально работает.

Insert(&my, &a);
Insert(&my, &b);
Insert(&my, &c);
Insert(&my, &d);
Insert(&my, &e);
495 1955882
>>55876

>арр(ай)


ты пердеашь сам эленметн ,н5 адреs.
нужн0 воТ так вот :
ампарсанд арр(ай); илии арр плюс ай.
496 1955883
>>55882
Там есть амперсанд, неправильную версию вписал.
497 1955903
>>55883
А прикинь, каково кодировать malloc, ведь ты не можешь сделать malloc(sizeof node), потому что у тебя еще нет malloc.
498 1955908
>>55903
а елсе у меня етсь ммап() и брик(), но ищо нет маллок() что тт на эт0 скажеw)))
>>55883
ты гдкт на%уивертел в дефейнах N обьевляшках. сматри туда
499 1955910
>>55908

>а елсе у меня етсь ммап() и брик(), но ищо нет маллок() что тт на эт0 скажеw)))


Блок с длиной -1 в дереве, если не хватает, то растим память. Но тут какая-то хуйня в треде вообще творится. С готовым malloc не можем дерево построить.
500 1955912
>>55910
Здесь не в маллоке дело, а именно в цикле, т.к если просто переменные передавать, то всё нормально, все указатели на выделенные участки памяти на месте. Инсерт просто на корневом ноде останавливаться .
501 1955965
>>55865
4to ne tak?
image.png298 Кб, 480x300
502 1956088
Доброе утро, котятки.
a4b745309a8767e00aeb8d41c0ce195c.jpg15 Кб, 300x225
503 1956111

> хидеры


> инзерты


> брик

504 1956257
>>56111

>Головной


>Вкладыш


>Кирпич

image.png90 Кб, 320x320
505 1956334
506 1956980
>>56257
Цефал
Снимок экрана 2021-03-04 в 20.00.37.png48 Кб, 674x239
507 1957520
Анонче объясните что мне gcc наоптимизоровал?
Нахуе здесь безусловный переход на следующую иструкцию?
508 1957584
>>57520
Ололо, это C166?
Уровень оптимизации какой?
509 1957647
>>57584
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 байт карл
509 1957647
>>57584
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 байт карл
510 1957665
>>57647
Ну да, остаётся удалить этот файл. Нахуя сгенерировал? Ну раз есть глобальная функция - должен быть код. Их по идее может убирать умный компоновщик, но я дед и ни разу им не пользовался.
511 1957673
>>57665
там такая программа которая генерит таски под autosar или как void void функции. просто не генерировать низя...
512 1957722
>>55767
А в Сях вообще нужна эта инкапсуляция?
И почему без перекота?
513 1957825
В чем разница между clock_t и time_t?
они полностью идентичны, или clock() возвращает время процесса, в то время как time() - календарное время?
514 1957831
>>57825
time() возвращает календарное время
clock() возвращает время с момента запуска программы
515 1957890
>>57825
Ну почитай доки ептыть. Слоск возвращает число таймерных прерываний, пришедших во время выполнения программы.
516 1957957
>>57890
>>57831
Это понятно. мне интересно, клоки/время с TASK_INTERRUPTIBLE тоже зачисляется?
517 1958009
>>57957

> TASK_INTERRUPTIBLE


Чего? У нас тут С.
ПЕРЕКАТ 518 1958626
>> 1958625
>> 1958625
>> 1958625
>> 1958625
>> 1958625
ПЕРЕКАТ 519 1958628
Замечательно. Попробуем еще раз!
>>1958625 (OP)
>>1958625 (OP)
>>1958625 (OP)
>>1958625 (OP)
>>1958625 (OP)
Тред утонул или удален.
Это копия, сохраненная 13 мая 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски