Двач.hk не отвечает.
Вы видите копию треда, сохраненную 4 августа 2022 года.

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

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

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

Чем компилировать:
- Очевидный 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

Онлайн-утилиты:
- №70: http://arhivach.net/thread/713839/
- №71: http://arhivach.net/thread/727405/
- №72: >>2245329 (OP)
image.png300 Кб, 500x631
# OP 2 2297528
3 2297537
Привет. Ну накоенц-то!

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

Это не значит, что нужно всё писать на Си. Это даже не значит что на Си вообще нужно писать. Это значит что знать язык Си обязан каждый программист.

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

Си это священная корова, которую не обязательно доить.
На Си можно написать всё, абсолютно всё, а что нецелесообразно писать на Си, то можно написать на языке, который написан на Си.

С++ это "Си на стероидах". В общем случае корректную программу на Си, можно собрать С++ компилятором и в 90% случаев она соберётся. Даже без warnings. Исключения из этого правила есть, но их ничтожно мало и в большинстве случаев они легко обходятся.

Итак, суть этого поста - ТЫ МОЖЕШЬ НЕ ЛЮБИТЬ ЯЗЫК СИ, НО ЗНАТЬ ЕГО ОБЯЗАН. Ты даже можешь его ненавидеть, но знать обязан. Иначе ты не программист, а приживала, зря едящий свой хлеб.

Поехали!
4 2297578
>>297537

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


Нельзя, не братья, не близнецы.

>Это значит что знать язык Си обязан каждый программист.


Не всегда и не каждый, зачем мне знать С, если я пишу логику для какого-либо сайта, на JS? Оптимизации, по выделению памяти или по системным вызовам за меня сделает интерпретатор, мне нужно лишь знать алгоритмы и то, какие функции/методы/классы выполняются относительно друг друга по времени быстрее или медленнее.

>С++ это "Си на стероидах".


С++ это язык с Си синтаксисом, все.

>В общем случае корректную программу на Си, можно собрать С++ компилятором и в 90% случаев она соберётся. Даже без warnings.


Зачем собирать программу чужим компилятором? Можно статистику про 90%?

>ТЫ МОЖЕШЬ НЕ ЛЮБИТЬ ЯЗЫК СИ, НО ЗНАТЬ ЕГО ОБЯЗАН.


Нет.
5 2297651
>>297578

>Нельзя, не братья, не близнецы.


Абсолютные близнецы. За исключением множеств, оператора with и пары других мелочей.

>Не всегда и не каждый, зачем мне знать С, если я пишу логику для какого-либо сайта, на JS?


Тогда ты не программист. Кто угодно, но не программист. Отключи тебя от Сети и твои знания и умения бесполезны.

>Зачем собирать программу чужим компилятором? Можно статистику про 90%?


Даже больше 90%. Обратная совсестимость С++ с Си весьма и весьма хороша. Не используй K&R стиль объявления функции и будет тебе счастье.
6 2297662
Пишу в эпичном
7 2297729
>>297662
Пашу на эпичном
8 2297775
>>297537
Си и Паскаль хороши для обучения.
9 2297834
>>297775
Вот именно. Без понимаюния как это работает программы жрут память как не в себя, жрут процессорное время, постоянно переписывая сктроки по памяти. Они (программы) ещё бы и падали на каждом шагу, но современные языки неплохо защищены от этого - концепция и хорошая ранняя диагностика. Поэтому современные программы просто тупо жрут дешёвые нынче вычислительнык ресурсы, электроэнерги. и худо-бедно выполняют своё предназначение, попутно обогревая окружающую среду.

А всё это покрывается волшебной аббревиатурой TTM - Time To Market. Главное вывести своё говно на рынок, а там уже техподдержка разрулит инциденты. Вот в таком мире нынче живём.
10 2297872
>>297651

>Абсолютные близнецы. За исключением множеств, оператора with и пары других мелочей.


Что у них общего, кроме простых типов?

>Тогда ты не программист. Кто угодно, но не программист. Отключи тебя от Сети и твои знания и умения бесполезны.


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

>Даже больше 90%.


Ты можешь писать, что хочешь, но без статистики - это пустые слова.

>Обратная совсестимость С++ с Си весьма и весьма хороша.


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

>Не используй K&R стиль объявления функции и будет тебе счастье.


К чем это?

Иногда мне кажется, что тут работают боты, которых проверяют студенты, вроде они тебе отвечают, но смысла в их ответах нет. Сообщения выглядят, как склейка сообщений с каких-то форумов.
image.png8 Кб, 290x132
11 2297935
>>297872

>Что у них общего, кроме простых типов?


Ну как тебе объяснить, если ты на обеих не программируешь?
Перечисления, циклы, указатели, указатели на функции, структуры/рекорды. Всё, что есть в одном, есть и в другом.

Тип String?
#define DEFINE_PSTRING(var,str) const struct {unsigned char len; char content[sizeof(str)];} (var) = {sizeof(str)-1, (str)}

Это для константных строк, а для динамических будет чуть иначе.

Сишные строки в Паскале - используй PChar и не забывай '\0'.
Вот чего нет в Паскале, так это битовых полей. Но это же проблема для программиста, да?

>Ты так и не ответил, зачем компилировать C код, C++ компилятором, кроме, как перенос всей программы на C++, без переписывания легаси


Ты сам ответил. Ну или просто по желанию. Запретишь?

>>Не используй K&R стиль объявления функции и будет тебе счастье.


>К чем это?


Чтобы не ебацца в будущем. Вот на картинке не скопилится в С++.
Но за последние 20 лет ни разу не видел сырцов в таком стиле.
12 2297992
>>297935
g++ (GCC) 11.1.0

>Ты сам ответил. Ну или просто по желанию. Запретишь?



>g++ example-1.c


>example-1.c:9:19: error: invalid conversion from 'void' to 'char'


https://pastebin.com/LKtUYERf

>g++ example-2.c


>example-2.c:5:1: error: ISO C++ forbids declaration of 'function' with no type


https://pastebin.com/cd4w99GR

>g++ example-3.c


>example-3.c:4:36: error: expected ',' or '...' before 'a'


https://pastebin.com/ah27sAC3

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

>Перечисления, циклы, указатели, указатели на функции, структуры/рекорды. Всё, что есть в одном, есть и в другом.


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

>

13 2298086
>>297992

>>example-1.c:9:19: error: invalid conversion from 'void' to 'char'


Ну так строгое приведение типов. Всё нормально. Так и должно быть. Ты, кстати, там ошибку допустил
sizeof * a

>>297992

>>example-2.c:5:1: error: ISO C++ forbids declaration of 'function' with no type



Стандарт такое позволяет, да. Но так объявляют функции уёбки. Уёбков мало.
t2.c:2:1: warning: return type defaults to ‘int’ [-Wimplicit-int]

>>example-3.c:4:36: error: expected ',' or '...' before 'a'



grep -rnw '/mnt/src/linux-5.16.2' -e 'restrict' > log
Как думаешь, много нашлось слов restrict вне комментариев?

А теперь напомню изначальный посыл:

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

14 2298135
>>298086

>sizeof a


sizeof
a == sizeof(a), но если ты про выделение памяти, то да там памяти выделяется в sizeof a раз больше.

>А теперь напомню изначальный посыл:


А я думал такой >>297537

>Итак, суть этого поста - ТЫ МОЖЕШЬ НЕ ЛЮБИТЬ ЯЗЫК СИ, НО ЗНАТЬ ЕГО ОБЯЗАН. Ты даже можешь его ненавидеть, но знать обязан. Иначе ты не программист, а приживала, зря едящий свой хлеб.

15 2298173
>>298135
Ну да, знания Си это обязательное условие.
16 2298204
>>298173
Зачем?
17 2298208
>>297834
Да и похуй. Кого это волновать должно вообще? Айти-индустрия – в основном – гигантский распил бабла государствами и корпорациями.
18 2298240
>>298204
Чтобы не превратиться в дикарей, поклоняющихся чудо-машине, использующих её, но не понимающих как она работает.
Чтобы писать оптимальные программы.
Чтобы знать алгоритмы, а не тупо использовать очередной 100500-й модный фремворк, который через полгода устареет и будет заменён ещё более модным фреймворком.
19 2298247
>>298208

>Кого это волновать должно вообще?


Меня, "деда", волнует. Я начинал с восьмибытных компьютеров.
20 2298248
>>298247

>восьмибытных


восмибитных
21 2298269
>>298240

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


Знание C, никак не помогает в понимании, как работает вычислительная машина.

>Чтобы писать оптимальные программы.


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

>Чтобы знать алгоритмы, а не тупо использовать очередной 100500-й модный фремворк, который через полгода устареет и будет заменён ещё более модным фреймворком.


Хорошие разработчики понимают алгоритмы, не важно на каком языке они пишут, если программист не может в алгоритмы в сфере, в которой он работает - это хуевый программист.
image.png67 Кб, 894x840
22 2298308
>>298269

>Знание C, никак не помогает в понимании, как работает вычислительная машина.


Си это в некотором роде высокоуровневый ассемблер. Хорошо помогает. Картинка в подтверждение.

Сейчас меня студенты спалят. На картинке, разумеется, просто кусок учебного материала из лекции. А то ещё подумаете что в рабочих проектах так называю переменные.
23 2298324
>>298308
Игорь, ты?
24 2298333
>>298308

>Си это в некотором роде высокоуровневый ассемблер. Хорошо помогает. Картинка в подтверждение.


Я с этим и не спорил, но C и близко не дает понимание того, как работают вычислительные машины. Он дает базовые понимания того, как работать с памятью и операционной системой, сама стандартная библиотека C, заканчивается на моменте, когда нужно сделать что-то большее, чем чтение и запись памяти. Все остальное реализуется через системные вызовы.
25 2298388
>>297992

>example-2.c


Ну так-то implicit int ещё с C99 запрещён, это тебе повезло, что твой компилятор тебя с ним нахуй не шлёт.
26 2298410
>>298388
Если бы послал, я бы собирал с -std=c89, никаких проблем.
27 2298419
>>298240

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


Ты чтоль понимаешь, если ебешься с сями?) ебло бля) Ты давно смотрел как там и что проектируют и собирают в проце и памяти, чтоб уверенно заявлять как оно там все на самом деле работает. Тоже мне не каргокультист епта)) пхах
28 2298435
>>298333
Красиво написал, так я подумал. А потом увидел что это трипл и все понял.
29 2298436
>>298419
Мне кажется уже ни кто этого достоверно не знает. Только эмпирическим путем можно установить производительность того или иного кода. Даже ассемблерного.
30 2298631
>>298240
Мыслишь верно, но выводу >>298173 неверные.
Дело в том, что нельзя превратиться в дикарей, так же как нельзя перестать быть дикарями. Человек не меняется. кем родился, тем и помрет. Личность фиксирована как минимум с момента рождения.

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

Нужно давать представление об программировпании на практике искусственного учебного языка. Например, был такой "Исполнитель Робот", на поле из клеток стоял "робот" в виде кружочка и написав программу его можно было передвигать по полю и закрашивать клетки. Вот что-то такое искусственное нужно дать всем, а осталдьное оставить на их усмотрение. Кто какой настоящий язык захочет, тот пусть и учит, а кто не хочет, пусть учит, скажем, Майкрософт Офис, Фотошоп, Видеоредактор, 3D Редактор, КАД какой-нибудь и т.д.
Так что, кому нужен Си, тот сам его возьмет, аналогов у него всё равно нет, дальше кресты, а потм только скриптопараша, она вся одинаковыя, хоть js, хоть c#, одна хрень. Чено нельзя допускать, это только пердольные мваня языки типа всяких хачкелов, потому что пердолинг это бегство от реальности, а такое воспитывать никому на пользу не пойдет. Если преподавать, то только вещи реально применимые на практике, потому что программирование это не философия и прочие теоретические дисциплины, где можно хуи катать разводя пустопорожнюю демагогию. Опять, воспитывать такое нельзя. Если уж настолько дегенерат, то после учебы сам скатитися в это говно, но уже как взрослый под свою ответственность.
31 2298650
>>298247
Сходи к психологу, без шуток. Тебя волнует какая-то хрень.

>>298631
Не робот, а черепашка лого.
32 2298664
>>298631

>Чено нельзя допускать, это только пердольные мваня языки типа всяких хачкелов


В таком случае развитие языков застрянет на текущем уровне. Все инновации, виртуальная машина, сборка мусора, абстрактные типы данных, условный оператор с плечами вместо goto, итераторы, - всё это впервые появилось в, как ты выражаешься, "мваня языках".
33 2298671
>>298664
Развитием языков занимаются профессионалы, а речь про обучаемую школоту. Вот типичный пример тупого дегенерата, которые в этом пердольном говне валяются. Не может элементарно прочитать текст, про что написано, а тупо триггерится на отдельные слова и пукает мимо кассы. Вот такое вот никак нельзя воспитывать намеренно, преподавать в школе, иначе жто уже не школа, а детсад дегенерации.
34 2298672
>>297992

>C# и C - это братья языки близнецы, все что есть в одном есть и в другом



Ты в слове Java допустил 4 ошибки. C# близнец с Java. Хоть и имеет Си-подобный синтаксис.
35 2298681
>>298672

>Ты в слове Java допустил 4 ошибки. C# близнец с Java. Хоть и имеет Си-подобный синтаксис.


К чему ты это?
36 2298684
>>298672
Мимо проходил. В джаве нет и половины фич сишарпа, похожи они только принудительным ООП, LINQ и Streams и ключевыми словами, кек. Никак не близнецы
37 2298690
>>298684

> принудительным ООП



Сссссссссука, когда уже за это расстреливать будут? Это худшее, что вообще случилось в кодинге, на одном уровне с засилием жээса.
38 2298692
>>298690
Если тебе не нравится принудительный ООП, ты можешь просто использовать классы, как пространства имен.
39 2298693
>>298692

> если не нравится ебаться в жопу, ебись тогда в жопу но на пол шишки

40 2298844
>>298693

>вместо меня код пишет язык


Тут сайт 18+ для самостоятельных людей. Пиздюкам не умеющим жить без мамкиной юбки и дегенератам не вырасшим из детских штанишек просьба проследовать нахуй в сишарп/джава/жс/питон тред

>>298681

>К чему ты это?


Наверное к тому, сто си и с# не имеют ничего общего от слова совсем.

>>C# и C - это братья языки близнецы


Тупорылый вброс.
Си имеет общее только с C++, и то потому что это один язык. А с# же это уже скрипты, хоть какие бери, начиная с VBS, JS и заканчивая чем угодно вроде Java и Питона, одного поля ягоды. Просто потому что это уже не программирование, а гадание на кофейной гуще на авось.
Вдумайся в значение слова "программирование". Это не самостоятельное явление, а процесс прилгагаемый к определенному объекту (компьютеру), который и программируется на выполнение действий. Свойства объекта и языка должны быть однозначны и предсказуемы, иначе программировать нельзя.

Скрипты же - не такие, там пишут магические слова на авоь, сработает или нет. Там тонны неопределенности, в которых тонут крохи определенности. И мало того, эти помои еще и прогрессивно деградируют прям на глазах. Короче, если си это программирование, четко написание команд для четкого получения результата, то скриптование это скорее общение с компьютером уровня "Слыш, дарагой, сделай заебись, а, мне очень нада". Для скриптера компьютер это не механизм, которым он управляет, а черный ящик исполняющий желания, вроде лампы алладина.
41 2298881
>>297526 (OP)
Как омега-самцу-программисту стать альфа-самцом?

https://2ch.hk/sex/res/8141622.html (М)

Есть предположение, что типичный двачер — это сочетание шизоидного и тревожного расстройства личности. Экономика усложняется с каждым годом. Мир усложняется. Если много лет назад мужчины в основном рычали, двигали тазобедренным суставом и охотились, то сейчас появилось много сидячей, компьютерной, удалённой работы. Для успеха нужно много лет потратить на образование и самообразование, убить молодость и социализацию, чтобы потом ты стал хорошим специалистом, хорошо владел английским, ковырял баги в дебаггере, месил мьютексы и семафоры, обмазываясь многопоточностью и асинхронностью, мигал лампочками на STM32, каждый день самостоятельно учился чему-то новому и загребал доллары, вписался в экономику XXI века. Что в итоге?

У инцела шизоидное расстройство. Он — церебротоник ("мозговитый"). Высокий IQ, интроверт, линуксоид. Много ресурсов тратит на мышление, калории сжигаются, он всегда уставший, апатичный. Ускоренный обмен веществ. Логик. Рационал. Не развита эмоциональность. Сух, зануден. Душнила (душный человек). Не способен адекватно рассказать о своих хобби, интересах, потому что они сложные наподобие "запилить свой процессор на FPGA своей архитектуры и микроархитектуры, а потом для него компилятор написать". Когда начинает рассуждать про монады и моноиды, Haskell и Erlang, тянки разбегаются, затыкая уши.

У инцела тревожное расстройство вследствие воспитания в однополой семье "мать плюс бабушка". У Дениса Бурхаева было ещё хуже: мать + бабка + сестра матери, они втроём пытались его воспитать даже не образцовым пионером, а образцовой пионеркой. Поскольку двачер потратил молодость на умственное, а не физическое развитие, да ещё и мать с бабкой стращали его, дрессировали и запугивали, то получился результат, как на картинке 1. Рост — средний по популяции, астеник, есть дефицит массы тела, одна кожа да кости. Драться не умеет
42 2298903
>>298844

>Наверное к тому, сто си и с# не имеют ничего общего от слова совсем.


Наверное, ты один из ботов, которых пишут студенты и проверяют тут, да? Все еще не можете в анализ естественных языков? Прочитай ветку и пойми, что это была ирония о том, что другой анон писал, что C и паскаль - это языки близнецы, только потому что в них есть перечисления и простые типы.
43 2298970
>>298881
Какие-то стереотипы миллионлетней давности, что программист - это нерд-аутист-скряга, хотя еще с 90х эта профессия для всех желающих, и среди прогораммистов можно встретить кого угодно от нерда, до гопника, от кочки до богемного хипстора, хотя 90% - обычные офисные васяны.

>да ещё и мать с бабкой стращали его, дрессировали и запугивали


Лолшто? Обычно в таких семьях сынуличке жопу вытирают и сюсюкают аж до свадьбы, пока овоща не передадут на сохранение другой бабе, и пусть только попробует ему жопу неправильно подтирать нашему золотцу, тупая блядина.
44 2299011
>>298881

>/sex


>Нытье и оправдания инцела.


Зачем ты сюда принес?
45 2299021
>>298671
А профессионалы, едва им после рождения перерезают пуповину, сразу начинают пейперы хуячить в научные журналы, так тебя надо понимать, максималистичный юноша?
46 2299407
>>299021
Профессионалов не лепят как говно из глины в школе, они ими сами становятся, и уже далеко не в школе, а во взрослой жизни. А лепят только тупорылое пердольное говно, потому что само по себе говно безмозглое и бесполезное, ничего не иожет. Поэтому и не нужно лепить, пердосрани нет места в школе, если нет цели наплодить выродков.
47 2299435
>>298903
Си и Паскаль это близнецы, тут нет никакой иронии. Разве что Паскать дубовый, т.к. предназначен для учебы, типа строго воспитывать стиль кода. Но функционирует от точно так же как Си и С++, т.е. является их прямым эквивалентом, просто он неактуален по причине дурацких идей в его дизайне озвученных выше.
48 2299561
>>299435
Такие близнецы, что на момент появления первой, во второй не было ни динамических массивов, ни управления динамической памятью, ни нетипизированных указателей и тд. Покормил.
То что ноги растут у обоих из алгола, не делает их близнецами.
49 2300070
>>299561
На момент появление на свет, ты не мог ни башкой думать, ни разговаривать, а мог только орать и пачкать пеленки. Так зачем рот тут открываешь? Покормил.
50 2300078
>>300070
Всех переиграл, как конем по нотам - сразу верб, близнецы.
51 2300162
>>299561

>нетипизированных указателей


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

Что-то на уровне полезности NULL. И множественного наследования.
52 2300224
>>300162

>надеюсь что они их вводить не стали


Turbo Pascal сделал все как у взрослых.
53 2300254
>>300224
Не напоминай. Вот же годная вещь была - компиляция в памяти это нечто божественное. И хоть я приверженец Си, но Турбо Паскаль вспоминаю с любовью. Годнота была.
54 2300387
>>299407

>Профессионалов не лепят как говно из глины в школе, они ими сами становятся


А становятся они таковыми по двадцать лет хуяча на языках, "реально применимых на практике", правильно я тебя понял?
55 2300406
>>297526 (OP)
Доброго вечера, си боги. Хочу адски въебать computer science, и я так понимаю мне нужен си. Есть какая нибудь книжка совсем для грудничков? Что бы параллельно учить both hardware & software части
56 2300464
>>300254

>компиляция в памяти это нечто божественное


Имеешь ввиду компиляция сразу в бинарник, без этапа создания объектных файлов? Если да, то можно вспомнить что объектные файлы могут пригодиться для инкрементальной компиляции.
image.png463 Кб, 1280x720
57 2300518
>>300464

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


Нет. Имеется в виду компиляция в память, без создания исполняемого файла. Т.е. это было похоже на интерпретатор, с отличием в том, что программа всё же компилировалась, но только исполняемый код был в оперативной памяти и не писался на диск.
Это имело смысл, посколько IDE HDD были очень очень очень очень очень медленными.
58 2300519
>>300518
Вы прослушали пориджные шизофантазии. Спасибо за внимание.
59 2300523
Спешите видеть - тупой защеканец высказал своё бесполезное мнение - >>300519

Спросите меня: "А почему он тупой?" Да потому что не ведает вырожденец о чём толкует. Дядя этому хуйлу и адекватным анонампринёс картинку, чтобы оно, хуйло, посмотрело своими мутными красными глазами на пункт меню "Destination Memory", но вонючая субстанция в его наплечной параше неспособна осознать очевидные вещи, оно увидело первый раз в жизни Turbo Pascal на этой картинке и нихуя не поняло.
60 2300528
>>300523
Поридж даже не понял о чем речь. Пытается махать незначительной фигней, не замечая что штаны спили и на самом деле размахивает своим достоинством на потеху публике.
61 2300538
>>300518

Поздравляю, ты изобрёл JIT. Точнее, борланд его юзал, когда это ещё не было мейнстримом :)
62 2300540
>>300254

>была - компиляция в памяти это нечто божественное.


Это архаизм на самом деле: так работали первые поколения компов без ОС и релоцируемых программ, с однопроходным ассемблером. Подозреваю ТурбоПаскаль выдавал что то типа досовского com файла - там простейший формат, по сути дамп памяти, который грузится всегда в одно место.
63 2300541
>>300538
Это не джит.
64 2300548
>>300540
Это всё понятно, но это работало охуительно. И приятно.

И в то же время была возможность скомпилировать с противополжной крайностью - оверлеями. Такое в голову могло прийти только богатырям - программы, размером больше имеющегося ОЗУ в то время, когда виртуальная память была только у суперкомпьютеров.
65 2300549
>>300406

>hardware & software


>для грудничков


Ну попробуй Таненбаум "Архитектура компьютера" и потом Керриска "Linux api. Исчерпывающее руководство"
66 2300552
>>300540
Ну так сходить в магазин заказать онлайн и открыть дверь курьеру не было возможности, вот и крутились как могли.
67 2301003
>>300549

>Таненбаум "Архитектура компьютера"


Я сам не читал, но вот тут ее не очень любят видимо. Говорят она башню из слоновой кости строит.
https://habr.com/ru/post/589091/
68 2301047
>>301003

https://youtu.be/GPv8coYl3cE

А дальше любой учебник по Си и пробуешь примеры. Тупо пробуешь примеры. Ну, не совсем тупо - читаешь, думаешь, пробуешь.

Без практики, без реального компилятора изучать нет смысла.
69 2301205
Вопрос - атомарен ли инкремент на x64 архитектуре? Есть ли а С11 атомарные типы, кроме sig_atomic_t?
70 2301797
>>301205

>атомарен ли инкремент на x64 архитектуре?


Нет, инкремент (х++) в С/С++ не атомарен.

> Есть ли а С11 атомарные типы


https://en.cppreference.com/w/c/language/atomic
71 2301854
>>301797
Спасибо.
72 2302662
Давайте уточним, на дворе все-таки 2022.
Я до сих пор не могу сделать массив (VLA запрещены)
int arr[N], где N это не макрохуйня и не литерал
да?
73 2302732
>>302662
Язык "Ванга" Не в этом треде.
74 2302792
>>302662
Я конечно извиняюсь, а что такого особенного в 2022, что такие фундаментальные вещи должны ломать?
75 2302840
>>302732
Не понял.
>>302792
Ломать? Ломать создание int a[5]; ни в коем случае не стоит.
А можно позязя
int main()
{
static const size_t a = 12;
int arr[a];
}
? Ну позязя!
76 2302870
>>302840
Вангую потому что она не тру конст, у нее есть локация в памяти, теоретически ее может переписать (да это UB и надо что-то типа снятия защиты записи на страницу памяти?)
const int a = 12;
intp = &a;
p = 42;
В отличии от тру конст, которая сразу пойдет операндом в машинную инструкцию (хотя, конечно, ее тоже можно перезаписать, лол)
77 2302898
>>302662

Записывай:

int ⚹ arr = (int⚹) alloca( sizeof(int) ⚹ N );

Пользоваться как и обычным массивом:

arr[0] = 100;
arr[1] = 100;
78 2302947
>>302898
а на стеке как?
79 2302954
>>302947
это и есть на стеке
80 2302990
>>302954
а епт, глаза ебуться, чет показалось что там обычный malloc
81 2303035
>>302947
А стек не закончится?
82 2303038
>>303035
Закончится, ты будешь виноват. На си пишешь, а не на питоне.
2022-02-21-115152348x287scrot.png5 Кб, 348x287
83 2303237
>>302840

>А можно позязя


Да ради б-га.
84 2303398
>>303038
Закончится - расширим, хуле нам, питонистам
85 2303449
>>303398
В питоне нет стека.
image36 Кб, 817x550
86 2303464
пасаны, поясните пожалуйста
87 2303475
>>303464

>char


>129


Хе-хе.
88 2303478
>>303475
Ну да аче.
89 2303483
>>303464
Проблема у тебя, gcc собирает.
90 2303484
>>303483
я знаю что некоторые собирают, мне интересно почему именно тут так
91 2303486
>>303478
И все. unsigned char 0..255, char -128..127
92 2303489
>>303464
Я уж молчу что читать память дальше переменной вообще, скорее всего UB.
93 2303493
>>303486

>char -128..127


char в винде беззнаковый.
94 2303497
>>303486
Так какая разница, вмещается же. Я его как знаковое вывожу.
95 2303498
>>303493
А-а, понятно.
96 2303504
>>303489
но если сделать не +1 а -1 например то всё заебись
97 2303510
>>303493
>>303498
https://docs.microsoft.com/ru-ru/cpp/c-language/type-char
Хотя сейчас погуглил, как я понял знаковость изменяется флагом комплиятора, но насколько я помню по умолчанию он стоит всегда на беззнаковые, а проект называется Project1, поэтому я думаю, что там используется беззнаковый.
98 2303516
>>303510
но знаковость играет роль только при операциях с ними, не при выводе же
1496866144145.png4 Кб, 283x77
99 2303518
>>303504
Ладно я сдаюсь
Может быть проблема в аргументе printf?
100 2303523
>>303516
Он в любом случае неявно приводиться должен.
101 2303526
>>303518
У тебя "c" русская или английская? Вроде студийный компилятор должен уметь в кириллицу в коде.
102 2303530
Аноны, а как вы указываете тип переменной? Стандартной хуйне в виде "int, long long, ...." или же как это сделано в расте, чтобы было видно количество байт "u8, u64,..."
Где вообще можно об этом почитать?
103 2303543
>>303530
Видеть количество байт нужно только во всяких криптографических и прочих алгоритмах. В остальном достаточно базовых типов, главное для размеров использовать size_t, а для разницы указателей ptrdiff_t.
image18 Кб, 753x234
104 2303546
>>303518
чем дальше тем больше вопросов
105 2303548
>>303530

>Аноны, а как вы указываете тип переменной?


В зависимости от проекта по желанию левой пятки.
А если серьёзно, то действительно в завсимости от проекта - под Виндой одно, под Фрюниксами другое. Как в хидерах объявлено, так стараюсь и в проекте.

Но если проект подразумевается быть кроссплатформенным, то
#include <stdint.h>
106 2303549
>>303523
В каком месте и к чему приводиться?
>>303526

>У тебя "c" русская или английская?


латиница
107 2303553
>>303546
Тут как раз никаких вопросов.
Переменная хранится на стеке, там же где адрес возврата и прочее.
Ты пишешь в память ЗА переменную. Просто тупо ее портишь.
108 2303557
>>303464
А какой смысл у этого кода? Ты к адресу переменной C прибавляешь единицу, а зачем разыменовываешь получившийся указатель. Что за эффект должен получиться?
неофит
109 2303559
>>303546
Натрави на исходник gcc с ключом -S. Посмотри получившийся ассемблерный файл. Может быть поймешь где косяк push/pop rbp не спроста.
110 2303561
>>303548
>>303543
Понял, просто хотел изначально научиться единственному и более менее правильному стилю написания кода.
111 2303564
>>303557
Адресная арифметика, например как альтернативный способ работы с массивами. Но не в его случае.
мимопроходил
112 2303565
>>303546
Твоя программа объявляет только одну переменную
То есть память выглядит так

что-то системное
1 байт: переменная C
что-то системное <ты пишешь сюда
113 2303569
>>303553
А хотя да, сейчас вчитался получше в ошибку, стало понятнее.
>>303557
Если буквально то я хочу прочитать следующий за переменной байт. А вообще всё началось с того что я попробовал вывести чар как инт, то есть через %d и ожидал увидеть там число отличное от 129 которое присвоено, но выводилось всё так же 129. Потом я решил посмотреть стоят ли после этого числа нули в памяти - оказалось что нет. И только потом я вспомнил что аргументы передаются через стек и он ложит туда 1 байт как и полагается, а остальные байты видимо заполняет нулями это не точно
114 2303577
>>303449
Ты не выкупил, забей
115 2303579
>>303543

>и прочих алгоритмах


например, структуры данных при реализации различных протоколов.
116 2303580
>>303579
И в них тоже.
117 2303585
>>303565
Я так понял что я рушу стек. Но то в каком виде студия изначально выдала ошибку это всё равно странно.
118 2303590
>>303585
Я не знаю почему так. Мое предположение - студия видит что ты обращаешься по адресу вне переменных, считает это UB (Undefined Behavior), в этот момент считает, угу, значит это бред написан, переменная c реально не используется, выкидываю вместе с инициализацией.
119 2303601
Почему нельзя поставить *NIX систему или отдельный Gcc тулчейн, чтобы ебаться со студией?
120 2303610
>>303585
Добавь ключевое слово volatile в объявлении переменной.
121 2303618
>>303610
всё то же самое, но справедливо, стек реально ломается. Но я тут в процессе задался фундаментальным вопросом, а что вообще переменные забыли в стеке...
122 2303637
>>303601
Можно.
123 2303639
>>303618
У тебя локальная переменная функции. Если ты вызовешь ее рекурсивно, то у каждого вызова должно быть место для своей переменной.
Естественно если ты объявишь переменную вне функции, она будет не на стеке.
124 2303785
>>303639
Примерно понял, спасибо
125 2303792
>>303785
Еще забыл написать, при возврате из функции вместо очистки памяти стек просто уменьшается на нужное количество байт.
126 2303834
>>303792
Да, помню такое. Получается этот мусор от прошлых вызовов ещё потрогать можно?
127 2303915
>>303834
На этом часто уязвимости и основаны. С этим пытаются бороться (силами операционной системы и компилятора) разбрасывая память по рандомным адресам - ASLR
128 2304316
Анончики, а чтобы свой malloc под винду запилить, надо всякие функции типа CreateFileMapping дергать или я не в ту сторону ищу?
129 2304319
>>304316
HeapAlloc, HeapRealloc, HeapFree за тебя уже все сделано.
130 2304322
>>304319
огромное спасибо, а CreateFileMapping эти штуки для чего используют?
132 2304325
>>304323
есть, но не описано где на практике это используют, а еще всякие VirtualAlloc есть
133 2304445
>>297526 (OP)
Есть ли какой-то способ имплементировать this-> в С?
Пишу для микроконтроллеров, не хочу полностью переходить на С++ и менять корпинятор.

Да, про передачу указателя на функцию первым аргументом знаю.

int32_t class(dev_ctx_t *ctx, uint8_t val)
134 2304448
>>304445
Нельзя, только через указатель на структуру первым аргументом, потому что именно такой код и генерируется из классов в C++.
135 2304449
>>304448
Понял, спасибо.
136 2304504
>>304448
>>304449
Хотя, сейчас подумал, можно реализовать как-то так, но переносимость никакая будет. Собирается GCC 11.2.0.

https://pastebin.com/gYT1vPfk
137 2304541
>>304504
Ничего так, лихо ты. В VS уже не работает, не то что между архитектурами. Но можно перекрыть кучей дефайнов и, собственно, сделать свой компилятор.

Смотрю как в VS вообще с asm вствками работать, не разу не работал. В x64 вроде вообще не работает.
138 2304542
>>304541

> В x64 вроде вообще не работает.


Режиме сборке, в смысле. Нужно специальный файл городить, если я правильно понимаю.
139 2304549
>>304541
Можно попробовать собирать MinGW и линковать, как объектный файл.
140 2304550
>>304549
Да я на VS просто так пробовал, попробую на ARM своем, может там будет все ок и легче его перенести.
(Я ж изначально на него хотел.)

Но конечно такие вещи опасны, если не поддерживаемы, раз-два и код скопировали в другой проект - а он там не пашет.
141 2304693
>>304550

>Но конечно такие вещи опасны


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


Да, дебилы опасны, я бы такого хуесоса мгновенно уволил с занесением в черный список. Если так любит играть со своим анусом, пусть это делает дома наедине с собой.
142 2304708
скорее бы уже C23, может будет defer или любой другой деструктор, чтобы юзеры не забывали память вилкой чистить
143 2304712
>>304708
Зачем?
144 2304721
>>304712
написал же, чтобы юзеры всяких либ не забывали FreeMyLib() вызывать и тому подобное
потому что штука, которая может вызвать событие на выход переменной из скоупа, очень нужна
145 2304738
>>304721
Никто не будет использовать, многие проекты вообще С99 собираются. И расходы у defer функций огромные.
146 2304749
>>304738
скажу больше, что многие C89 собираются, на C99 переходят, только очень низкоуровневые, когда нужна уверенность в целых, 64битный да вариативный макрос

> И расходы у defer функций огромные


накладных расходов вообще нет, компилятор просто вставляет кусок кода в место, где переменная выходит из скоупа
147 2304761
>>304749

>накладных расходов вообще нет, компилятор просто вставляет кусок кода в место, где переменная выходит из скоупа


https://pastebin.com/JrH980Cu

Как он будет обрабатывать некорректные выходы из области видимости?
Как он будет оптимизировать количество вызовов defer функций?
148 2304780
>>304761

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


ну так перед строчкой abort(); // critical error, exit, pthread_exit, ExitProcess, ExitThread etc
вставит
free(a); free(b); free(c);
т.к. компилятор видит, что в этом месте точно такой же выход из скоупа

> Как он будет оптимизировать количество вызовов defer функций?


что значит количество? Один вызов к одной закрепленной переменной.
var x;
defer(x){ /code / }
теперь в месте выхода переменной X из области видимости вставляется code
149 2304792
>>304780

>ну так перед строчкой abort(); // critical error, exit, pthread_exit, ExitProcess, ExitThread etc


Компилятор не знает, какая функция завершает работу программы, pthread_exit, ExiitProcess, ExitThread функций нет в стандартной библиотеке.

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


Не видит.

>Один вызов к одной закрепленной переменной.


Это назвается деструкторы, мы же говорим о defer функциях.

>что значит количество?


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

ЗАЧЕМ ТЕБЕ C++/Go В C?
150 2304814
>>304792

> Это назвается деструкторы, мы же говорим о defer функциях.


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

> ЗАЧЕМ ТЕБЕ C++/Go В C?


тоже выше написано, чтобы создавая библиотеку я бы давал гарантии пользователям, что им нужно только создать структуру из этой либы в нужном им месте, а об освобождении ресурсов уже подумал я и компилятор мне помог
151 2304823
>>304814

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


>>304708

>скорее бы уже C23, может будет defer или любой другой деструктор


Ты путаешь понятия, но пытаешься в расширение стандартов языка.

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


Пиши на C++.
152 2304828
>>304823

> Ты путаешь понятия


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

> Пиши на C++


сиди на C89, никто обратную совместимость пока не ломает

ладно, ты решил в срач скатываться, вместо обсуждения, поэтому бывай
153 2304841
>>304828

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


Ты хочешь деструктор в С, зачем? Возьми и пиши на C++, где эти деструкторы есть.

>сиди на C89, никто обратную совместимость пока не ломает


Я сказал тебе решение, твоей же задачи.

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


Сказал по фактам, но ты не можешь в обсуждение.
154 2304955
>>304693

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


Я против крестов ничего не имею, так что утверждение не к месту.
Но я не могу просто использовать кресты, играть с разными компиляторами, потому что их попросту нет во многих контроллерах, которые используем. Как и многих стандартов Си, хотя это вообще меньшее из зол.
А переносимость кода важна. Хотя бы портирование между архитектурами. Где-то FIFO и LIFO; где-то 8, 16, 32 бит; а где-то Big\Little Endian.

Так что, то что ты говоришь - "играть со своим анусом", так такое бывает, да. Даже в крупных компаниях и никого не увольняют. Иногда свои ебанутые SDK пишут, которые на других работах нахуй не нужны потом.

Как пример: работал в конторе где делали виртуалки, и чтобы передать данные в гостя нужно было, если вкратце:
1. Приостановить виртуалку на один такт (код Си)
2. Подменить значение CPUID (asm вставка)
3. Продолжить виртуалку и подтянуть значение в госте (код Си)
4. Приостановить виртуалку на один такт (код Си)
4. Вернуть значение CPUID (asm вставка)
5. При необходимости повторить
......
x. Продолжить виртуалку при завершении (код Си)

Так там такой ебейший дефайн был нагроможден ради пяти строк со всеми проверками компиляторов, ОС хостовых машин, и прочего говна.
155 2304992
>>304955
просто многие не понимают, что от C тоже хотят нормального человеческого развития или запила его альтернативы, чтобы был такой же легкий в освоении и простой, но при этом учитывал знания, полученные в IT за последние 40 лет
156 2304998
157 2304999
>>304955
Не о том речь. В твоем примере поставлена задача и она решена, не важно дефайнами или нет, это продуктивная работа. Ты же, изобретая кресты в сях, не решаешь никаких задач, а тупо играешься, балуешься, причем знаешь как надо делать (передавать параметр), но сознательно откладываешь решение. Косишь от работы бессмысленным пердолингом. Поэтому я и сказать "играть со своим анусом", потому что это и есть маструбация, бесполезное занятие только ради личного удовлетворения, т.е. вред работе. И особенно если впердолишь нестабильное решение, это уже не просто вред от бездействия, а активное вредительство.
158 2305064
>>304998
не угадал
159 2305485
>>304322
Для того же, для чего в нормальных ОСях исползуют mmap(2).
160 2306816
Начала учить язык по книжке R. Seacord - Effective C. Почему компилятору индифферентно использую ли я * при указании на функцию? Как должно быть по идее правильно?
161 2306834
а вот есть ассемблерные вставки, а они пишутся на каком ассемблере, стандарт его определяет или что или как?
162 2306863
>>306834
Не определяет, асм вставки вроде вообще не стандартизированы нормально, в каждом компиляторе синтаксис у них отличается.
Для каждой архитектуры тоже свой асм.
163 2306871
>>306816
Возможно это связано с тем, что компилятор неявно приводит fn_b, к указателю на функцию, после чего ты его разыменовываешь и он снова приводится к указателю.
164 2307388
Как сгенерировать уникальное имя переменной или функции, внутри макроса, для внутреннего использования?
165 2307463
>>307388
Смотри в сторону макроса __COUNTER__ (в стандарт не входит, но во всех компиляторах есть) и конкатенации через ##.
166 2307667
>>307388
я в своих либах просто ## использую для той же генерации по типам
167 2307808
Ахуеть, у меня двач заработал впервые за этот месяц если не больше, я смогу снова здесь сидеть!
168 2307921
Мужики, похоже, что скоро в РФ появится много работы на Си.
169 2307951
>>307921
В военке не Си популярен
170 2307953
>>307951
В военке программирование на срочниках популярно.
171 2307959
>>307951
Так не военка же. Сейчас свои заводы и производство подниматься начнут. А веб-макаки пойдут дворы мести.
172 2307960
>>307959
На заводах Си не используется.
173 2307967
>>307960
В разных НИИ вполне себе на C++ пишут.
174 2307969
>>307959
для ЧПУ на Си только API пишут, основная работа на скриптухе типа Lua, так что сишников больше не понадобится
175 2307970
>>307967

>C++


Не Си.
176 2307998
Что хуже, когда библиотека имеет зависимости от других библиотек или когда библиотека не имеет зависимостей, но имеет внутри себя велосипеды.
177 2308034
>>307998
что мешает слинковать первую библиотеку в свой бинарь?
зависимости никогда никого не смущали
179 2308222
>>297526 (OP)
Хочу освоить C и Lua. С чего лучше начать?
180 2308227
>>308222

>С чего лучше начать?


С неосваивания этих языков, а так Си, потом луа.
181 2308824
Аноны, не знаю куда обращаться. Не могу найти тему для курсача по операционным системам, может у кого появятся идеи. Есть +- неделя на написание
182 2308918
>>308824
Сделай форк дебиана.
183 2308982
>>308918
Что значит сделать форк? Внести какие-то изменения в репозиторий или что? А как обычный рядовой чел внесёт какие-то нормальные изменения в репозриторий с операционкой чтобы это ещё и можно было бы использовать в курсовой? мне просто интересно, я даже не представляю что там сделать такого можно.
184 2308985
>>308918
С нескучными обоями. вспомнились платиновые треды молодости
185 2309002
>>308982
Тебе нужен курсовой и код, или просто курсовой? Какая ОС? Какие-то ограничения, задачи на курсовой были от преподавателей? Если код, то под окнами, я бы порекомендовал написать логгер для обращений программ в реестр, чтобы удалить созданные ими ключи, после их деинсталяции. Под пингвином, попробуй написать ... Не знаю, под него все системное уже написано.
186 2309078
>>309002
Курсовая заключается в написании кода + записки к нему. Ограничений вроде нет, я думал взять что-то про линух, тк наверное по нему больше всего инфы в инете. Была идея на ncurses написать gui который показывает различные датчики температуры в компе, и как-то встроить в виде виджета на рабочий стол. Насколько реализуемо? Сам я пользуюсь убунтой
187 2309081
>>309078
Хотя наверное идея встроить херню на ncurses как виджет звучит бредово
188 2309136
>>309081
Можешь сделать аплет, который показывает информацию о сети, например, куда и какие пакеты идут, сколько байт передано и т. д..
189 2309343
>>309002
В общем научруку понравилась тема с логгированием, сейчас буду разбираться. Спасибо, анон
190 2310059
https://thephd.dev/ever-closer-c23-improvements
Мнение?
>>303601
MinGW
>>304738

>И расходы у defer функций огромные


Смотря как его реализуют. Если вполне возможно реализовать его как заменитель goto.
191 2310159
>>310059

> Мнение?


Хочу, чтобы перевел и оформил в виде статьи на каком-нибудь хабре, чтобы с большим числом народу перетереть
Ну а по сути - все как всегда: комитетчики - старые пердуны, которые уже не умеют в развитие, а только используют то, к чему привыкли, поэтому тормозят развитие. Есть кучи направлений, где можно улучшать эффективность языка, чтобы он делал более совершенный код, чтобы удобнее было писать, но ..
192 2310618
>>310159

>которые уже не умеют в развитие, а только используют то, к чему привыкли, поэтому тормозят развитие.


Как им развиваться?
193 2310678
Если в одной библиотеке, есть статическия глобальная переменная, например, мьютекс для синхронизации вывода, то если я слинкую эту библиотеку, статически с другой библиотекой, а после чего использую вторую библиотеку в своей программе и еще раз слинкую статически первую библиотеку, но уже со своей программой, то мьютексы во второй библиотеке и в первой библиотеке будут разные?
194 2311270
>>308824
n a c h o s
a
c
h
o
s
195 2311457
>>310678
Если проекты (1. программа+мьютекс_либа и 2. либа+мьютекс_либа) разные, то очевидно что глобальные переменные у обоих проектов будут разные. Надо подключать мьютекс-либу динамически к программе и либе.
196 2311463
>>309002

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


- Звучит как глобальный хук (|| другой способ инжекта либы) с перехватом функций обращения к реестру.
- Также похоже на снэпшотер всего реестра, до и после установки программы. Но там еще и другие программы могут в этот момент писать что-то в реестр. Может случиться бяка.
197 2311468
>>311463

>Звучит как глобальный хук (|| другой способ инжекта либы) с перехватом функций обращения к реестру.


Да, но если права позволяют и система тестовая, то можно реализовать через патч системной Advapi32.dll, но я не помню, как связываются системные библиотеки, в смысле только динамически или статически тоже. Ну, а способов глобальной подгрузки dll, в интернете миллионы, к тому же прав администратора будет достаточно, потому что следить за процессами, у которых права выше администратора, бессмысленно.
unproto-fail.png29 Кб, 1155x150
198 2311988
Сяп. Разве могут типы из стандартных хидеров противоречить друг другу? И откуда va_list в стдио ?
199 2311998
>>311988
Почему у тебя stdio.h расположен в /usr/include, а stdarg.h хуй знает где?

>И откуда va_list в стдио ?


#if defined __USE_XOPEN || defined __USE_XOPEN2K8
# ifdef __GNUC__
# ifndef _VA_LIST_DEFINED
typedef __gnuc_va_list va_list;
# define _VA_LIST_DEFINED
# endif
# else
# include <stdarg.h>
# endif
#endif
200 2312003
>>311988
>>311998
Посмотрел на исходный код, там (по гитхабу) в 150 строке, в файле unproto.c выбирается заголовочный файл флагом STDARG, используй его при компиляции.
201 2312173
Функция printf и все остальные ее производные, в конечном итоге, вызывают write или WriteFile, которые можно использовать для записи в сокет, так вот, можно ли использовать функцию fprintf для записи в сокет и насколько это легально?
202 2312212
>>312173

> можно ли использовать функцию fprintf для записи в сокет


Почему бы и нет, зовёшь close(0), открываешь сокет и похуячил.

> насколько это легально?


Настолько же, насколько отсылка на текущую ситуацию в мире.
203 2312248
>>312212

>close(0)


Зачем?
204 2312325
>>312248
Чтобы твой сокет получил дескриптор 0.
Блядь, я перепутал, stdout - это 1, надо close(1).
205 2312330
>>312325

>Чтобы твой сокет получил дескриптор 0.


Почему он должен его получить? И зачем мне именно этот дескриптор?
206 2312585
>>311998

>Почему у тебя stdio.h расположен в /usr/include, а stdarg.h хуй знает где?



В ридме написано, что не на всех системах есть stdarg.h, поэтому в пакете свой.

>>312003
У меня там вообще _AIX. Тупа поставил <stdarg.h> - анпрототайпер собрался
207 2312872
Товарищи, а при линковке gcc шо -static шо -Wl,-Bstatic это синонимы и просто слинкуют все последующие либы статически к бинарнику приложения?

Если мне нужно часть либ статически, а часть динамически, то мне перед одними нужно поставить -Wl,-Bstatic потом их перечислить, потом -Wl,-Bdinamic и уж их перечислить?
208 2312897
Screenshot20220308210005com.foobnix.pro.pdf.reader~2.jpg136 Кб, 1200x753
Почему в Си нет библиотек? 209 2313116
Аноны, почему так мало? Где функции сортировки, работы с деревьями, генераторы различных типов распределений, списки, графики? Неужели такие базовые вещи в Си нужно писать с нуля в ручную? Или может быть есть какой-нибудь ресурс, где можно найти готовые реализации в .h файлах?
210 2313139
>>313116

> где можно найти готовые реализации в .h файлах?


github, за последние лет 50 написали уже все, что только может тебе прийти в голову

> почему так мало?


потому что в стандартной либе должен быть минимум элементарных кирпичиков, чтобы на любой ОС можно было запустить, а не засирать и тащить в нее все подряд
211 2313155
>>313116
Для деревьев и прочей лабуды используют другие языки вроде питона. Ты не туда зашел, петушок, со своим говном.
212 2313157
>>313139
Ну гитхаб понятно, но почему нет какого-то централизованного и стандартизированного менеджера пакетов вроде pip'a, где можно скачать готовую и отлаженную реализацию и включать её в код через include. Разве удобнее самому копаться в гитхаб-помоях, где половина функций либо вообще не будет работать, либо будет работать так плохо, что придётся переписывать самостоятельно?
>>313155
Деревья вообще-то даже в файловых системах используются. Давай, напиши ФС на Питоне, клован.
213 2313192
>>313155

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


Какой еще петухон. Ты не туда зашел, петушок, со своим говном.

> но почему нет какого-то централизованного и стандартизированного менеджера пакетов


потому что тогда нужен какой-то дядя или много дяд, кто будет определять что такое хорошо по своему вкусу, все либы в своих областях чаще всего итак в одном самом популярном и отлаженном экземпляре, та же ssl, ну а что попроще вроде там png - набираешь также в гитхабе и смотришь по количеству звезд, времени обновления и прочему, если подходит - берешь, для простых либ давно есть стандарт вроде того, что создается one_header_library под свою задачу, а потом их просто накидываешь в свой проект и прописываешь один инклуд, яркий пример сборник таких либ stb
214 2313336
>>313157
Потому что язык разработали в семидесятых, алло.
За легко подключаемыми либами с гитхаба тебе в голенг.
215 2313343
>>313336
Unix тоже разработали в 70. По-моему, скачать файл через wget и переместить его в каталог библиотек не так уж и сложно.
216 2313354
>>313157

>почему нет какого-то централизованного и стандартизированного менеджера пакетов


Вот возьми и напиши, на курсач сойдёт.
217 2313363
>>313343

>Unix тоже разработали в 70. По-моему, скачать файл через wget и переместить его в каталог библиотек не так уж и сложно.


https://ru.wikipedia.org/wiki/Unix
https://ru.wikipedia.org/wiki/WGet
https://ru.wikipedia.org/wiki/Интернет

Какую же ты хуйню несешь.
218 2313381
Почему симейк такое убожество и какие у него преимущества перед мейком, если его кто-то выбирает?
219 2313428
>>312330

> Почему он должен его получить?


Потому что ОС раздаёт свободные дескрипторы по порядку.

> И зачем мне именно этот дескриптор?


Чтобы функцию printf можно было использовать для записи в сокет.

Пиздец, у зумеров attention span как у землеройки.
220 2313430
>>313381
Потому что ты не понимаешь разницы между системой сборки и мета-системой сборки.
221 2313437
>>313381

> преимущества перед мейком


ебать ты лох..
222 2313443
>>312173

>можно ли использовать функцию fprintf для записи в сокет и насколько это легально?



>>313428

>Чтобы функцию printf можно было использовать для записи в сокет.



Где ты тут видишь printf для записи в сокет?
223 2313585
>>313157

>Ну гитхаб понятно, но почему нет какого-то централизованного и стандартизированного менеджера пакетов вроде pip'a, где можно скачать готовую и отлаженную реализацию и включать её в код через include.


Все есть. См. msys2, vcpkg под винду. С линухом вообще никаких проблем нет, там в каждом дистре свой пакетный менеджер.

>стандартизированного


Как ты себе это представляешь? Си это не только х86/64. Существуют десятки сишных компиляторов под хуеву кучу платформ, которые не то что бинарно, а даже программно не совместимы.
224 2313598
бля пасаны, я только вкатываюсь, может кто-нибудь даст вк/тг чтоб я мог иногда заёбывать с вопросами?
225 2313631
>>313598
Заебывай тут.
226 2313633
>>313598
пиши тут, няша
227 2313638
>>313631
долго, да и тред засрётся. Ну ладно, похуй.
228 2313640
Какие есть альтернативы доксигена? Желательно живые, можно только для Си и С++.
Просто интересно потрогать их и посмотреть плюсы или минусы.
229 2313647
atoi/atol/atoll тупа конвертят строку, даже если она не валидная без всяких ошибок?
230 2313648
231 2313663
>>313354
А что, это идея. Кто-нибудь хочет присоединиться?
232 2313949
а что за тип FARPROC, не могу нагуглить, шо це
подозреваю, что какой-нибудь size_t
233 2313952
>>313949
раскопал, что это
typedef int (FAR __stdcall *FARPROC)();
но что такое FAR, судя по коду просто какой-то флаг или что
234 2313981
>>313949
Ошмётки легаси, когда на ранних 32-битных машинах были ближние (NEAR) и дальние (FAR) процедуры. Привыкай, в виндусе всё так.
235 2313983
>>313443
Нагуглить fdopen и включить мозг на пару секунд религия не позволяет или таки возраст?
d342.png11 Кб, 617x252
236 2314046
>>313981
Спасибо, а не знаешь как этот FARPROC правильно в функцию прокинуть и через GetProcAddress получить, потому что func_1 остается NULL, а func_2 все нормально работает?
Но нужно именно без хардкодного описания параметров функции через typedef, чтобы перед GetProcAddress ее тип проставить или без этого он совсем никак не сможет в данном случае сопоставить func внутри функции load_func и передаваемую туда func_1
237 2314049
>>313983
Ты же понимаешь, что ты обосрался и пытаешься в маневры? Зачем ты продолжшаешь общение? Смирись с тем, что ты не прав, у тебя нет никаких оправданий, а лишь попытки оскорблений, скорее всего ты бездарное существо, которое живет на бабушкину пенсию и дрочит Си-код.
238 2314053
>>314046
Ты передаешь указатель в функцию и его изменяешь, передавай указатель на указатель для его именения или взаимодействуй с глобальной переменной.
239 2314058
>>314053
Блин, я уже слепой.. Спасибо, нужно спать хоть раз в пару дней
image72 Кб, 991x416
240 2314096
Кто-нибудь может объяснить почему тут так написано? Разве бывает тип больше лонг лонг?
241 2314100
>>314096
Да, например, struct { unsigned long long value_1, value_2 } double_long_long;
242 2314103
>>314100
Аче структура это тип?
243 2314105
>>314049

> ты бездарное существо, которое живет на бабушкину пенсию и дрочит Си-код


Проекции уровня /pr/
244 2314106
>>314103
А, что это по-твоему?
245 2314108
>>314106
Да я хз, я их не проходил ещё даже, просто книгу читаю, а там вещи непонятные, приходится наперёд смотреть
246 2314125
>>314108
среди простых целых типов - да, int64_t/uint64_t ака long long/unsigned long long - самые большие
247 2314146
>>314125
Но тогда почему там написано "на помощь и приходит uintmax_t", ведь этого всего лишь машинное слово (или я чет не понял), а структуры могут быть любой длины?
248 2314179
>>314146
Читай внимательно, что там дальше написано.
249 2314194
>>314179
Ну дальше там написано что есть какой-то __int128 (че) которым внезапно может оказаться переменная, но следом же сказано что компилятор не считает его за расширенный целочисленный тип, поэтому максинт это в любом случае лонг лонг. Непонятно зачем вообще нужен этот максинт если есть лонг лонг. В статье сначала говорится типа "вот можем захотеть написать так, но вдруг размер больше? поэтому надо юзать максинт" а потом оказывается что больше-то ничего и не бывает.
250 2314208
>>314194
Там еще дальше написано.
251 2314211
>>314208
Да я до конца прочитал. Ты сам открыл эту статью или просто так говоришь?
252 2314215
>>314211

>Но есть один нюанс. Некоторые читатели, использующие __int128 или его беззнаковый аналог, могут задаться вопросом: почему в моем компиляторе clang или gcc intmax_t определен как long long, тогда как его размер меньше, чем у __int128? Все дело в том, что clang и gcc не рассматривают __int128 как расширенный целочисленный тип, так как это влечет за собой изменение intmax_t, а это уже нарушает ABI-совместимость с другими приложениями.



>Представьте, что у вас есть программа, которая использует функцию с параметром intmax_t в динамической библиотеке. Если компилятор изменит значение intmax_t и перекомпилирует программу, то она и библиотека будут ссылаться на разные типы, нарушая бинарную совместимость.



>В конечном итоге intmax_t/uintmax_t немного не соответствуют целям, описанным для них в стандарте.

253 2314219
>>314215
Так а каким в итоге целям они соответствуют? Или никаким и можно забить на них хуй?
254 2314221
>>314219

>никаким и можно забить на них хуй?


Да.
255 2314227
>>313585
Я погугли и кажется нашёл кое-что получше: https://www.clibs.org/
256 2314231
>>314227

>Я погугли и кажется нашёл кое-что получше


Выглядит, как говно без задач с парой пакетов в репозитории, которые не понятно еще в каком виде предоставляются.
257 2314642
>>314219
Целям не ломания совместимости.
Школьникам-максималистам-бунтарям-старье-нинужно-весь-мир-разрушим-до-основанья-а-затем-новый-мир-построим осмыслить подобное трудно, но это важно.
258 2314656
>>314642

>Целям не ломания совместимости.


uintmax_t и intmax_t, как раз ломают совместимость.
259 2314676
>>314656
Капким образом?
260 2314703
>>314676
>>314215

>The following type designates a signed integer type capable of representing any value of any signed integer type: intmax_t



>The following type designates an unsigned integer type capable of representing any value of any unsigned integer type: uintmax_t



__int128 int_128 = __INT128_MAX;
intmax_t int_max = int_128;

Чему должен быть равен int_max?
261 2314764
>>314642
Приведи пример несовместимости когда эти типы спасают
262 2314810
>>314703

>__int128 int_128 = __INT128_MAX;


Эта залупа вообще хоть в чем-то скомпилируется? Ни разу не видел 128-битных литералов.
если конечно __INT128_MAX это дефайн, а не хитровыебанное прибитое гвоздями расширение конпелятора
263 2314826
>>314810

>__INT128_MAX


Это просто условное максимальное значение int128.

https://godbolt.org/z/4s9Y6afcK
264 2315287
>>314826
Я не про это вообще. Уже сам нашел.

If the value of the integer constant is too big to fit in any of the types allowed by suffix/base combination and the compiler supports extended integer types (such as __int128), the constant may be given the extended integer type;
265 2315553
Анончики, приветствую. Худо-бедно умею прогать на плюсах, сейчас сходил на собес и мне сказали, что плюсы это заебись, но они у себя пишут на чистом си. В целом, как мне сказали, если знаешь плюсы, на си перейдешь быстро, не парься.
Собственно, вопрос, так ли это? На си ни одной строчки кода не написал в жизни. Да и на самих плюсах в каких то низкоуровневых дебрях не копался. Понимаю, что логика языков должно быть практически идентична, но все равно наверняка отличается в некоторых моментах + синтаксис + всякие внутренние инструменты типа stl, я даже не ебу есть ли что то типа этого в си. Что скажете?

Алсо, посоветуйте плз хороший учебник по си, по которому можно относительно быстро вкатиться. Книги в шапке вижу, может есть какие-то комментарии по ним, что лучше, или еще какие-то годные варианты?
266 2315561
>>315553

>Собственно, вопрос, так ли это?


Да.

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


Не во всех задачах.

>всякие внутренние инструменты типа stl


Их нет.

>или еще какие-то годные варианты?


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

Так, что тебе нужно знать, как работают указатели и знать, как заставить платформу сделать то, что ты хочешь, дальше твоих знаний C++ должно хватить.
267 2315659
Есть ли возможность кастануть во время выполнения void указатель в указатель на функцию, мб каким-либо образом где-то упаковав информацию о количестве/типах аргументов и типе возвращаемого значения? Или само возникновение такой необходимости уже означает, что я делаю что-то не так?
Я пишу свой говноязык и реализую встроенные функции/методы объектов, которые описаны структурами, содержащими имя функции/метода, кол-во аргументов, флаг наличия возвращаемого значения и указатель на C-функцию.
Например, в моём говноязыке есть функция int max(int, int), которую описывает структура {"max", 2, true, builtin_max}, где builtin_max - void указатель на функцию с сигнатурой Object ж builtin_max(Object ж, Object ж). При этом аргумент/возвращаемое значение всегда имеют тип указателя на Object, т. е. структура описывает функцию полностью.
268 2315707
>>315659

>Есть ли возможность кастануть во время выполнения void указатель в указатель на функцию


Да.

>мб каким-либо образом где-то упаковав информацию о количестве/типах аргументов и типе возвращаемого значения?


typedef return_type function_type_name(parameters);
269 2315823
Зойчем структуры как-то ебануто выравнивают содержимое? Нахуя это сделано? Как ими пользоваться нормально, если они такие непослушные? Хотел структурой описать содержимое одного файла, так она все переговняла, посмещала. Хуйня получилась. Пришлось ебаться, описывая содержимое массивом с указателями.
270 2315897
>>315823

>Зойчем структуры как-то ебануто выравнивают содержимое? Нахуя это сделано?


Производительность.

>Как ими пользоваться нормально, если они такие непослушные?


Правила выравнивания изучи.

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


Проблема в тебе, а не в выравнивании.
sage 271 2315902
>>315823
гугли упаковка/распаковка структур для бинарного хранения или передачи и не выдумывай велосипедов
надеюсь ты еще студентик, а не зарабатываешь этим деньги, а то заебался переделывать за таким говном как ты
272 2316057
>>315561
Окей, спасибо, анончик!
А по учебникам че то годное можешь посоветовать? Чтобы вот быстро освоить как то хотя бы базовые вещи, чтобы потом уже проще было. А то этих талмудов на 1000 страниц много, но что именно из этого годнота на берегу определить очень сложно.
273 2316094
>>316057

>А по учебникам че то годное можешь посоветовать?


Ничего. Не читал.
274 2316152
>>316094
А как учил?
275 2316156
>>316152
Документация.
276 2316162
>>316156
Сурово.
277 2316281
>>315672 (Del)
Спасибо. В результате поступил средне - передаю содержащий аргументы объект в случае функции, а в случае метода ещё и соответствующий инстанс. Свой подход всё ещё собираюсь использовать для различения функции с аргументами/функции без аргументов/метода, но это будет уже проще сделать.

>>315707
Спасибо, что-то вообще в голову это не пришло. Жаль только, что придётся условиями всё это дело обложить а-ля "if (nargs == 2 && has_return) { return (func_type_2args_has_return)(args) }. И в макрос никак красиво не оформить.
278 2316285
>>316281

>И в макрос никак красиво не оформить.


Можно оформить в красивую асм вставку.
279 2316464
>>316281

>Спасибо, что-то вообще в голову это не пришло. Жаль только, что придётся условиями всё это дело обложить а-ля "if (nargs == 2 && has_return) { return (func_type_2args_has_return)(args) }. И в макрос никак красиво не оформить.


https://github.com/bminor/glibc/blob/b92a49359f33a461db080a33940d73f47c756126/sysdeps/unix/sysdep.h
offset.PNG9 Кб, 470x229
280 2317066
Аноны, почему первый мегабайт в начале диска (gpt) пропускается? Он отображается как свободный то есть неразмеченный. Находится вначале. С какой целью это сделано?
offset.PNG11 Кб, 470x229
281 2317067
>>317066
Надо подчеркнуть чтобы вы быстрее поняли. Вот видите первый разедл и у него offset 1024кб от начала диска, почем первые 1024кб диска не используются? А? А? А? Причём они не размечены так как на диске отображаются как фри.
282 2317115
>>317066
>>317067
Зачем ты пишешь в Си треде это? Почему ты не можешь просто посмотреть на картинку, которую выдает википедия и понять это?
https://en.wikipedia.org/wiki/GUID_Partition_Table
283 2317119
>>317115
Потому что здесь ситемщики сидят больше шансов что ответят.

Да я уже разобрался потому что lba 0 это резерв для mbr защищаюй gpt от изменения старыми программами. Ну и до меня сразу не доходило по картинке

Правда вопрос в том что mbr запись 512 байт занимает а не 1024 килобайта но это видимо размера кластера то есть весь lba0 адресует 1024килобайта потому что такой размер блока, ведь lba1 это уже заголовок gpt
284 2317175
Системный вызов fork() создаёт копию родительского процесса. Правильно ли я понимаю, что код в этой копии стартует не с самого начала программы, а с того места, которое идёт сразу после fork() ?
285 2317183
>>317175
это ты про api линукса чтоли?
286 2317185
>>317175
С самого начала программы.
287 2317187
>>317185
>>317175
Я обосрался, да правильно понимаешь.
288 2317201
>>317183
Да.
>>317185

>С самого начала программы.


А как тогда сделано, чтобы форки не плодились бесконечно? Ведь если программа начнёт выполняться с самого начала, то она опять на вызов fork() натолкнётся?
289 2317202
>>317187
Ясн.
290 2317213
>>317175
Не совсем так, он начинает работу с места форка, но возвращает результат в зависимости от того, является ли процесс дочерним или родительским. Таким образом, можно сделать различную логику у дочернего и родительского процесса, после форка.

https://opennet.ru/man.shtml?topic=fork

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

291 2317297
>>317175
Похоже на гопников: "форкни мне бабла. чел"
292 2317677
Подскажите, плиз какие библиотеки есть на win10 чтобы получить температуру процессора в настоящий момент? Пока только wmi нашёл, ещё способы есть?
293 2317679
>>317677

>Пока только wmi нашёл, ещё способы есть?


Чем он тебя не устраивает?
294 2317682
>>317679
ничем. всем устраивает просто навсякий случай спросил мало ли есть какой-то более простой\альтернативный способ. всегда так делаю. так я уже копаю во всю в его сторону
295 2317707
>>317679
Он выдаёт постоянно одно и тоже значение которое не меняется.

Я использую класс MsAcpi_ThermalZoneTemperature и объект CurrentTemperature постоянно выдаёт одно и тоже 2982.
296 2317724
>>317707
CurrentTemperature выдаёт не температуру проца, а температуру с датчикам расположенного на материнской плате.
297 2317726
>>317707
>>317724
Функции по выдаче реальной температуры процессора не предусмотрено в wmi есть только датчик с материнки, чтобы её узнать нужно драйвер написать.
298 2317731
По своей сути вообще current temperature используется больше для детекта в целом температуры внутри корпуса компа\ноутбука.

Можно например вытащить комп на балкон и через 10 мин опять запустить её и увидеть что темпера просела.
25654342504997140752565434245256780038.jpg258 Кб, 1080x1349
299 2317802
Как установить GCC на windows? Ютуб гайды перенаправляют на сторонние сайты, не gnu.org .
300 2317815
>>317802
windows 10/11 => wsl/wsl2
windows <10 => msys/msys2/mingw/mingw-w64/cygwin
301 2317969
>>317802

>перенаправляют на сторонние сайты, не gnu.org


Ты бы ещё посетовал, что за установкой линупса тебя отправляют не на kernel.org
303 2319043
Железячники нахуя вы сокращаете имена всего до ткнчхни? ПОЧЕМУ НЕЛЬЗЯ ПИСАТЬ НОРМАЛЬНО? Экономия пары байт?
304 2319085
0blGmoSAMDs.jpg25 Кб, 416x287
305 2319094
306 2319189
https://pastebin.com/s1dFMU4M
Можно ли сделать это лучше, оптимизировать/рефакторить?
307 2319193
>>319189
(сам заметил, что strcmp неправильно использовал)
308 2319220
Как изучать язык Си?
Почему его считают плохим выбором начинающего для изучения программирования?
309 2319247
>>319220
Кто считает? Си первым делом изучают например в cs50 или в школе21. Мой препод в универе говорил, что си хороший первый язык.
Из аргументов: учишься работать с памятью, простой синтаксис.
310 2319256
>>319189
Зачем ты написать свой велосипед, с использованием системного вызова и побайтовым чтением?

scanf("%ms", &string); // POSIX 2013
311 2319310
Помогите написать makefile. собрал библиотеку функций из .с в .о потом ar rc в один файл .а. Позже написал main.c как его теперь соединить с библиотекой .a ?
312 2319311
>>319310
$(CC) -static main.c -Lpath-to-your-lib-directory -lyour-lib-name
313 2319326
>>319311
у вас слишком сложно
уже попердолился и написал типа
gcc -o $(NAME) $(OBJ_FILES) $(LIBA)
вроде работает.
Мне говорили что книжка по мейкфайлам около 700 страниц, так и живу на основе ранее написанного
16308872710920.mp41,6 Мб, mp4,
400x720, 0:14
314 2319373
Хочу в драйвера пиздец как вкатиться. Начать хочу с винды, подскажите с чего начать ньюфане? Ну я щас читаю microsoft docs про драйвера там всякие виды, isolated driver packages и т.д. много всего и лишнего для ньюфажной головы там. Подскажите как уже к практике присутпить. Может какой-нибудь фильтр для клавиатуры написать или хз что.
315 2319374
>>319373

>Начать хочу с винды


Перехочевай.
316 2319375
>>319374
А с чего начать? С linux'а?
317 2319412
318 2319413
>>319412
А чем он проще? Просто извини мне мало да, потому что мне придётся ставить его дуалбутом щас в uefi а это геморрой тот ещё.
319 2319417
>>319413
Чем винда.
320 2319422
>>297526 (OP)
Вчера оставлял тред, никто туда не зашёл и его снесло, потому что я забыл бампнуть. Собственно, вопрос с треда: Насколько распространено использование wm_keyboard_LL для отслеживания нажатий клавиш, и как сильно на это могут триггерится антивирусы / античиторы / антипидоры?
321 2319426
>>319422
Да, я тупой.
322 2319435
>>319422

>распространено использование wm_keyboard_LL


Где и зачем?
323 2319440
>>319413
Думаю, что как минимум тем, что у него открыт исходный код; в репозитории ядра много примеров драйверов для разных устройств, в которых можно покопаться (предварительно разобравшись, как ядро с ними взаимодействует).

А в чём геморрой? На моём личном опыте линуксовский GRUB рядом с виндусовским загрузчиком хорошо рядом встаёт; слышал о проблемах с какими-то моделями efi, но сам не встречался. Плюс, если тебе просто дрова писать и тестировать, то и места свободного на диске много выделять не надо.
324 2319445
>>319435

>для отслеживания нажатий клавиш

325 2319453
>>319445

>зачем?


Зачем тебе их отслеживать?!
326 2319456
>>319453
Хочу, чтобы моя хуйня реагировала на нажатия клавиш во всех окнах, а что?
327 2319462
>>319456

>а что?


Это сломанная логика или малварь 2002 года? Глобальный перехват клавиш не нужен в полезном ПО.
328 2319466
>>319462
Пилю хуйню исключительно для себя, да и о полезности своей хуйни я не заявлял.

>не нужен


Кто сказал?
329 2319469
>>319466

>Кто сказал?


Назови хотя бы 1 причину почему я не прав?
330 2319481
>>319469
Берёшь и реагируешь на нажатие клавиатуры по всему кудахтеру.
Если самому додумать слишком сложно, то можешь сразу сливаться
331 2319483
>>319481

>Берёшь и реагируешь на нажатие клавиатуры по всему кудахтеру.


Маневры от мамкиного хакера по статьям нулевых.
332 2319484
>>319483

>пук


Так бы сразу и сказал.
333 2319496
>>319440
>>319440
спасибо, что пояснил, анон.

да я так сказал про дуал потому что как-то хотел вторую винду поставить и она выёбываться начала что диск размечен не в рекомендуемом порядке и в итоге крашилась при установке. сами микрпософты не рекомендуют в двуал бут в ефи 2 винды пилить.

спасибо, анон. тогда будем в linux стремиться для начала
334 2319758
>>319422

>wm_keyboard_LL


Эти хуки хороши только если тебе нужен доскональный контроль клавы/мыши, включая блокировку. Например есть НЕАКТИВНОЕ окно которое тебе нужно скроллить и кликать в нём, но БЕЗ АКТИВАЦИИ этого окна. С помощью хука перехватываешь все события, реагируешь на них как хочешь, при этом можешь блокировать какие надо от дальшейшей обработки системой по умолчанию.

Звучит красиво, но - ненадежно. Хуки работают по принципу цепи - передачи сообщений от одного приложения к другому. Это значит, если хук используют два и более приложения, и одно из них обрабатывает сообщения некорректно или блокирует от передачи дальше, остальные приложения в цепи больше сообщения не получают и висят мертвые, не реагируют. Есть достаточно софта, даже от больших серьезных компаний, страдающего подобным говнокодом. Будь готов к тому, что твоя прога в любой момент отвалится "просто так".

Надежно работает GetAsyncKeyState(), но эту байду нужно дергать по таймеру, что зашквар, и быстрые нажатия таким образом можно пропустить. Еще есть RegisterHotKey(). Сам не пользовался, но для своей задачи выглядит наилучшим выбором. Шлёт сообщения как положено, и вряд ли будет отваливаться как хук.

Вообще, я думаю, есль же всякие кейлоггеры, где реализовано всё как надо, но эти хацкеры мамкины жлобы код скрывают.
335 2319904
мб есть какой способ намутить темплейты как в плюсах используя какой-нибудь не сишный препроцессор? вроде же есть какие-то общие препроцессоры типа gnu m4
336 2319912
>>319904

>мб есть какой способ намутить темплейты как в плюсах используя какой-нибудь не сишный препроцессор?


Чем тебя сишный не устраивает?
337 2319913
>>319912
а что, можно темплейты намутить на сишном препроцессоре?
338 2319914
>>319913
1) Зачем они тебе?
2) Что ты понимаешь под темплейтами?
3) Зачем шаблоны в Си?
От твоих ответов зависит возможно или нет.
339 2319938
>>319914

> 1) Зачем они тебе?


чтобы не писать вручную миллион одинаковых функций и структур типо
int func_int(int arg1, int arg2)
float func_float(float arg1, float arg2)
и т.д.

>> 2) Что ты понимаешь под темплейтами?


то что в плюсах понимается под темплейтами

>> 3) Зачем шаблоны в Си?


а зачем спрашивать один и тот же вопрос 2 раза?
340 2319947
>>319938
https://pastebin.com/6GZLExsY

Можно еще короче, но так общая идея понятна.
341 2320002
>>319913

>а что, можно темплейты намутить на сишном препроцессоре?


Да, только выглядят они несколько говняно. Посмотри sglib, например.
342 2320515
>>319947
спс, идею понял, не лаконично, конечно
а если мне надо шаблон на 2 типа
то там видимо кастыли вообще лютые будут
>>320002

> выглядят они несколько говняно


супер говняно выглядят
либа прикольная
Безымянный-файл-изображения-(25)-5-b-f644.jpg258 Кб, 1200x898
343 2320775
Аноны, как обозвать хидер с общими функциями, вроде переделонных под нужный контекст стандартных функций?
344 2320779
>>320775

>вроде переделонных под нужный контекст стандартных функций?


Это как?
345 2320786
>>320775
Auxiliary
346 2320893

>2297526


По какой причине make может не печатать выполняемые команды в процессе сборки? Запускаю с ключом --no-silent, но выхлопа нет.

Сама сборка вроде идет, но гдет в середине процесса вываливается нихуя неинформативная ошибка с вызовом bzip2 откудато из глубин мейкфайла.
23349829654146617762334982960071212193.jpg151 Кб, 1080x1080
347 2320951
Можно ли на C# написать компилятор C под винду?
348 2320974
>>320951
Можно всё, обычно вопрос стоит - нахуя.
349 2321095
>>320951
компилятор можно написать на чем угодно: на жаваскрипте, питоне, сишарпе и даже авке, только на штмл и цсс не получится наверное
350 2321096
>>321095

>только на штмл и цсс не получится наверное


Потому что это не языки программирования.
image.png14 Кб, 403x293
351 2321137
Помогите продавцу мяса разобраться с циклом
Хочу сделать проверку допустимости ввода только чисел, которые при соблюдении условия будут записываться в массив.
Если ввожу только числа, то программка работает, а если ввожу другой символ, то консолька зависает. Объясните пожалуйста
352 2321139
>>321137
Считывай в строку, а после пройдись по ней функцей isdigit, дальше через atoi преобразуй строку в int, размер буфера (для строки) будет равен `sizeof(#__INT_MAX__) + 1`.
353 2321140
>>321139

>`sizeof(#__INT_MAX__) + 1`


__INT_MAX__ - максимальное значение int в десятичной системе, в строковом представлении, + 1 для знака и еще + 1 для терминального нуля.
354 2321142
>>321139
А можно ли как-то сделать без функций атой, сайзоф и т.п.? Я пока что ещё не дошел до этих тем с работами со строками, пока хочу разобраться как циклы сделать с помощью простых отношений
355 2321148
>>321137
Похоже у меня нет случая для while(0)?
Поэтому консолька не знает что делать в такой ситуации, когда вводится не число
356 2321149
>>321137
>>321148
запутался...
357 2321150
>>321149
https://0bin.net/paste/vfkSDtUL#BeLJo4RejCVmredhUpfJ26xXZQ-KeXEkbbO32Kh7FQg
Тебе нужно очищать stdin после неправильных данных, иначе scanf будет вечно считывать неправильные данные.
358 2321153
>>321150
Но в примере все равно происходит неправильная обработка строк вида "1000qwerty", потому что scanf считывает только 1000, а последующее чтение возвращает "qwerty", поэтому очистку stdin надо сделать общей для 2 случаев, то есть вынести за проверку.
359 2321159
>>321150
>>321153
Точно!
Совсем позабыл про эти потоки ввода и вывода. Буду разбираться. Большое спасибо
360 2321278
>>320974
Ответ, как всегда, один - а хули нет?
361 2321598
Анончики-прогеры, такой вопрос
Почему-то иногда при запуска кода на Си(1 раз из 5), в переменные записывается какая-то дрянь, работал с указателями, сначала думал, что может неправильно память выделял, но после перепроверки и просмотра кода построчно понял, что все нормально, проблема в том, что только в некоторых ячейках памяти матрицы какая-то ерунда, в остальных все нормально, выделял память под матрицу char.
операционная система Windows 10, процессор AMD, работал на ноуте, был разряжен до 15 процентов
362 2321605
>>321603 (Del)
/
Назначение: выводит на консоль интерпритации, где формула принимает 1 и 0, в массиве r размером K
содержаться значения функции на всех двоичных векторах, Kset - количество переменных в формуле
Входные данные: r, K, Kset
/
void falseAndTrue(int r, int K, unsigned Kset){
int count = K - 1;
char bits = (char )malloc(sizeof(char)
K);
for (int i = 0; count > -1; i++, count--){
bits = (char )malloc(Kset sizeof(char));
for (int k = 1 << (Kset - 1), j = 0; k; k >>= 1, j++)
bits[j] = (count & k) >> (Kset - 1 - j);
}
printf("Формула принимает 0 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 0){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("\nФормула принимает 1 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 1){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("Дошел сюда\n");
for (int i = 0; i < K; i++)
free(bits);
free(bits);
printf("Освободил битс\n");
}
362 2321605
>>321603 (Del)
/
Назначение: выводит на консоль интерпритации, где формула принимает 1 и 0, в массиве r размером K
содержаться значения функции на всех двоичных векторах, Kset - количество переменных в формуле
Входные данные: r, K, Kset
/
void falseAndTrue(int r, int K, unsigned Kset){
int count = K - 1;
char bits = (char )malloc(sizeof(char)
K);
for (int i = 0; count > -1; i++, count--){
bits = (char )malloc(Kset sizeof(char));
for (int k = 1 << (Kset - 1), j = 0; k; k >>= 1, j++)
bits[j] = (count & k) >> (Kset - 1 - j);
}
printf("Формула принимает 0 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 0){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("\nФормула принимает 1 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 1){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("Дошел сюда\n");
for (int i = 0; i < K; i++)
free(bits);
free(bits);
printf("Освободил битс\n");
}
363 2321606
>>321603 (Del)
>>321605
Блять, сранная табуляция и звёзды съехали
364 2321609
/
Назначение: выводит на консоль интерпритации, где формула принимает 1 и 0, в массиве r размером K
содержаться значения функции на всех двоичных векторах, Kset - количество переменных в формуле
Входные данные: r, K, Kset
/
void falseAndTrue(int r, int K, unsigned Kset){
int count = K - 1;
char bits = (char )malloc(sizeof(char)
K);
for (int i = 0; count > -1; i++, count--){
bits = (char )malloc(Kset sizeof(char));
for (int k = 1 « (Kset - 1), j = 0; k; k »= 1, j++)
bits[j] = (count & k) » (Kset - 1 - j);
}
printf("Формула принимает 0 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 0){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("\nФормула принимает 1 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 1){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("Дошел сюда\n");
for (int i = 0; i < K; i++)
free(bits);
free(bits);
printf("Освободил битс\n");
}
364 2321609
/
Назначение: выводит на консоль интерпритации, где формула принимает 1 и 0, в массиве r размером K
содержаться значения функции на всех двоичных векторах, Kset - количество переменных в формуле
Входные данные: r, K, Kset
/
void falseAndTrue(int r, int K, unsigned Kset){
int count = K - 1;
char bits = (char )malloc(sizeof(char)
K);
for (int i = 0; count > -1; i++, count--){
bits = (char )malloc(Kset sizeof(char));
for (int k = 1 « (Kset - 1), j = 0; k; k »= 1, j++)
bits[j] = (count & k) » (Kset - 1 - j);
}
printf("Формула принимает 0 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 0){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("\nФормула принимает 1 на значениях:\n");
for (int i = 0; i < K; i++){
if (r == 1){
for (int j = 0; j < Kset; j++)
printf("%d ", bits[j]);
putchar('\n');
}
}
printf("Дошел сюда\n");
for (int i = 0; i < K; i++)
free(bits);
free(bits);
printf("Освободил битс\n");
}
1647990068595.jpg335 Кб, 1080x2340
365 2321612
>>321610 (Del)
Указатели проебались, ибо текст интерпритировал как разметку
1647990158931.jpg306 Кб, 1080x2340
366 2321613
367 2321614
Короче, условно говоря, при запуске кода каждый 5-7 раз не могу дойти до пункта освободил битс, то есть матрицу свою, почему так - понять не могу
368 2321615
>>321612
А блять, я понял почему, потому что я выделил память не под char*(указатель на char), а просто на char, пиздец, бля
Ебался три часа из-за одной строчки
369 2321617
>>321615
>>321616 (Del)
Да, я уже понял, когда покушал сразу заметил ошибку
image.png6 Кб, 296x210
370 2321715
Здравствуйте, объясните Гене Букину.

Есть массив, и в нем надо найти символ, когда он встречается в первый раз.
Я создал массив, сохраняю символ в переменную и передаю массив и символ в функцию, которая должна вернуть мне адрес ячейки, где символ встречается в первый раз.
Но я запутался с этими типами и указателями. Максимум что получается это вернуть значение по адресу, но не сам адрес.
Помогите, прошу...
371 2321727
>>321715

>return &text


Ты возвращаешь адрес указателя, а не адрес, на который он указывает. Возвращай сам указатель: return text
372 2321734
>>321727
Я уж пробовал и так, но не работает, он ругается говорит

error: returning 'char *' from a function with return type 'char' makes integer from pointer without a cast [-Wint-conversion]
40 | return text;
373 2321738
>>321734
В объявление функции ты должен указать возвращаемый тип данных. Вместо "char searh(...)", "char* search", так как при возврате переменной text, из функции возвращается адрес на char, а не char
374 2321740
>>321727
>>321734
хехе объявил функцию как указатель и все получилось
ппц интересно
если не трудно объясните пожалуйста. я еще только прохожу указатели
375 2321742
>>321738
Спасибо, только что додумался. до этого так не делал ни разу. Объявлял функцию как функцию, а не указатель
376 2321743
>>321738
Но что-то мне подсказывает, что можно как-то сделать так чтобы вернуть адрес ячейки можно было бы вернуть из функции объявленной без звездочки.
Можно ли так?
377 2321748
>>321743
Нет, так нельзя, потому что возвращаемый тип данных должен соответствовать объявлению функции. Возвращаешься указатель -- функций объявлена, как указатель, возвращаешь char -- функция объявлена, как char, и т.д.
378 2321755
>>321748
Понял. Большое спасибо. В книге видимо упустил такое
25562157134950498672556215709393066936.jpg88 Кб, 1080x1080
379 2321889
>>321095
А на на лиспе можно? Под винду.
380 2321969
Объясните нубу, почему звездочка указателя должна являться частью имени переменной, а не типа данных
(void *a,b; вылетит с ошибкой "нельзя переменную void")
Из за этого для объявления указателя на функцию нужно лишние скобочки писать, а профит в чем?
381 2322048
>>321969
Можно в одну строку писать char c[99], @pc = c;
382 2322086
>>321969

>а профит в чем?


Я так понимаю, что можно объявить и переменную и указатель на неё
int a, pa, b, pb;
383 2322121
>>321969

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


Указатель не является типом.

>Из за этого для объявления указателя на функцию нужно лишние скобочки писать


Не нужно.
384 2322132
>>321743
Адрес памяти явно в char (1 байт) не поместится - дальше сам.
385 2322135
>>322132
Возвращаемое значение разве не увеличивается до размера регистра?
386 2322151
>>322135
В GCC вырождается в movzbl, а это, если я верно знаю, загружает 1 байт и дополняет нулями до размера регистра.
387 2322181
Стоит проходить cs50? Почему надо учить си, а не сразу c++?
388 2322186
>>322181

>Стоит проходить cs50?


Если хочешь.

>Почему надо учить си, а не сразу c++?


Понимание реализаций C++ кода.
389 2322493
>>321889
Компиляторы на лиспе писали ещё тогда, когда твоя бабушка решила поебаться с твоим дедушкой
390 2322640
>>322181
С++ убивает.
391 2322959
Можно ли вычислить результат функции на этапе компиляции?
392 2322973
>>322959
Пидора вопрос.
393 2323227
>>322959
Вот это скомпилируется в 2 команды:

static float f(float x)
{
return sin(x);
}

float g(void)
{
return f(1.25);
}
394 2323231
>>323227
Мне не оптимизация нужна, а аналог constexpr из C++, сотни строк макросов идут нахуй.
395 2323233
>>323231
А, ну ищи.
arr.png14 Кб, 477x357
396 2323340
почему так нельзя?
397 2323345
>>323340
Потому что соси хуй, быдло
398 2323410
>>323340
const (костанта) == "неизменяемое". И тут ты такой int в char[] превращаешь. Тут даже Java спросит "а не сделать ли get(), set() и cast"?
399 2323415
>>323410
Сам понял, что написал?
400 2323427
>>323340
В 10.2 можно.
401 2323428
>>323410

>int в char[] превращаешь


Ну это явная шизофрения уже, типичное весеннее обострение.
>>323415
А ты дурачок, если сразу шизика не распознал.
402 2323429
>>323427
Чем эти даунские прыщавые пидоры оправдываются что раньше было нельзя?
403 2323432
>>323429
А, у тебя вне функции.
Тогда так: в clang можно! А в гцц все по стандарту 99.
404 2323433
>>323432

>по стандарту 99.


То есть в стандарте константа не константа.
Нет, не верю. Комитет те еще пидорасины, но не до такой степени.
Это прыщавые дебилы обосрались.
405 2323479
>>323340
Вы очень умный и внимательный
406 2323485
>>323479
А ты тупой уебок.
Нахуй иди.
407 2323488
>>323340
По умолчанию в стеке тебе делать нечего, тем более тупой индусской макаке.
>>323427
Это была хуевая идея. Если так надо насрать в стеке, есть alloca(), однако давать срать по умолчанию даже без осознания этого факта программистом, ну это дно. Или же это показатель, что именно язык "С" не предназначен для обычных людей, а строго инструмент специалистов досконально понимающих такое подъебки.
408 2323496
>>323488

>в стеке тебе делать нечего


Или что, ножкой топнешь?
409 2323505
>>323488

>По умолчанию в стеке тебе делать нечего


Что значит "по умолчанию"?

>тем более тупой индусской макаке


Как ты определил, что он макака?

>Если так надо насрать в стеке, есть alloca()


Нет. https://www.opennet.ru/man.shtml?topic=alloca

>однако давать срать по умолчанию даже без осознания этого факта программистом


Что значит "по умолчанию"?
410 2323516
>>323505
Значит что я мать твою ебал.
411 2323590
>>323505

>Что значит "по умолчанию"?


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

>Как ты определил, что он макака?


В си, не знать про стек. Залетная макака, ну или серь тролит тупостью.
412 2323655
>>323590
VLA, мамоёб, ты в него умеешь?
413 2323741
Совет деда: VLA и alloca не нужны. Если размер массива ограничен парой килобайт, то задай константу и выдели фиксированный кусок стека. Если нет - не стреляй в ногу, используй маллок.
414 2323906
>>323904 (Del)
Тебе расписать, что в нем говно?
415 2323925
>>323909 (Del)
https://0bin.net/paste/1I+D6VCP#84l06XwJDrEtncfUk0JkfU6CZ-cqqf4LxqnEpIkwXGe
Ошибки одни и те же, результаты не проверял, примерно по коду написал какие проблемы есть.
416 2323934
>>323932 (Del)
Варнинги и ошибки компиляции, если я захочу передать const char X в функцию, которая принимает char X, но при этом работает с ним, как с const char X, то мне придется отключать варнинги и ошибки.
417 2323954
>>323909 (Del)

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


Хуевое оправдание.
418 2323966
>>323963 (Del)

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


clang-format (не плагин), но не рекомендую использовать версии до 15, мало функционала может оказаться.
image98 Кб, 1005x714
419 2323970
420 2324147
>>322048
>>322086
Спасибо, хотя все еще кажется что не перевешивает
>>322121

> Указатель не является типом.


Передай в функцию, требующую указатель на int целочисленное значение и почитай что напишет компилятор

> Не нужно.


int foo(int a, double b) создаст функцию с возвращаемым типом int, единственный способ создать указатель - добавить скобки
int (*foo)(int a, double b);

Попробуй разобраться в вопросе прежде чем щитпостить
421 2324401
>>324147

>создаст функцию


declaration

>создать указатель


definition
image111 Кб, 712x199
422 2324535
Кто-нибудь может объяснить какого хуя?
423 2324548
>>324535
Во всех подобных случаях смотри асм-выхлоп, это многое прояснит. Вангую следующее: поскольку printf принимает любое количество параметров, они идут по cdecl конвенции, т.е. ты кладешь на стек один байт char и следом четыре байта int, а printf читает два раза по четыре байта unsigned, поэтому и распидорашивает все. Но если такого уровня ответ тебя не устраивает, то кастуй char в unsigned.
image267 Кб, 740x421
424 2324556
>>324548

>смотри асм-выхлоп


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

>ты кладешь на стек один байт


вот кстати что видно из асма, так это то что кладётся именно 4 байта, и вообще не видел чтоб когда-нибудь было по-другому

>кастуй char в unsigned


так оно же в памяти будет в таком же виде храниться, не?
вот просто можно даже абстрагироваться от сканфа, как так получается что чар по модулю больше 255
425 2324569
>>324556

> кладётся именно 4 байта


Я почему-то подумал, что идет именно один байт. Но вообще это логично, что это не так, стек выгодно выровненным держать.

> так там же вся суть происходит в принтфе


Ну почему, у тебя уже видно как минимум то, что movsx по своему определению пробрасывает знаковый бит, а т.к. пишется unsigned, то он в 31 разряде и дает тебе твои 4 миллиарда.

> так оно же в памяти будет в таком же виде храниться, не?


Не, в памяти char хранится именно как один байт. Но это без учета возможного выравнивания полей в структурах, ну или, как видно, на стеке.
426 2324576
>>324569

>movsx по своему определению пробрасывает знаковый бит, а т.к. пишется unsigned, то он в 31 разряде и дает тебе твои 4 миллиарда.


а вот этого я почему-то не заметил... тогда вопрос решен, спасибо

>Не, в памяти char хранится именно как один байт


Я знаю что один байт, я про то что signed и unsigned это одно и то же значение
427 2324579
>>324576

> я про то что signed и unsigned это одно и то же значение


Ну как бы да, нужно только не забывать, что там UB дохуя где на операциях на знаковых. Но отметить хотел бы немного ебанутую терминологию, которая ввела тебя в заблуждение: unsigned сам по себе в сишке это сокращение от unsigned long, он 4 байта на большинстве платформ.
428 2324580
>>324579

>unsigned long


Вроде unsigned int. Ну да, я знаю, просто мы говорили про чар и я подумал что ты имеешь в виду unsigned char.
429 2324656
>>324580

> Вроде unsigned int.


Да, ты прав, я опечатался.
430 2324687
>>324147

>Попробуй разобраться в вопросе прежде чем щитпостить


https://godbolt.org/z/Yq1GGxKsY
Где скобочки?
431 2324913
>>324535
Ты вводишь 2 символа, а scanf ожидает у тебя 2 строки, которые можно преобразовать в целочисленные типы, в итоге получается, что ты просто выводишь неинициализированные значения, которые приводишь со знакового и более короткого к unsigned.
432 2325007
Что должен сегодня знать и уметь C junior?Какие программы,фреймворки?
433 2325008
>>325007

>Что должен сегодня знать и уметь


Все.

>C junior


Их нет.

>Какие программы,


Отладчики.

>фреймворки?


Их нет.
434 2325528
>>325007
>>325507 (Del)

>Что должен сегодня знать и уметь C junior?Какие программы,фреймворки?


Это.
435 2325529
Обьектно ориентированное программировании и абстракции действительно не ускоряют написание кода?
436 2325530
>>325529
Как они должны ускорять его?
437 2325625
Абстракции позволяют писать код, без них ты бы до сих пор писал пиложения на ассемблере. Да даже ассемблер -- абстракция над схемами из транзисторов.

ООП помогает поддерживать код в больших проектах. С ним проще ориентироваться в коде. Ускоряют написание -- хз, что ты имеешь в виду -- какой-нибудь костыль или маленькое приложение быстрее напишешь без ооп, но потом будешь страдать при дебаге.
438 2325708
>>325625

>ООП помогает поддерживать код в больших проектах


Поправка: поддерживать код в больших проектах, силами большой команды. Если ты делаешь в одно рыло, но в принципе тоже приятнее будет, но не так остро, когда рыл много

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


Нет. Меньше кода - меньше ебли с отладкой.
439 2325740
>>325708

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


Тащемто достаточно модульности кода + распределения ответственности.
440 2325772
>>325625

>Да даже ассемблер -- абстракция над схемами из транзисторов.


Нет.

>ООП помогает поддерживать код в больших проектах.


Нет.

>С ним проще ориентироваться в коде.


Вкусовщина.

>но потом будешь страдать при дебаге.


Нет.
441 2326565
>>325625

>Да даже ассемблер -- абстракция над схемами из транзисторов.



Но ассемблер это всего-лишь язык. Вот архитектура это непосредственная абстракция над микроархитектурой, а ОС - над архитектурами. Где тут место языкам и в частности ассемблеру?
442 2326864
В чём моя проблема?
почему сравнение при высчитывании второй функции не работает, а с первой всё нормально?
image.png1 Кб, 215x54
443 2326865
>>326864
использовал бесконечности для сравнения, в этом проблема?
444 2326901
>>326865
Какое описание задачи? По коду нельзя понять, что ты хотел сделать и где ошибка, что такое первая и вторая функция, какая проверка не работает?
Возможно проблема в том, что ты переопределяешь переменные `min` и `max` внутри блоков проверок.
445 2327095
>>326901

>Какое описание задачи?


Больше интересно, в какой тупорылой шараге задают математические задачки на си, самом непригодном для математики языке.
446 2327110
>>327095
А самый пригодный какой?
447 2327111
>>327110
Любой с удобной реализацией длинной арифметикой из коробки.
448 2327117
Вопрос к эмбед-господам, если такие тут всё ещё обитают.

Для домашней махарайки хотел бы реализовать эффект из программы Jinx! для LED табло 5х5.

Есть шрифт 5х5 точек, который хранится в виде строк двумерного массива.
Ссылка на образец шрифта: https://pastebin.com/htDxc92r

Последовательность действий:
1) получили строку символов
2) нашли первый символ в массиве шрифта и вывели его на табло без сдвига
3) начинаем сдвигать точки первого символа влево
3.1) между символами необходим промежуток в 1-2 пикселя
4) сдвигаем точки символов влево, пока последний символ не будет отрисован полностью
5) начинаем сдвигать последний выведенный символ вправо с соблюдением п. 3.1

Matrix:
4 5 14 15 24
3 6 13 16 23
2 7 12 17 22
1 8 11 18 21
0 9 10 19 20

"Матрица", 5 строк на 5 столбцов - индексы массива светодиодов, где 0 - соответствует первому светодиоду и 0-ому индексу в массиве
Начало точки отсчёта координат ХУ в моём случае - верхний левый угол (индекс 4 матрицы).

Проблема вот в чём: произвели сдвиг первого символа на 3 столбца влево -> тут же надо вставить промежуток в 1-2 пикселя -> и подвязать первый столбец второго символа. И так далее.
Вот именно на этом алгоритме у меня мозг и закипел.

Могу скинуть говнокод для вывода символа на табло (он не слишком опрятный). Сдвиг тоже есть, но крайне хуёвый. Есть спизженная функция, которая транслирует координаты Х У в индексы массива светодиодов.

Есть сомнительная идея - динамически выделять память под двумерный массив uint64_t, и попытатсья пихать туда побитово символы - по аналогии с массивом шрифта: 8 символов полученной строки на каждый элемент массива. А потом сдвигать всё это дело.
Идея крайне говёная и плохо подходит для эмбед. Но это вобще крайний вариант, прежде чем застрелиться.

П.С. Тем, кому влом помочь - пожалуйста, просто пройдите мимо. Вам не впервой.
448 2327117
Вопрос к эмбед-господам, если такие тут всё ещё обитают.

Для домашней махарайки хотел бы реализовать эффект из программы Jinx! для LED табло 5х5.

Есть шрифт 5х5 точек, который хранится в виде строк двумерного массива.
Ссылка на образец шрифта: https://pastebin.com/htDxc92r

Последовательность действий:
1) получили строку символов
2) нашли первый символ в массиве шрифта и вывели его на табло без сдвига
3) начинаем сдвигать точки первого символа влево
3.1) между символами необходим промежуток в 1-2 пикселя
4) сдвигаем точки символов влево, пока последний символ не будет отрисован полностью
5) начинаем сдвигать последний выведенный символ вправо с соблюдением п. 3.1

Matrix:
4 5 14 15 24
3 6 13 16 23
2 7 12 17 22
1 8 11 18 21
0 9 10 19 20

"Матрица", 5 строк на 5 столбцов - индексы массива светодиодов, где 0 - соответствует первому светодиоду и 0-ому индексу в массиве
Начало точки отсчёта координат ХУ в моём случае - верхний левый угол (индекс 4 матрицы).

Проблема вот в чём: произвели сдвиг первого символа на 3 столбца влево -> тут же надо вставить промежуток в 1-2 пикселя -> и подвязать первый столбец второго символа. И так далее.
Вот именно на этом алгоритме у меня мозг и закипел.

Могу скинуть говнокод для вывода символа на табло (он не слишком опрятный). Сдвиг тоже есть, но крайне хуёвый. Есть спизженная функция, которая транслирует координаты Х У в индексы массива светодиодов.

Есть сомнительная идея - динамически выделять память под двумерный массив uint64_t, и попытатсья пихать туда побитово символы - по аналогии с массивом шрифта: 8 символов полученной строки на каждый элемент массива. А потом сдвигать всё это дело.
Идея крайне говёная и плохо подходит для эмбед. Но это вобще крайний вариант, прежде чем застрелиться.

П.С. Тем, кому влом помочь - пожалуйста, просто пройдите мимо. Вам не впервой.
449 2327176
>>327117
Если я правильно понял, то ты хочешь вот это. Алгоритм хуевый, можно легче, но это первое, что придумал.
https://0bin.net/paste/mIdB9VIW#zHzsMwIDGAVCSPmSAjOiaxmW1AlOwBv9mfjfJ1kz2Dh
Под виндой не соберется, потому что пошли нахуй виндобляди.
dfd3445tv4gdsd.jpg6 Кб, 221x228
450 2327199
>>327176
Не хватает прокрутки вправо при достижении последнего символа строки.

Эффект в программе называется: "эффект внутренней прокрутки текста" (текст влево <-> вправо, т.е. от первого символа до последнего влево, а по достижении последнего символа - вправо до достижения первого символа; и всё по циклу снова, влево <-> вправо).

Анончик, доделай плез. Если не слишком занят.

Я пока пойду вкуривать что к чему в том, что ты скинул. У меня это много времени займёт.
452 2327211
>>327199
>>327210
Смещения и рывки сам исправляй, мне лень офсеты считать.
image118 Кб, 419x435
453 2327259
>>327117
Не совсем понял, что ты хочешь сделать. Обычно текст отрисовывают в видеобуфер(массив, который содержит состояния точек-пикселей), откуда уже последовательно столбец-за столбцом выводится на матрицу. Сдвиги и промежутки делаются элементарно изменением индекса при чтении этого буфера.
454 2327418
>>327211

>Смещения и рывки сам исправляй, мне лень офсеты считать.


Окей, попробую. Спасибо за помощь и уделённое время.
Ты это, в тред иногда заходи - если разберусь с кодом и он взлетит, то хотел бы отблагодарить. Хотя бы пополнением абонентки на телефон любым способом.

>>327259

>Не совсем понял, что ты хочешь сделать.


Хотелось бы избежать использование промежуточного буфера и транслировать на лету текстовые символы + эффекты напрямую в массив, который отображает текущее состояние светодиодов на матрице. Памяти на устройстве очень мало.
455 2327467
Почему FILE в Си написан капсом? Почему не file_t?
456 2327469
>>327467
Такие же вопросы касаются всех имен в стандартной библиотеке, почему они выглядят, как не читаемое говно? Ебанные деды.
457 2327523
>>327469
У дедов было мало памяти и скорости, дурачок, не более шести символов в идентификаторе гарантировалось. Ты ещё про линуксовые команды пожалуйся, ls cp и т.д.
458 2327527
>>327523

>У дедов было мало памяти и скорости, дурачок, не более шести символов в идентификаторе гарантировалось.


Использовать хэши?
45425882828.png289 Кб, 800x640
459 2327743
>>327211
Анончик, спасибо за старание. Но, кажется, твой код мимо кассы. У тебя завязка на шрифт и консольку. Ну или, скорее всего, я не догоняю, как адаптировать код под свои нужды.

Прилагаю код вывода символов из строки на светодиодную матриуцу, который работает у меня.
Может это внесёт ясность.
https://0bin.net/paste/DYrrjfhX#MEaLqlKjeyv668pVllW5ejCXBLYXQ99u9XZkbLIigxw
Сдвиг влево или право добавляется к xpos: + вправо, - влево.

Чтобы твои труда не пропали даром - напиши, как тебя отблагодарить.
Спасибо тебе, добрый человек.
460 2327772
>>327743
Это пример алгоритма без дополнительных буферов, просто адаптируй вывод на матрицу, сделай абстрактную функцию print_matrix, которая будет преобразовывать смещения под твои данные, у тебя вроде координаты на ней какие-то ебанутые, на вход которой будет подаваться массив значений, типа "10001", где 1 - это включение светодиода, 0 - это выключение. В итоге, сигнал должен будет подаваться на "линию" светодиодов. После чего замени в алгоритме printf на свой print_matrix и подправь остальные данные, как тебе надо. Обнуление состояний светодиодов в таком случае не нужно будет, потому что я же не перезаписываю руками символы в терминале, их перезаписывает следующее число.
200x200bb.jpg8 Кб, 200x200
461 2327797
>>327772
Если ты не слишком занят, то напиши, плез, на мыло kaii3|ja78ANUSg||HmailPUNCTUMco"25m.
Честно - я не очень понимаю, что творится в твоём коде и смог выделить только некоторые части.
П.С. Мыло фейковое, для связи.
463 2327820
>>327812
>>327797
Там кстати в комментариях ошибка, в выводе справа налево, но думаю это понятно, там текущая и последняя цифра перепутаны копипастом.
Безымянный-файл-изображения-(7)-2-b-2507.png468 Кб, 690x862
464 2328113
В хидерах можно определять только и только инлайны, верно?
465 2328114
>>328113
Нет.
466 2328131
>>328113
Нiт.
467 2328168
>>297526 (OP)
Аноны напишите годных, заковыристых а так же уебанских вопросов, которые задавали вам на собесе Си. Особенно в эмбеддед.

На последнем собесе мне задавали вопросы самой разной группы инвалидности, например, но среди них можно найти годноту:
1. Назовите отличия стандартов с89 и с99 - справочная информация задрачиванию не подлежит
2. Посмотрите на этот лист А4 кода и найдите все типы ошибок которые тут есть, вплоть до звездочек, точек с запятой, объявления переменных после оперидрования с другими переменными (привет из С89) и прочей иногда не особо очевидной хуеты.
3. Сможет ли МК заработать после первой микросекунды вклчения? - как по мне вопрос хуйня, т.к. он требует некоторых знаний в электронике, которые эмбеддер не обязан иметь.
4. С какими типами оптимизации вы работаете?
5. Как происходит прерывание? вопрос норм, полагаю
6. Что будет если, 2 ядра работающие в параллель, одновременно считывают из одной ячейки памяти и инкреентируют её? Как предотвратить такую ситуацию? - считаю достаточно хорошим вопросом
7. Мьютексы, хуютексы, volatile, static, константный указатель, указатель на константу, указатель на функцию, битовые операции - задают везде по дефолту
468 2328175
>>328168
Пиздец, я думал хуже тюремных загадок ничего в жизни не узнаю. Уровень такой же, что и у этих вопросов.
469 2328176
>>328114
>>328131
Т.е. можно смело заебенить тела функций?
470 2328177
>>328176
Да, можно.
471 2328179
>>328175
Вот поэтому и спрашиваю, заебали валить хуетой справочной по 2-е, 3-е, как будто себе невротебаться техлида ищут толпой.
472 2328196
>>328177
Спасибо, проверил - действительно можно.
А чому тогда во всех туторах для вкатывальщиков рассказывается о хидер-декларациях и .с-имплементациях? Это что-то вроде гуд-практис?
473 2328205
>>328168

> 3. Сможет ли МК заработать после первой микросекунды вклчения? - как по мне вопрос хуйня, т.к. он требует некоторых знаний в электронике, которые эмбеддер не обязан иметь.


Ну, если в резюме написано, что работал с мк, то это хороший способ проверить, изучил ли чел хоть один даташит.

> 4. С какими типами оптимизации вы работаете?


Ыыы.

Мне задавали вопрос, как предельно точно синхронизировать время между двумя машинами. Надо было расписать пакеты с метками времени и расчеты, я затупил.
474 2328210
>>328205

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


Тут дело-то не совсем в МК, если говорить про программу - по любому нет, какой бы МК не был. Сначала микроконтроллер настраивает периферию. Это уже ассемблерная часть но пока до нее далеко, см ниже. И это почти всегда элементарный и очевидный ответ.

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

А если говорить еще и про обвязку и саму работу в целом, т.е. стартанул или нет - то совсем дргуое дело: если посмотреть осциллографом на резонатор, то он стартутет как нарастающая волна (скорее всего из-за конденсаторов возле него). Итог - МК стоит в супоре в самом начале, т.к. резонанор не запущен.
475 2328215
>>328205

>Надо было расписать пакеты с метками времени и расчеты, я затупил.


В NTP протоколе вроде отправляются пакеты с поправкой на пинг, не?
215453258785623545.jpg8 Кб, 225x225
476 2328226
>>327820
>>327812
Короче, чувак, тебя можно нанять для доделки?
Если есть свободное время.

Готов предоставить доступ по тимвьюверу и вебку над железом.

Да - хорошо, нет - хуй знает что с твоим кодом делать.
Видимо я совсем тупой.
477 2328343
>>328226
Вот теории немного набросал, в целом должно быть понятно, если бы я еще писать нормально умел.
https://0bin.net/paste/7UT4-5qv#7FqOWgFFW9y+v-yURlC54wfaRLml4BbxVSmTAMsyICd
478 2328361
>>328176
Да. Гугли single header library.

>>328196

>А чому тогда во всех туторах для вкатывальщиков рассказывается о хидер-декларациях и .с-имплементациях?


>Это что-то вроде гуд-практис?


Это.

Если тело функции находиться в хедере, то его нужно отделять от объявления блоками #ifdef.
//f1.h
int f1(int a);

#ifdef F1IMPL
int f1(int a)
{
return a+a;
}
#endif


А в одном из .с файлов делать define перед инклудом хедера.
//main.c
#include <stdio.h>
#include <stdlib.h>
#define F1IMPL 1
#include "f1.h"
...


Иначе при сборке из нескольких .с файлов использующих это хедер, будет ошибка линковки из-за повторного включения кода фунции.
478 2328361
>>328176
Да. Гугли single header library.

>>328196

>А чому тогда во всех туторах для вкатывальщиков рассказывается о хидер-декларациях и .с-имплементациях?


>Это что-то вроде гуд-практис?


Это.

Если тело функции находиться в хедере, то его нужно отделять от объявления блоками #ifdef.
//f1.h
int f1(int a);

#ifdef F1IMPL
int f1(int a)
{
return a+a;
}
#endif


А в одном из .с файлов делать define перед инклудом хедера.
//main.c
#include <stdio.h>
#include <stdlib.h>
#define F1IMPL 1
#include "f1.h"
...


Иначе при сборке из нескольких .с файлов использующих это хедер, будет ошибка линковки из-за повторного включения кода фунции.
479 2328366
>>328210
Я бы ответил, что тактовый генератор стабилизируется не сразу и потому в МК есть таймер запуска.
>>328215
Не знаю, но это пришлось бы расписать.
480 2328448
а если я создал enum для флагов что-то типа
enum {
...
flag_end = 0x1000 0000
}
то как будет работать этот enum на системах, меньшей битности 16 и 8 битных, он урежет мне все флаги по 0x1000 и 0x10 соответственно?
или исходя из того, что int всегда должен быть не менее 4 байт по стандарту у меня всегда есть как минимум эти 32 бита?
481 2328460
>>328448

> int всегда должен быть не менее 4 байт по стандарту


Не должен.

>как будет работать этот enum


Как угодно.
482 2328467
>>328460
но в стандарте C99 и C11 написано это

6.7.2.2 Enumeration specifiers
[...]
Constraints
The expression that defines the value of an enumeration constant shall be an integer constant expression that has a value representable as an int.
483 2328472
>>328460
а про int написано, что

Basic signed integer type. Capable of containing at least the [−32,767, +32,767] range

т.е. получается, что можно уверенно хранить флаги до 0x8000
потому что даже на 8 битных системах, int будет не менее 2 байт
484 2328570
>>328343
Хорошо, попробуем пойти более сложным путём...

Попытался адаптировать свой говнокод.

if (offset <= 0)
{
// printf("\033[%zu;1H", i + 1);

x = 0;
y = i;
}
else
{
// printf("\033[%zu;%uH", i + 1, offset + 1);

x = offset;
y = i;
}
Я правильно интерпретировал эту часть кода? Если этот кусок вобще нужен.

// Выводим строку с обрезанием ее конца, в зависимости от смещения.
printf("%.*s", _DIGITS_FONT_WIDGTH - offset, line);
Я парвильно понимаю, что из целой строки выводятся только первые _DIGITS_FONT_WIDGTH - offset символов?
Т.е. из битового представления строки надо считать только первые _DIGITS_FONT_WIDGTH - offset бит?
Допустим, строка 0x0F -> читаем первые 5 бит (левый бит MSB) -> будет считано 0000 1

// Выводим строку со смещением в начале.
printf("%s", line + _DIGITS_FONT_WIDGTH + offset);
По сравнению с предыдущей строкой кода - недопонял.
Надо что - сдвинуть строку на _DIGITS_FONT_WIDGTH + offset? Или пропустить первые _DIGITS_FONT_WIDGTH + offset бит в строке?
484 2328570
>>328343
Хорошо, попробуем пойти более сложным путём...

Попытался адаптировать свой говнокод.

if (offset <= 0)
{
// printf("\033[%zu;1H", i + 1);

x = 0;
y = i;
}
else
{
// printf("\033[%zu;%uH", i + 1, offset + 1);

x = offset;
y = i;
}
Я правильно интерпретировал эту часть кода? Если этот кусок вобще нужен.

// Выводим строку с обрезанием ее конца, в зависимости от смещения.
printf("%.*s", _DIGITS_FONT_WIDGTH - offset, line);
Я парвильно понимаю, что из целой строки выводятся только первые _DIGITS_FONT_WIDGTH - offset символов?
Т.е. из битового представления строки надо считать только первые _DIGITS_FONT_WIDGTH - offset бит?
Допустим, строка 0x0F -> читаем первые 5 бит (левый бит MSB) -> будет считано 0000 1

// Выводим строку со смещением в начале.
printf("%s", line + _DIGITS_FONT_WIDGTH + offset);
По сравнению с предыдущей строкой кода - недопонял.
Надо что - сдвинуть строку на _DIGITS_FONT_WIDGTH + offset? Или пропустить первые _DIGITS_FONT_WIDGTH + offset бит в строке?
485 2328572
>>328570
Ссылка на говнокод отвалилась: https://0bin.net/paste/muRfYxF8#T21caDIhHtobyFmOSha4y-5k7fFrrwfxA/GXVoXerLI

Скажи, если что непонятно - я прокомментирую.
486 2328574
>>328570

>Я правильно интерпретировал эту часть кода?


Да.

>Я парвильно понимаю, что из целой строки выводятся только первые _DIGITS_FONT_WIDGTH - offset символов?


Да.

>Т.е. из битового представления строки надо считать только первые _DIGITS_FONT_WIDGTH - offset бит?


Да.

>Допустим, строка 0x0F -> читаем первые 5 бит (левый бит MSB) -> будет считано 0000 1


Да.

>Или пропустить первые _DIGITS_FONT_WIDGTH + offset бит в строке?


Да и вывести остатки, то есть 0x0F + 5 бит -> 111.
487 2328575
>>297526 (OP)
ИЩУ УЧЕБНИК
САП! Ищу учебник какого-то Русского препода, вроде в двух томах
Там он обучает программированию на С в Linux
Помогите пожалуйста найти
488 2328580
>>328572
89: int last_i = 0;
89: int last_i = string[0]; // FIX

В остальном коде разбираться лень, но вроде все правильно, хотя выглядит вроде правильно.
489 2328583
>>328580

>В остальном коде разбираться лень, но вроде все правильно, хотя выглядит вроде правильно.


Если бы было правильно - оно бы работало :) А судя по моей вебмке, работает как-то не очень...

>89: int last_i = string[0]; // FIX


Так это *(string + last_i) - указывает на символ в строке с индексом 0. Потому что last_i = 0.
490 2328594
>>328583

>(font_line & (0x01 << bit))


>(font_line & (0x80 >> bit))


Возможно проблема в этом.
491 2328601
>>328583
А блин, ты же видек скинул, возможно проблема в шрифтах

(xpos < 0 || xpos > FONT_WIDTH || ypos < 0 || ypos > FONT_HEIGHT)

И еще попробуй обрезать значения, типа xpos > FONT_WIDTH, значит xpos = FONT_WIDTH и продолжать вывод, такое же и с отрицательными (меньше чем 0).
492 2328615
>>328594

>Возможно проблема в этом.


В хедере задефайнено #define LSB_FONT false
Так что заходит в эту строку

>(font_line & (0x80 >> bit))


И это просто проверка - что в байте в конкретном бите - 0 или 1 (если 0 - пиксель погашен, если 1 - зажигаем нужным цветом), которая производится с какого-то бита или до какого-то бита в зависимости от offset.

>>328601

>И еще попробуй обрезать значения, типа xpos > FONT_WIDTH, значит xpos = FONT_WIDTH и продолжать вывод, такое же и с отрицательными (меньше чем 0).


Хорошо. Ушёл возиться.
493 2328617
>>328615

>И это просто проверка - что в байте в конкретном бите - 0 или 1 (если 0 - пиксель погашен, если 1 - зажигаем нужным цветом), которая производится с какого-то бита или до какого-то бита в зависимости от offset.


У тебя просто `const unsigned char font_line` объявлен, без указателя, я и думаю, что это хуйня какая-то.
typo.png42 Кб, 1099x395
494 2328646
>>328617

>объявлен, без указателя, я и думаю, что это хуйня какая-то.


Ок, как бедт правильно?

Поменял на указатель - получаю пикрелейтед.

static const unsigned char FontData[96][5] = { {}, ..., {} }; // массив со шрифтом

static void _write_font_symbol(led_strip_spi_t strip, rgb_t color, const unsigned char digit_font, int offset) // функция, принимающая конкретный символ из массива шрифта

static void _write_symbol_line(led_strip_spi_t strip, rgb_t color, int x, int y, const unsigned char font_line, int offset) // функция, принимающая строки символа
495 2328649
>>328646

>Ок, как бедт правильно?


Все было правильно наверно, просто `const unsgined char` странно выглядит.
496 2328659
>>328646
У тебя проверки точно ведут себя ожидаемо?
https://godbolt.org/z/4jdo5xeoc
497 2328695
>>328659
Да. Проверил на другой функции, которая просто отрисовывает текстовые символы из массива шрифта на матрице. Без сдвигов.
498 2328708
>>328695

>getPixelStripPosition(ypos, xpos);


Координаты не перепутал?
499 2328712
>>328708
У меня матрица повёрнута на 90 градусов по часов стрелке.

Если вернуть координаты на место, то текст заваливается.

Мда, ну и жопу я себе затеял.

https://godbolt.org/z/sP9dPYj8M
500 2328713
>>328708

>Координаты не перепутал?


Функция нужна?
Там описание есть небольшое. Замудрено пиздец с координатами.
501 2328715
>>328713
Попробуй без цикла просто вывести 0, потом смести его на пару светодиодов, проверь, как он отображается. И логи по координатам посмотри и проверь.
502 2328729
>>328713
И код функции getPixelStripPosition скинь, возможно проблема в ней.
504 2328773
>>328715
for (size_t j = 0; j < FONT_WIDTH; j++)
{
_write_font_symbol(strip, color, FontData[charIndex], FONT_WIDTH - j);

ESP_ERROR_CHECK(led_strip_spi_flush(strip));
vTaskDelay(2000 / portTICK_PERIOD_MS);
}

Недорисовывает однин столбец.
505 2328793
>>328773
Один цикл проходит в холостую что ли?

Смотрю в книгу - вижу фигу, лол Смотрю логи: https://0bin.net/paste/KMRCKVdM#DHyG+FvQv671Q8-4HjBD7vhraHpL+//MMniTW1wNZkC

5 \n - каждый цикл в _write_font()
506 2328827
>>328793
Вот из-за этого пропуск что ли?

FONT_WIDTH = 5
j = 0
FONT_WIDTH - j

offset = 5
if (offset >= 0)
{
// printf("%.*s", _DIGITS_FONT_WIDGTH - offset, line);
xBitsToProcess = FONT_WIDTH - offset;
}
508 2328892
>>328575
best mp
509 2328968
>>328773
Вот набросал, нолики отрисовывает правильно, твоя функция getPixelStripPosition была заменена на массив, потому что зачем тратить время на вычисления, которые константные. Перепиши, как тебе надо, логи вроде правильные получились.
https://0bin.net/paste/gq6uNOt5#HlGfRWLlaZ7+QwI2CrUqrmjaoIeZLh41auh1dk666b2
510 2329006
Как учить си начинающему?
511 2329179
>>329006
с божьей помощью
512 2329221
>>328968
Вроде не будет работать: у тебя символ нуля отрисован полу-байтом. Тогда как в моём шрифте ширина символа 5 бит.

Вот тут вот символ буквы А: https://godbolt.org/z/sP9dPYj8M

А нуль будет:
static const unsigned char _FONT_TABLE[1][_FONT_ROWS] =
{
{ 0xF8, 0x18, 0x18, 0x18, 0xF8 },
};

Или такой из шрифта:
{0x70, 0x98, 0xA8, 0xC8, 0x70}
513 2329222
>>329221
Т.е. весь шрифт пяти-битный: 5 на 5 пикселей.
514 2329230
Почему во всяких принтах и прочих подобных функциях для строк используют char вместо unsigned char, в чем преимущество?
515 2329267
>>329230
Если откроешь стандартную (а не расширенную) ASCII таблицу, то там все умещается в диапазоне 0-127.
516 2329274
>>329267
Это не отвечает на вопрос в чем преимущество перед unsigned char тем же
517 2329315
ИЩУ УЧЕБНИК
САП! Ищу учебник какого-то Русского препода, вроде в двух томах
Там он обучает программированию на С в Linux
Помогите пожалуйста найти
518 2329344
>>329315
зачем тебе по С учебник еще и двухтомный, пиши, а если что не знаешь - спрашивай и ищи инфу уже по этому делу
519 2329394
>>327117
>>329221
У меня используется 5 бит шрифта, но 5 бит является 0, чтобы было так же, как на видео. Для того, как ты хочешь придется менять логику, поэтому проблема в несовместимости шрифта и алгоритма.
520 2329411
>>329394

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


Посыпаю голову пеплом
Видео - для демонстрации эффекта. У меня нет 4-ёх битного шрифта, да он мне и не подходит.

Сможешь переделать?
Если я что-то недоописал - спроси. А то опять забредём не в ту степь.
522 2329429
>>329344
Просто там очень был хороший учебник, да еще и под Linux
А я как раз хотел изучать и С и Linux
Да и тем более, я для интереса ведь занимаюсь этим, как хобби
Мне на 28 лвл без ВО вряд ли удастся вкатиться в разработку на С, но, для себя изучать ОС и системное программирование - это круто
524 2329475
>>329454
Имею ввиду, что если учить с нуля, по учебникам которые пишутся для изучения основ под винду, то ведь могут быть сложности? Ведь у линух есть своя специфика. Например, отсутствие bat и exe файлов, другие среды разработки, другая файловая система и т.д. и т.п. что не будет приводится в качестве примера в учебниках по С написанных под windows
525 2329533
>>329475

>русского препода


>С под ЛИнух


Не лучше ли подтянуть англюсик, а там - хоть KR, хоть заграницу (шутка).
526 2329535
>>329475

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


Я просто не понимаю, что люди хотят узнать из книг, что нельзя узнать из документации?
527 2329893
>>329230
На pdp-11 char был знаковым, так было удобней Ричи. unsigned он добавил не сразу.
528 2329913
>>297526 (OP)
Жуки-мужики, скажите, в 29-30 лвл можно вкатиться в С без ВО?
Или для системного программирования техническое ВО необходимо?
529 2329914
>>329535
На Русском и адаптировано под Linux
Аноним 530 2330014
>>329475
Зачем тебе на этапе обучения такие детали? Ты же будешь использовать именно С и стандартную библиотеку. Избегай системные вызовы напрямую. А компилятор скроет от тебя детали реализации. Потом когда разберешь чуть можно смотреть книги по API и ABI Linux. Про формат elf/static/shared objects в инете статьи.
531 2330027
>>329429
Canonical (разработчик Linux-дистрибутива Ubuntu) выступил против войны в Украине и приостановил работу с российскими компаниями
Red hat так же объявили о полном прекращении работы в РФ.
Популярный open-source пакет начал заменять данные российских пользователей по IP на сердечки.
Один за другим Linux проекты уходят из РФ, open-source себя дискредитировал. Больше нельзя быть уверенным, что твои данные в безопасности. Нельзя быть уверенным, что твой любимый дистрибутив, которым ты пользуешься вскоре не прекратит поддержку пользователей из РФ и вовсе не остановит работу в РФ с закрытием репозиториев, поддержкой языка и т.д.
Вся эта философия open-source, свобода и т.д. оказались просто словами и враньем.
Что делать в такой ситуации? Какие искать альтернативы и остался ли безопасный дистрибутив в котором можно быть уверенным?
532 2330028
>>329913
Если ты до этого не вкатился, это не твое.

>ВО


Не самое важное.
533 2330242
>>330027

>Вся эта философия open-source, свобода и т.д. оказались просто словами и враньем.


Любая религия - враньё, однако религии не исчезают и всегда востребовваны. Подумай почему.
534 2330249
>>329475

>Ведь у линух есть своя специфика.


Да, и что?

>ведь могут быть сложности?


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

> в 29-30 лвл можно вкатиться в С


вообще без проблем, вкатывались и старше
536 2330694
>>330027
нашел в каком треде такой вброс делать, тут у многих ядра в исходниках лежат и все нужные проги и либы к ним, ну дискредитирует кто-то себя, просто не собирать последние версии без собственной ревизии кода, что там изменили и просто вырезать все подобные сердечки
537 2330756
>>330694
Это нереально. Я просто отложил обновления до лета.
538 2331175
>>297526 (OP)
Памахите кто помнит, Прату, 11 глава listing 11.29 sort_str.c
есть константа
#define HALT " " /нулевая строка для прекращения ввода/
в самой программе она не используется, ввод строк не прерывается идёт до 20, как пофиксить?
539 2331245
>>331175

>есть константа


>#define HALT " " /нулевая строка для прекращения ввода/ в самой программе она не используется,


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

>ввод строк не прерывается идёт до 20, как пофиксить?


Добавить выход из цикла ввода.
540 2331626
>>331245
>>331245
Это из учебника задача
от полный вид https://github.com/svnblame/c-primer-plus-4/blob/master/sort_str.c

вот цикл

>while(ct < LIM && s_gets(input[ct], SIZE) != NULL


&& input[ct][0] != '\0')
Может кто нибудь ещё обращал внимание на это?
541 2331923
gcc из MinGW на win10 выдает 16битный exe из моего hello world. Как это исправить?
542 2331935
>>331626

>Это из учебника задача


Значит в примере ошибки.
>>331923

>Как это исправить?


-march=native
543 2332056
>>331935
Почему опция так странно называется? march
16487312332110.jpg16 Кб, 360x288
544 2332147
>>331923

> MinGW


> 16битный exe

545 2332346
Как писать чтобы после
gcc program.c
program.exe сразу запускалась в консоли?
546 2332364
>>331923

>MinGW на win10


Зачем эти кривые мокрописьки когда есть WSL
547 2332380
>>332346
Батник набросай
548 2332480
>>297526 (OP)
Сап /pr очень нужна ваша помощь
Собираюсь изучать С
Но так вышло, что у меня очень, очень слабенький комп который тянет только Linux (Debian)
Вкатываюсь я с нуля поэтому я бы попросил порекомендовать учебники по С специально под Linux для нулевого Васи.
Т.к. те учебники, что я видел, они все под windows написаны, с софтом и примерами программ для win
image.png77 Кб, 248x352
549 2332544
>>332480
Весь код на си и для линукса. Но книга скорее про написание программ специально для линукса и ближе к системному программированию. Базу языка учи по учебникам из шапке треда
550 2332563
>>332544
Почему он на обложку выбрал это фрактальное растение?
551 2332566
>>332364
Но это ведь в разы больше будет кушать?
552 2332583
>>332563
Тому що древнее.
553 2332619
Здрастье
Выучил циклы, символьный ввод вывод, файловый воды, строки, функции, массивы и указатели, структуры связанные списки, немного про препроцессор, битовые операции, интерфейс очереди атд.
Вроде даж получается задачки решать. Что дальше делать?
image.png3 Кб, 604x112
554 2332639
>>332566
Было с WSL, потом выключил WSL. Это по-твоему "жрет"?
555 2332664
>>332619

>Что дальше делать?


Программировать.
556 2332765
>>332544
Для вкатывальщика сложно будет. Но для освоения posix систем - хороша.
>>332480
Что вам так неймётся с желанием бросаться неподготовленными на платформонезависимость? Язык программирования, в частности С для того и создавался, чтобы абстрагироваться от деталей. Для 90% задач (а на вкате и 100%) хватит базового языка и glibc.
557 2332768
>>332765
*платформозависимость
фикс
558 2332827
>>332765
Программирование не бывает платформонезависимым потому что это процесс программирования платформы. Вопрос только в выборе платформы.
"Платформонезависимость" в просторечном смысле означает виртуальную платформу, которая может работать на нескольких аппаратных. Но Си предназначен не для виртуальных платформ, а для реальных, поэтому не может быть "платформонезависимым".

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

Это что касается программирования. А теперь к тупым свиньям вроде тебя, серущим негативом на реальные платформы как будто это что-то плохое. Ну что тут сказать, из сказанного выше уже можно было догадаться, что такой сброд не программисты, а офисные макаки, еще один синоним для "секретутки" или "программиста 1с". Секретутка - не программист, она работает с документами, которые как раз и есть "платформонезависимы", т.к. работают на витруальной платформе которой является приложение. То, что в документы добавляют скриптинг не делает их программированием в настоящем смысле языка Си, хотя Си конечно позволяет сымитировать и секретутку. Но желают так детать только секретутки, а не программисты, вот где загвоздка. Дело в маркетинге, который напиздел на уши лапшу тупому секретутко-сброду, что они якобы программисты. Ну то же самое как рабам рассказывают что они якобы "сеньёры" (господа). Ну как тупое рабское чмо может быть господином? Самим не смешно? Конечно нет, на то и тупой сброд же, мозгов ноль без палочки.
558 2332827
>>332765
Программирование не бывает платформонезависимым потому что это процесс программирования платформы. Вопрос только в выборе платформы.
"Платформонезависимость" в просторечном смысле означает виртуальную платформу, которая может работать на нескольких аппаратных. Но Си предназначен не для виртуальных платформ, а для реальных, поэтому не может быть "платформонезависимым".

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

Это что касается программирования. А теперь к тупым свиньям вроде тебя, серущим негативом на реальные платформы как будто это что-то плохое. Ну что тут сказать, из сказанного выше уже можно было догадаться, что такой сброд не программисты, а офисные макаки, еще один синоним для "секретутки" или "программиста 1с". Секретутка - не программист, она работает с документами, которые как раз и есть "платформонезависимы", т.к. работают на витруальной платформе которой является приложение. То, что в документы добавляют скриптинг не делает их программированием в настоящем смысле языка Си, хотя Си конечно позволяет сымитировать и секретутку. Но желают так детать только секретутки, а не программисты, вот где загвоздка. Дело в маркетинге, который напиздел на уши лапшу тупому секретутко-сброду, что они якобы программисты. Ну то же самое как рабам рассказывают что они якобы "сеньёры" (господа). Ну как тупое рабское чмо может быть господином? Самим не смешно? Конечно нет, на то и тупой сброд же, мозгов ноль без палочки.
559 2332853
>>332827
Знатно тебя порвало, к середине даже правила грамматики перестал соблюдать.
А по твоему высеру, тот же libc писали люди поумнее тебя, и он оптимизирует многие вещи, в которых большинство новичков руками накосячит. Плюс постоянные вызовы ядра (системные вызовы) , явно не добавляет производительности. Тем более задачи начинающего изучать язык сильно отличаются от того что ты упоминал.
560 2332989
>>328361
мб #ifndef F1IMPL?
561 2333044
>>332765

>базового языка


Что значит "базового"?

>glibc


Почему именно она?
>>332827

>Программирование не бывает платформонезависимым


Бывает, Си для этого и создали.

>отказа от зависимых вызовов, но такой огрызок от программы на практике бесполезен.


Замена.

>на реальные платформы


Что значит "реальные платформы"?

>что они якобы программист


Кто в твоем понимании является программистом?
>>332853

>libc писали


Какую именно?

>люди поумнее тебя


Как ты это определил?

>большинство новичков руками накосячит


О них никто не думал.
562 2333091
>>332480
Нашёл
Автор Столяров А.В.
563 2333092
Сап, Шайтаны. Вот есть битфилд суммарной шириной в 48 бит.
Нужно написать для этого несложную арифметику. Как лучше (или правильно) передавать и возвращать этот юнион в процедуры?

Думаю, что через указатель, так как не везде есть регистры больше 32 бит, но хотел бы узнать авторитетное мнение

Бтв пока писал, возникла генерализация моего вопроса: как вообще передается-возвращается например uint32_t, int64_t на 16битных машинах?
564 2333107
>>333092
struct { char c[6]; }
565 2333109
>>333092

>Как лучше (или правильно) передавать и возвращать этот юнион в процедуры?


Указатель.

>как вообще передается-возвращается например uint32_t, int64_t на 16битных машинах?


Зависит от реализации и процессора. Их может вообще не быть.
566 2333120
>>332664
большое спасибо. пошел программировать на питоне
567 2333170
>>333044
1. Си создан как высокоуровневый ассемблер, самый что ни на есть платформозависисмый язык.
2. Зачем замена? Есть компьютер, но использовать компьютер - плохо? У тебя с башкой плохо, секретутка.
3. Реальные платформы значит аппаратные платформы, а не виртуальные программные. Си транслируется в ассемблер для аппаратного процессора и прочего железа, это реальный язык работающий на реальной платформе. Лепить под него абстрактные мультиплатформенные прослойки = тыквить его, нивелировать достоинства Си, такой язык не нужен.
4. В моем понимании, программист тот, кто программирует, т.е. управляет устройством посредством написания программы. Это значит, устройство должно быть фиксировано и его спецификации открыты и изучены программистом. Только так можно полноценно использовать возможности устройства. А виртуальные мультиплатформенные машины это закрытые черные ящики, значит ими нельзя полноценно управлять. Это не программирование - управление, а скорее мольбы и надежды, гадание на кофейной гуще: "я пишу сам не знаю что, но авось сработает".
568 2333261
>>333170

>1. Си создан как высокоуровневый ассемблер, самый что ни на есть платформозависисмый язык.


Нет.

>2. Зачем замена?


Замена платформозависимого кода, на другой платформозависимый код.

>2. Есть компьютер, но использовать компьютер - плохо?


Почему ты так решил? Из чего вообще образовалось такое предложение?

>3. Лепить под него абстрактные мультиплатформенные прослойки = тыквить его, нивелировать достоинства Си, такой язык не нужен.


int main(void) { return 1 + 1; }
Удивительно, язык сам позволяет абстрагироваться от машинного кода, получается Си не нужен?

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


В этом треде снова признают всех программистов не программистами, потому что они не подходят под какие-то субъективные определения.

>4. Только так можно полноценно использовать возможности устройства.


Время.

>4. А виртуальные мультиплатформенные машины это закрытые черные ящики, значит ими нельзя полноценно управлять.


В чем отличие операционной системы от виртуальной машины? Получается, снова всех программистов вычеркнул из программистов, даже подходящих под твое описание.

>4. Это не программирование - управление, а скорее мольбы и надежды, гадание на кофейной гуще: "я пишу сам не знаю что, но авось сработает".


Почему ты считаешь виртуальные машины "черным ящиком", но не считаешь аппаратные способы выполнения кода "черным ящиком"?

Дополнительно: из таких слов получается, что если в каком-либо процессоре найдется аппаратная ошибка, которая не будет написана в документации, то все программисты включая тех, что подходят под твое определение не будут являться программистами?
Потому что:

>спецификации открыты


>изучены программистом


>закрытые черные ящики, значит ими нельзя полноценно управлять


>гадание на кофейной гуще: "я пишу сам не знаю что, но авось сработает"


Документация не открывает ящик, она только создает видимость открытости.

Очень часто слышал/читал подобное мнение, копия, насколько же все люди одинаковые. Даже в этом треде было подобное уже. Вас тут клонируют?
568 2333261
>>333170

>1. Си создан как высокоуровневый ассемблер, самый что ни на есть платформозависисмый язык.


Нет.

>2. Зачем замена?


Замена платформозависимого кода, на другой платформозависимый код.

>2. Есть компьютер, но использовать компьютер - плохо?


Почему ты так решил? Из чего вообще образовалось такое предложение?

>3. Лепить под него абстрактные мультиплатформенные прослойки = тыквить его, нивелировать достоинства Си, такой язык не нужен.


int main(void) { return 1 + 1; }
Удивительно, язык сам позволяет абстрагироваться от машинного кода, получается Си не нужен?

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


В этом треде снова признают всех программистов не программистами, потому что они не подходят под какие-то субъективные определения.

>4. Только так можно полноценно использовать возможности устройства.


Время.

>4. А виртуальные мультиплатформенные машины это закрытые черные ящики, значит ими нельзя полноценно управлять.


В чем отличие операционной системы от виртуальной машины? Получается, снова всех программистов вычеркнул из программистов, даже подходящих под твое описание.

>4. Это не программирование - управление, а скорее мольбы и надежды, гадание на кофейной гуще: "я пишу сам не знаю что, но авось сработает".


Почему ты считаешь виртуальные машины "черным ящиком", но не считаешь аппаратные способы выполнения кода "черным ящиком"?

Дополнительно: из таких слов получается, что если в каком-либо процессоре найдется аппаратная ошибка, которая не будет написана в документации, то все программисты включая тех, что подходят под твое определение не будут являться программистами?
Потому что:

>спецификации открыты


>изучены программистом


>закрытые черные ящики, значит ими нельзя полноценно управлять


>гадание на кофейной гуще: "я пишу сам не знаю что, но авось сработает"


Документация не открывает ящик, она только создает видимость открытости.

Очень часто слышал/читал подобное мнение, копия, насколько же все люди одинаковые. Даже в этом треде было подобное уже. Вас тут клонируют?
569 2333519
>>333261
1. "Врёти". Ну ладно.
2. Враньё. Стремление к универсальности это стремление отказаться от реальной платформы, т.е. отказ от Си.
3. Бессмысленный высер только подтверждающий бесполезность универсального кода.
4.4. Я не считаю, это так и есть. Программирование на Си это техника, как пишешь, так и работает, а на виртуальной хуйне это скриптинг, говношлепство на похуях на авось. Это годится для этого вашего пресловутого "тырпрайза 200к в наносекунду" зашибать бабло, но продукты такого труда конченое говно, не зря же говорят "тяп-ляп и в продакшен". Сама система предназначена и оптимизирована шлепать говно, на которое самим разработчикам похуй. С техникой такой подход не работает, на похуях машина банально не будет работать, тупо заклинит и всё. Этим и заканчиваются потуги макак-секретуток программировать на Си, крашами и бугуртами.

>Очень часто слышал/читал подобное мнение


Враньё. Если такое тут писали, это был я, больше никто такое не напишет, и я пишу редко.
570 2333525
>>333519

>1. "Врёти". Ну ладно.


Я не писал, что это ложь, я написал, что твое утверждение неправильное.

>2. Враньё. Стремление к универсальности это стремление отказаться от реальной платформы, т.е. отказ от Си.


>1. "Врёти"
Нет.

>3. Бессмысленный высер только подтверждающий бесполезность универсального кода.


Почему бессмысленный? Каким образом он это подтверждает?

>4. Я не считаю, это так и есть.


Почему ты так решил?

>4. Программирование на Си это техника, как пишешь, так и работает, а на виртуальной хуйне это скриптинг, говношлепство на похуях на авось.


В чем отличие от аппаратной платформы?

>5. Враньё. Если такое тут писали, это был я, больше никто такое не напишет, и я пишу редко.


>1. "Врёти"
Я не уточнял, что именно здесь видел подобное мнение.

Зачем ты строишь поспешные выводы на основе каких-либо данных, если они у тебя ошибочные? Твои сообщения похожи на сообщения сгенерированные нейросетью, вроде логика какая-то должна быть, но на деле ее не существует, достаточно задать пару вопросов, чтобы в этом убедиться.
571 2333782
Питон лучше чем си
572 2333783
>>333782
В питоне все понятнее
573 2333784
>>333782
Толсто
image9 Кб, 595x179
574 2334415
Всем привет. Поясните пожалуйста, почему вместо символа конца файла выводится стрелочка?
575 2334520
>>334415
Потому что int getchar();
image9 Кб, 535x192
576 2334557
>>334520
И что, он же всё равно -1 возвращать должен
577 2334568
>>334415
Возможно поэтому

>However, typing Control+Z does not embed an EOF character into a file in either DOS or Windows, nor do the APIs of those systems use the character to denote the actual end of a file.


https://en.wikipedia.org/wiki/Substitute_character
578 2334580
>>334568
но почему тогда если ввести ctrl+z в начале строки то он завершает ввод в этой программе?
580 2334604
>>324687
Ладно, извини, ты прав. Это круто. А что еще можно делать с этим типом, кроме как передавать в функции? Я попробовал присваивать ему значение функции напрямую и через разные типы, но, похоже, это так не работает. Разобрался. Если писать название типа со звёздочкой - работает как тип указателя на функцию. Сбивает то, что при передаче в функцию компилируется и со звездочкой и без (по крайней мере в VS). В этом есть какой-то скрытый смысл?
581 2334608
>>334588
Чет всё равно не понял, там просто написано что в винде это символ конца файла, как я и предполагал.
582 2334630
>>334608
26 код игнорируй, из-за ее "особенностей" приходится вместо православного getchar() != EOF писать дополнительную проверку, на википедии, в описании EOF последний абзац >>334568.
Должно сработать, но не уверен.
583 2334664
>>334630
То есть грубо говоря ничего особенного, просто если это первый символ в строке то она его считает за конец файла, а если нет то за 26?
image.png204 Кб, 1920x1080
584 2334799
аноны помогите, начал немного вкуривать многопотчность на линуксе, проблема с общей памятью, выкидывает SIGBUS при попытке доступа к памяти которая была выделена с помощью сначала shm_open а потом mmap, причем обе функции отработали без ошибок, отладка на экране. но при это при попытке записать в любое поле структуры( например я ставил то что выделено первым) всегда выбрасывает из программы с этим сигналом, я прочитал это вроде связано либо с ошибкой выравнивания, либо что там неправильный физический адрес, чего по идее не должно быть если функии отработали без ошибок. дескрипторы открываются в мейне:
int md1=shm_open("/q_str",O_CREAT|O_RDWR,S_IRWXG);
if(md1==-1){
perror("unable to create shared memory for queue structure: ");
return -1;
}
int md2=shm_open("/q_buf",O_CREAT|O_RDWR,S_IRWXG);
if(md2==-1){
shm_unlink("/q_str");
perror("unable to create shared memory for queue buffer: ");
return -1;
}
585 2334834
>>333525
Типичный пример универсального кода >>334630

>ничего не работает, но будем жрать это говно потому что.... православно, вот почему!

586 2334841
>>334664

>То есть грубо говоря ничего особенного, просто если это первый символ в строке то она его считает за конец файла, а если нет то за 26?


После 26 кода может вернуться EOF, если так, то игнорируй 26 код и выходи из цикла.
>>334834
Это проблема платформы, которая не в состоянии нормально работать, ты даже оправдаться в своей бездарности не можешь.
587 2334842
>>334841
>>334664
Зачем тебе именно EOF? Почему '\n' не устраивает?
image.png1 Кб, 158x44
588 2335003
>>334842
Да это клован какой-то. Интересно, какая клавиатура позволяет вводить такие охуительные символы.
589 2335011
Зачем нужен тайпдеф? Все, что он делает можно заменить на дефайны, деды просто так добавили функционал?
590 2335254
>>335003
ctrl+D вводит EOF.
591 2335447
>>334799
ftruncate, чтобы выставить размер куска.
592 2335448
>>335011
typedef float vector[3];

Заменяй.
593 2335457
>>335448
#define vector(name) float name[3]
Тайпдефоблядь нечеловек.
594 2335482
>>335457
extern float dot(vector, vector);
vector x, y, z, t;

А как тебе такое, скобкодебил?
595 2335504
>>335482

>extern float dot(vector, vector);


extern float dot(vector(), vector());

>vector x, y, z, t;


vector(x);
vector(y);
vector(z);
vector(t);

Вариант с дефайнами даже уебищные конструкции вида "int a,b,c,d,e" преобразует в читаемые. Вместо добавления констекспр, как ключевого слова добавили бесполезный тайпдеф, вместо развития препроцессора добавили бесполезный тайпдеф. Худшее решение, но даже у такого решения есть фанатики (говноедики).
596 2335651
>>334842
Ну например если нужно будет вводить что-то в несколько строк, \n не подойдёт
>>335003

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


любая, ебанат
597 2335708
Кто нибудь вкатывался по пРАТЕ?
Страница 466, Листинг 11.30. Программа mod_str. с
Подскажите опять по Прате
/ mod_str.c — модифицирует строку /

.....................................................................
str = toupper((str)) ;
printf("To upper result char= %c\n", toupper((*str)));
......................................................................
почему toupper не изменяет строку?
598 2335783
>>335708

>почему toupper не изменяет строку?


Не должен.
599 2336023
>>335504
скажи честно, ты долбоеб?
600 2336140
>>336023
Почему ты так решил? Объективно бесполезная функциональность языка, добавленная просто так.
Или ты сможешь объяснить почему она не бесполезная?
601 2336226
>>335011
>>336140

> деды просто так добавили функционал?


> Или ты сможешь объяснить почему она не бесполезная?


деды хотели нормально определять свои типы и использовать их точно также как и используют стандартные. тип имя_переменной = велью; без всяких там скобочек хуебочек и т. д.
твое

> vector(x) = {0};


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

да и по тайпдефам грепать удобно, хочешь получить все кастомные типы в проекте - изи.
602 2336689
Прата пиздит?
603 2336716
>>336689
Ты уже весь тред засрал своим прата. Там варнинг должен быть, а не ошибка.
604 2336724
>>336716

>Ты уже весь тред засрал своим прата


А в чём проблема? Я какие-то неправильные вопросы задаю?

>Там варнинг должен быть, а не ошибка


Он написал что ошибка. Впрочем, варнинга тоже нет.
605 2336931
>>336724
Погугли опции компилятора управления уровнем предупреждения для своего компилятора. Обычно Wall.
gcc -Wall или /Wall для VisualC
Так же можешь добавить интерпретацию предупреждений в ошибку.
gcc -Wall -Wextra или /Wall /WX
606 2336934
>>336724

>А в чём проблема?


В том, что надо задуматься о качестве этой книги/перевода.
607 2337156
>>336931
Да не, мне сами предупреждения не нужны, я просто хотел понять действительно ли это ошибка, и если да то почему. Уже разобрался.
>>336934
Я знал про хуёвый перевод и спрашивал, но мне всё равно рекомендовали именно её. Да даже в шапке треда кроме древней K&R для вкатывания ничего нет, только прата.
Screenshot from 2022-04-16 16-25-57.png41 Кб, 479x399
608 2337261
В чем я не прав?
609 2337267
>>337261
Говнокод.
610 2337268
>>337261

>потокобезопасность

Screenshot from 2022-04-16 16-44-20.png62 Кб, 489x511
611 2337272
>>337267
почему?
>>337268
спасибо
612 2337276
>>337272

>почему?


У тебя мютекс не создается и не разрушается.
613 2337277
>>337272

>почему?


Синхронизация общая для всех объектов, но они могут быть созданы в разных потоках и будут падения на бесполезной синхронизации.
614 2337278
>>337276
Да, один мьютекс на все шаред поинтеры. Не знаю, что за ебанутое конкарренси должно быть, чтоб операции над разными поинтерами часто блочили друг друга.
615 2337283
>>337272

>почему?


Не проверяется кратность sizeof(int) при выделении памяти.
616 2337284
>>337272

>почему?


Не проверяется нулевое значение в 3-ех функциях.
1563455629535.jpg124 Кб, 874x1115
617 2338256
image.png132 Кб, 1920x1080
618 2338418
>>297526 (OP)
Сап, итгоспода, я зелень, только начал вкатываться, не могу понять, почему у меня получается хуйня и как делать правильно, я долбоёб не судите строго.
619 2338426
>>338418
Выкатывайся.
620 2338507
>>338426

Как я могу выкатиться, если не вкатился? Как будто сами в первые дни не писали говно. Мне хотя бы понять как гуглить мой вопрос. У меня есть массив 5 значений t, я сделал массив, теперь я хочу подставить эти значения в икс от каждого из этих тэ. Но Xot это не массив, поэтому не канает, как сделать массив в массиве не ебу, была идея сделать двумерный массив, но не понимаю, как подступиться
621 2338544
>>338256
О великий си. Все языке ссылаются на него и хотят быть такими же крутыми как он
622 2338545
>>338507
http://google.com
C двумерные массивы
623 2338552
Объясните пожалуйста со связанными списками, не могу понять момент про передачу переопределенных с помощью typedef структур.

struct funds
{
char name[LEN];
int cost1;
char name2[LEN];
int cost2;
}; // объявил структуру

typedef struct funds FUND; // теперь FUND это имя типа объявленной структуры, то есть синоним struct funds

чтобы передать в этом случае структуру функции надо написать прототип например
int sum(FUND ); что есть то же самое что если бы в аргументе было написано (struct funds );

Дальше уж не очень понятно

Например:

typedef FUND List; // List это указатель на этот тип FUND, что и есть struct funds

поэтому в таком случае прототип будет выглядеть примерно так
int sum(List) без всяких звездочек, потому что это и есть указатель на синоним типа, а объявление функции выглядит как int sum(List money) и вроде все работает как надо считается.

Но вот когда работа идет со связанным списком

struct film
{
char title[TSIZE];
int rating;
};

typedef struct film Item;
typedef struct node
{
Item item;
struct node
next;
} Node;

typedef Node List;

void InitializeList(List
plist); почему в этом прототипе из книги появился еще один указатель? зачем указатель на указатель? Если в первом примере все работает через один указатель?

Ну и еще вот тут на пикриле вроде дано объяснение, но я все равно не понял. Будто бы между темами что-то должны были объяснить по поводу этого, но тупо пропустили потому что автору очевидно, а ученику нет.

Что за двойная косвенность? Почему нельзя в списках обойтись без двойного указателя? Я запутался в общем. Помогите плиз
623 2338552
Объясните пожалуйста со связанными списками, не могу понять момент про передачу переопределенных с помощью typedef структур.

struct funds
{
char name[LEN];
int cost1;
char name2[LEN];
int cost2;
}; // объявил структуру

typedef struct funds FUND; // теперь FUND это имя типа объявленной структуры, то есть синоним struct funds

чтобы передать в этом случае структуру функции надо написать прототип например
int sum(FUND ); что есть то же самое что если бы в аргументе было написано (struct funds );

Дальше уж не очень понятно

Например:

typedef FUND List; // List это указатель на этот тип FUND, что и есть struct funds

поэтому в таком случае прототип будет выглядеть примерно так
int sum(List) без всяких звездочек, потому что это и есть указатель на синоним типа, а объявление функции выглядит как int sum(List money) и вроде все работает как надо считается.

Но вот когда работа идет со связанным списком

struct film
{
char title[TSIZE];
int rating;
};

typedef struct film Item;
typedef struct node
{
Item item;
struct node
next;
} Node;

typedef Node List;

void InitializeList(List
plist); почему в этом прототипе из книги появился еще один указатель? зачем указатель на указатель? Если в первом примере все работает через один указатель?

Ну и еще вот тут на пикриле вроде дано объяснение, но я все равно не понял. Будто бы между темами что-то должны были объяснить по поводу этого, но тупо пропустили потому что автору очевидно, а ученику нет.

Что за двойная косвенность? Почему нельзя в списках обойтись без двойного указателя? Я запутался в общем. Помогите плиз
624 2338553
>>338552
Совсем забыл что звездочки съело
625 2338558
>>338552

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


Можно.
626 2338561
>>338558
Объясни пожалуйста почему там 2 указателя появилось?
627 2338566
>>338561
Где именно? Указатели не видно, ползуйся https://0bin.net/
628 2338587
>>338566
в 16 и 18 строчке скриншота из книги.
там в одном месте указатель на указетль а в другом просто указатель
629 2338667
>>338587
Потому что необходимо менять структуру по исходному адресу, а не переданому на узел?
630 2338722
>>338667
Ладно буду разбираться дальше пердеть
631 2339178
Посоны, только не обоссыте, хотел узнать есть лм какой-нибудь SICP на Си?
Или, возможно, есть алтернатива где учишь алгоритмы и язык вместе.
image.png673 Кб, 1280x720
632 2339433
>>338418
еб твою мать, упизди с треда, ебнутый
633 2339479
>>339178
Ты себя очень сильно ограничиваешь в выборе литературы, выдвигая требование, чтоб интересующий тебя язык программирования и интересующая тебя математическая тема сходились в одной книге. И даже если ты найдешь идеальную книгу, никакого двойного профита не получишь, потому что на освоении сишных приколов и на освоении алгоритмических приколов надо фокусироваться отдельно. Можешь взять K&R и SICP параллельно. MIT Scheme в этом плане ничем не заменить. Получишь массу удовольствия. Но SICP не про алгоритмы есичо, а немножко про другой дзен. Алгоритмическая литература, кстати, в идеале псевдокод должна юзать. Ты должен уметь сам воплощать концепции на своем языке. Это базовая умственная обработка инфы, которую ты сам заинтересован осилить, иначе тебе вообще нахуй ничего не поможет.
16492413925150.jpg29 Кб, 607x341
634 2339683
Сегодня мне address sanitizer сказал, что не надо было memcmp строки разной длины. А ведь я много лет пишу на этом языке...
635 2339697
>>298240
Чтобы не превратиться в дикарей, надо писать на ассембли, поссал сиблядка.
636 2339732
>>335708
Бамп вопросу, почему не меняется регистр?
https://pastebin.com/Pm9gEfXQ
637 2339959
>>338587
Потому что реализация списка без заголовка.
638 2339964
>>339732
Меняется.
640 2340111
>>340091
Все правильно, у тебя неопределенное поведение.
641 2340116
>>340091
Почему что? Как написано, так и происходит.
642 2340119
>>340091
Указатель стека не изменился, 27 никто не переписал.
image11 Кб, 437x266
643 2340137
>>340116
Написано что переменная которая объявлена в блоке живёт до конца выполнения блока, но по факту "а" которая объявлена после блока не переписала "i", то есть память не переиспользуется и это значение сохраняется там. Правда я забыл что если в релизе компилить то он может не создавать "a" и просто подставить константы, но на самом деле без констант всё то же самое.
644 2340153
>>340137

>по факту "а" которая объявлена после блока не переписала "i"


Тебе это никто не обещал.
image175 Кб, 1262x297
645 2340157
>>340153
а в чём тогда заключается временность хранения переменных, если не в том что их потом перезаписать можно?
647 2340164
>>340157

>а в чём тогда заключается временность хранения переменных, если не в том что их потом перезаписать можно?


В этом, но компилятор это делать не обязан.

Без оптимизации:
https://godbolt.org/z/GGj8drbE7

С оптимизацией:
https://godbolt.org/z/xn9Eo6ra8

В одном случае инициализирует новую память, в другом использует старую.
648 2340165
>>340158
Говнокод.
649 2340170
>>340164
То есть компилятор может наплевать на возможности языка и вынести их в оптимизацию, либо вообще не использовать?
650 2340171
>>340170
Он следует стандарту, а стандарт не запрещает такое поведение.
651 2340172
>>340171
А, то есть стандарт просто говорит что существование этих переменных потом не гарантируется?
652 2340191
>>340172
Он говорит, что переменная существует в ее области видимости, а за ее пределами не существует.
653 2340265
>>340137

>Написано что переменная которая объявлена в блоке живёт до конца выполнения блока, но по факту "а" которая объявлена после блока не переписала "i"


Что за бред? Ты вообще знаешь что такое блок?
Давай, расскажи какие на пике есть блоки и какие переменные объявлены к каком блоке.
654 2340309
>>340158
не понял, нахер ты это выкидываешь? спросить что-то хочешь?
655 2340334
>>340309
Просто показываю, какой я умный
Screenshot from 2022-04-20 20-44-45.png37 Кб, 527x333
656 2340349
>>338418
так надо sooqa
657 2340381
>>339959
Что значит без заголовка? Типа нет поля head?
658 2340416
>>340265

>Что за бред? Ты вообще знаешь что такое блок?


Если ты не заметил, я читаю книгу для начинающих, поэтому если я чего-то не знаю, то в этом нет абсолютно ничего удивительного.
В этой же книге я прочитал что блок это часть кода которая окружена фигурными скобками, а ещё я прочитал что в стандарте C99 концепцию блоков расширили и ими стали считать циклы и иф. Книга врёт, или может ты не увидел на скрине цикл for?
659 2340424
>>340381
Завтра пример набросаю, я спать.
660 2340438
>>340416
Кстати в этой книге много опечаток. Будь осторожнее. Помню тоже там было написано что блоки это конструкции ограниченные фигурными скобками. Но аноны выше пояснили тебе про неопределенность поведения
image.png301 Кб, 480x360
661 2340526
>>340416
Последний раз посторяю, как написано, так программа и работает.
Ты не ответил на вопрос, не перечислил блоки и объявленные в них переменные, значит не понимаешь что это такое. И книги тут ни при чем, книги не объясняют такую элементарщину уровня пикрил, это должно быть понятно любому здоровому человеку само по себе. Но не тебе, как видно.
662 2340540
>>340526
Брат нет плахи книги ест плахи луди брат
В книге у прата написано что блок это то что ограниченно фигурными скобками
663 2340546
>>340540
Но этот прав.
664 2340554
Могу написать обявление функции signal(), чуть-чуть подглянув в signal.h и используя, как и положено, typedef:
typedef void (*signalhandler)(int); signalhandler signal(int, signalhandler);

А как бы это объявление выглядело без использования typedef? У меня живой брат просит.
665 2340596
>>340381
Заголовок - это структура, которая хранит данные о списке.
Возможно есть более точное название для этого, но я его не помню, поэтому мне все равно.
Структура, хранящая данные об узле:
https://github.com/clibs/list/blob/6c16b69f14de870ed89d0bcac948d85b7a73513f/src/list.h#L51

Структура, хранящая данные о списке:
https://github.com/clibs/list/blob/6c16b69f14de870ed89d0bcac948d85b7a73513f/src/list.h#L61

>>340554

>Могу написать


Зачем?
666 2340606
>>340554
Собралось без warning-ов, "пук" печатает
667 2340820
>>340540

>В книге написано что блок это то что ограниченно фигурными скобками


И? Ответа, что в реальном коде это означает, так и не нет. Написано-то написано, но не понято, читатель не смог прочитать написанное. Вот в чём суть, и книга тут уже бессильна.
668 2340913
>>340438
Да, я знаю, там ошибки на каждом шагу, но что поделать, в ориге читать не удобно.
>>340526

>Ты не ответил на вопрос, не перечислил блоки и объявленные в них переменные, значит не понимаешь что это такое


Нет, это означает что мне лень их перечислять. А нахуя? Я ведь сказал что блок это то что в фигурных скобках, этой информации должно было хватить, а если не хватило, значит видимо это с тобой что-то не так. Но ок, есть блок функции, в нём есть блок цикла, в блоке цикла есть подблок тела цикла. А про переменные я вообще хуй знает что ты хотел услышать, типа проверял на зрение или что? На скрине видно что в каком блоке объявлено.
669 2341100
>>340913

>Нет, это означает что мне лень их перечислять.


Уже настрочил пустопожнего пиздежа в 20 раз больше, а ответить напростой пвопрос по тексту "лень"?

>А нахуя?


Чтобы определить, прочитал написанное или не осилил.
Народная мудрость "смотрит в книгу - видит вигу" как никогда актуальна и сегодня.
670 2341106
Всем доброго здоровья. Будьте добры, подскажите где можно посмотреть учебные или небольшие, но простые проекты для человека, который изучает программирование на языке си?
672 2341116
>>341115
Большое спасибо, добрый человек
673 2341118
>>341100

>пустопожнего пиздежа


Ну давай, покажи что у меня тут было не по делу

>прочитал написанное или не осилил


А нахуя мне было задавать вопрос если бы я не прочитал?
Ну вот теперь я тебе ответил, так что там у меня было бредового?
674 2341120
>>341115
Ого! Это начинающие прогеры так пишут?
675 2341143
>>341120

>Это начинающие прогеры так пишут?


Нет, смотреть код начинающих программистов невозможно.
1) Они редко им делятся.
2) Он плохой.
3) Начинающие кодеры на Си вымирают.

Если хочешь посмотреть неплохой имхо код, то
https://github.com/nginx/nginx
https://cgit.freedesktop.org/xorg/xserver/tree/
676 2341183
>>341118

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


Язык это протокол переджачи информации.
Тект это язык.
Чтение это восприятие читателем информации переданной написавшим.
таким образом, воспроизведение написанных слов это не чтение, чтение это восприятие переданной информации.
Не понят смысла написанного, значит не смог прочитать.
Не ответил на вопрос по тексту, значит не понял смысла написанного - не смог прочитать.
Неграмотный сброд.
677 2341187
>>341183

>Не понят смысла написанного, значит не смог прочитать


Не понял смысла написанного, значит не понял смысла написанного. Хватит нести хуйню.

>Не ответил на вопрос по тексту, значит не понял смысла написанного


Не ответил на вопрос по тексту, значит не захотел ответить, но уже захотел и давно ответил. Так что, долго ты будешь увиливать?
678 2341194
Правда что си прогеры злее и вреднее всех.
Питонисты самые культурные и добрые и толерантные
679 2341251
Эмм...ну вроде подучил я синтаксис списки структуры. Ну сделал я список свою идею тёлки которых я ебал их рост возраст и размер пизды. С выгрузкой этих данных в файл. Но.... это разве проект? Ну и типа конвертер величин но это вообще хз для чего....Куда применять полученные знания чтобы развивать навык программирования? В компах не шарю паять не умею роботов строить не знаю как. Это что и есть си? Просто списки делать и искать в них данные? Глянул идеи а там про какие-то сети подмаски контроллеры паяльник циферблаты. Я вообще даже близко не представляю что из себя технически представляют они... Крч я вообще растерян. Помогите... Наверное потому и спрашивают прежде чем учить язык должен сказать что ты хочешь. Но я не технарь вообще. Что вы пишите на си, скажите....
680 2341364
>>341251
Программируй.

>Что вы пишите на си, скажите


Ничего.
681 2341365
>>341364
Что программировать? Сортировать списки?
682 2341366
>>341365
Ты освоил базовые основы языка, но не знаешь, как решать целевые задачи, двигайся в сторону системщины.
683 2341371
>>341366
Что такое системщина? Я не технарь. С чего начинать? Там надо какие-то платы покупать с паяльником?
684 2341374
>>341251

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


Зачем.
686 2341389
>>341378
А по си? Только паяльник и электроника с компами?
687 2341391
>>341374
В учебнике было
А что надо было учить?
689 2341394
>>341393
Ты дурачок? Тред не читал сразу отвечал?
690 2341402
>>341394

>Ты дурачок?


Нет.

>Тред не читал сразу отвечал?


Почему ты так решил?
691 2341403
>>341402
Там слишком технарски
692 2341419
>>341403
Такой язык.
693 2341586
>>341251
Если нечего прогать, то дрочи алгоритмы. Попробуй в олимпиадные задания залезть. Этого хватит, чтобы время проебать
694 2341602
>>341586
Лучше пойти на улицу, на свежем воздухе побухать.
695 2341616
>>341602
Есть такое.
696 2341761
Кекмда сишники учат си просто так
16484957646170.jpg117 Кб, 1225x713
697 2341792
https://onlinegdb.com/ujdQy6xONJ

Пытаюсь в трифорс
Надо переложить обратную пирамиду сверху - в низ, по кирпичику; начиная с верхнего слоя.
Кирпичик хотелось бы выбирать рандомно.
Как это можно сделать?
image.png214 Кб, 1920x1080
698 2341985
>>340349
еба, спс, но я по-другому немного сделал.
699 2342006
>>341985
упс, я даун, хуёво наскринил
700 2342138
>>341985
>>342006
Удваиваю этого анона, кста >>338426
16253010047590.jpg107 Кб, 588x624
701 2342666
>>341792
Продолжаю свои мытарства: https://onlinegdb.com/kKxBj0YS9

Сговнокодил примерно то, что мне надо на стейт машине (отрисовка анимации крутится в "треде" (таске), поэтому надо чтобы кадр (не вся анимация целиком) побыстрому отрисовался и задача ушла курить, уступив место другим).

Пока завис на проверке достижения нижней границы и занятости следующей ячейки при перемещении кирпичика.

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

Уползаю на работу.
702 2343409
>>341183

> Не понят смысла написанного, значит не смог прочитать.


ты что в семье психологов или философов родился?
люто кринжую с твоих сообщений, человек спросить хочет, ты вместо того чтобы объяснить нормально начинаешь ему доказывать, что он какой-то долбаеб. У тебя дефицит внимания? или ПМС?

> Неграмотный сброд.


Мы уже поняли что ты тут самый умный, расслабься
703 2343433
>>343409
Психология и философия имеют имидж умного, поэтому они раздражают тупых, вот как тебя. Никому не интересно, от чего у тебя бомбит, лучше на вопрос ответь. Перечисли >>340091 какие есть блоки и какие переменные объявлены в каком.
704 2343493
Как лучше всего символьную таблицу у эльфа прочитать и в массив описывающих каждую запись структур оформить? И как вообще для начала смещение/размер таблицы узнать? В сырцы objdump/readelf неохота лезть пока, может есть какие-либо вызовы в библиотеке для этого.
705 2343576
>>343493
man elf
libbfd
706 2343591
>>342138
А что не так?
707 2343911
>>343409
Спасибо
>>343433

>Психология и философия имеют имидж умного


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

>от чего у тебя бомбит


Так яростно как ты тут ещё никто не кукарекал

>Перечисли 2340091 какие есть блоки и какие переменные объявлены в каком


Уже было достаточно сказано, но ты проигнорировал. Ты так начал разговор, что напрямую отвечать никакого желания нет, так что либо поясни что у меня там было бредового, либо иди нахуй.
708 2344286
Как считаете, "системщику" (осдев, драйверописательство, мк) необходимо знать алгоритмы, структуры данных (в частности CLRS) или лучше скипать?
709 2344296
>>344286

>Как считаете, "системщику" (осдев, драйверописательство, мк) необходимо знать


Всё.
710 2344331
>>344286
Хз что там в книге, но мне в системном довелось использовать: хэши и таблицы, списки, разные виды сортировок, деревья (rb, radix), бинарный хип, подсчет ссылок, разные формы распределения памяти и сборки мусора. Это БАЗА.
О сущечтвовании потоковых/приблизительных алгоритмов тоже стоит знать.
Screenshot from 2022-04-26 11-35-03.png46 Кб, 497x487
711 2344361
Почему этот ваш Си ебаный такой? Наделал хуйнюшек для платформонезависимого fwrite/fread, а оно разные результаты отрыгаивает с разными флагами оптимизации, и все неправильные. Какие же вы конченные пидарасы все.
712 2344369
>>344361
Стрикт-алиасинг чтоли ебоманый?
713 2344388
блять, у меня вообще какая-то хуйня непонятная плавающая, при каждом запуске разные числа считываются и конвертируются я ебал какая же хуетища
714 2344391
>>344331

>хэши и таблицы, списки, разные виды сортировок, деревья (rb, radix), бинарный хип,



Примерно это же в CLRS. Теперь ясно, что алгоритмы пропускать не стоит
715 2344400
>>344388
Ладно.
716 2344425
>>344400
Короче, аноны, земля мне пухом. Я просто для чтения uint64 из конца файла делал fseek(file, 8, SEEK_END), а оффсет со знаком минус надо, лол.
image206 Кб, 1552x551
717 2344441
Поясните пожалуйста, почему тут написано что принтф записывает в буфер а не сразу выводит? Если что источник - http://all-ht.ru/inf/prog/c/func/fflush.html
718 2344442
>>344441

>принтф записывает в буфер а не сразу выводит?


Да.
719 2344445
>>344442
Всмысле да? Я когда принтф вызываю, у меня сразу всё выводится. Понятно что в какой-то буфер для этого строка записывается, только в чём суть очищения буфера если принтф сразу выводит? То есть что в этом коде изменится если убрать ффлэш?
720 2344446
>>344445

>ффлэш


ой блять, ффлаш
722 2344457
>>344445
Там после printf сразу стоит sleep, программа падает в ступор, зависая на целую секунду, поэтому нужно форсировать вывод на экран до слипа. Попиши зависающие программы и поймешь зачем.
723 2344462
>>344449
Да я знаю что такое буферизация, вопрос же не в этом. Я в книге прочитал что запись в любой файл производится после того как буфер который с ним связан до конца заполнится, но при этом я вижу что если просто выводить что-то на экран то всё выводится сразу, это стдаут какой-то особенный или что?
724 2344466
>>344462

>Я в книге


Задумайся о правильности этой книги, а потом перестань ее читать.
726 2344476
>>344466
Как я могу задуматься о правильности если я не знаю что правильно а что нет? Я поэтому и задаю вопросы. То что я сказал про файлы это неправильно?
727 2344492
>>344445
У тебя винда, там все через жопу.
728 2344493
>>344475
Понял, что написал?
>>344476

>То что я сказал про файлы это неправильно?


Они могут иметь различные буферы. Просто запомни, смывай буфер, только когда тебе нужно обязательно что-то записать. В остальном, реальная точка входа в программу сама смоет stdout, stderr буферы, при корректном завершении программы.
729 2344508
>>344493

>Понял, что написал?


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

>Они могут иметь различные буферы


Там было написано что это относится и к вводу и к выводу. Ну я сомневаюсь что это неправильно, потому что я и раньше слышал что с дисков читают сразу по 512 (или больше) байт в буфер, потому что они медленные. Хз, с стдаутом вопрос всё равно открыт получается.
730 2344545
>>344508
Ты плохо читаешь?
731 2344576
>>344545
Бля да че вы все ёрничаете постоянно? Почему нельзя нормально ответить?
732 2344584
>>344576
>>344493

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

733 2344611
>>344584
Я конечно ахуенно благодарен, но хотелось бы всё же разобраться а не "просто запомнить"
734 2344612
>>344611

>разобраться


В чем?
735 2344624
>>344612
Во-первых в том почему у того чела код написан так как будто принтф не сразу выводит (если он шиз то такой ответ тоже сойдёт), во-вторых почему в стдаут вывод не такой как в случае с другими файлами. Ну то есть понятно что это не диск поэтому там так и должно быть, но ведь и с стдаутом и с другими файлами работают одни и те же функции и они должны делать одно и то же.
736 2344633
>>344624

>принтф не сразу выводит


Буферизация.

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


Точно такой же.

Ты вообще необучаемый.
737 2344646
>>344633
Походу это у тебя буферизация, временная память какая-то. Что буферизация? Принтф выводит сразу, я это и так знаю, вопрос был в том почему у него написано что строка просто записывается в буфер (и не выводится пока не вызвать ффлаш). На счёт того почему вывод не такой же я тоже написал, на диск вывод идёт когда буфер заполняется до конца.
738 2344653
>>344646
Ты не понимаешь о чем ты говоришь.
739 2344660
>>344653
Ну ок, объясни тогда в чём я не прав, или хотя бы скинь что почитать. Только не ту статью из википедии, я там ничего нового не нашёл.
740 2344666
Ннагавнякал версталку текстовых файлов воедино спецом чтоб шоб уместить свой охуительный архиватор в два скрина и показать вам. Только заебался utils.h подгонять, две строки на предыдущий скрин все таки попали.
741 2344677
>>344666
Говнокод.
742 2344735
>>344666
А кто будет ошибки проверять - папа?
743 2344782
>>344735
Как-то так например?
744 2344786
>>344782
У тебя в determineCommand идет использование нулевого указателя.
Screenshot from 2022-04-26 19-28-45.png37 Кб, 463x387
745 2344791
>>344786
я больше так не буду
746 2344794
>>344791
У тебя алгоритмическая сложность проверки команды очень высокая, из-за того, что ты используешь строки, а не их хэши.
747 2344802
>>344660
ОС несколько больше чем Windows. Даже среди nix -подобных куча реализаций с разным поведением. Стандарт С не гарантирует вывод, только наличие буферизации, остальное на усмотрение разработчиков стандартной библиотеки.
16491918392680.jpg9 Кб, 200x200
748 2344808
>>344782
Больше вопросов не имею.
750 2344852
>>344838
Только хуже сделал.
751 2344898
>>344838

> код шизофреника


Давай еще.
752 2344899
>>344852
Да я рофлю, на кой хуй там хештаблица, тем более такая хардкорная. Это когда-то давно делал для реализации LZW.

Вот вам анончики, лучше, такая задачка. Передать stateful функцию, как аргумент qsort, например. Чтоб код функции мог ссылаться на переменные из локального скоупа. gcc позволяет делать пикрил, а clang не позволяет. Ну и еще это не универсальный вариант, потому что такой коллбек не получится куда-то назначить для позднейшего вызова. Она живет, пока живет скоуп, а с переписывание стеком пойдут по пизде не только используемые переменные, но и сам код функции. Короче, тот же qsort сам должен знать, что ей передать, а он знать не может. Все? Пиздец?
753 2344912
>>344899
Заведи глобальный указатель на стейт. И заполняй его перед вызовом сортировки. Будет работать пока какой-нибудь мудак не передаст туда функцию сравнения, которая сама вызывает qsort.
754 2344913
>>344899
Aлсо

>с переписывание стеком пойдут по пизде не только используемые переменные, но и сам код функции


>код функции


чел? думаешь при входе в мейн рантайм компилирует твой callable, а при выходе стирает?
755 2344915
>>344913
Не, не компилирует, а скомпилированный код вставляет. Или нет?
756 2344988
>>344646

> Что буферизация? Принтф выводит сразу


Нет, не сразу, он буферизирует.
То, что твоя строка выводится сразу, не значит, что все строки во всех ситуациях на всех платформах выводятся сразу. Вывод у тебя сразу это лишь твоё случайное везение. Код, рассчитаный на везение - ненадежный код.
По спецификации printf буферизирует, значит когда нужен незамедлительный вывод, нужно сбрасывать буфер, иначе у тебя говнокод.
757 2344997
Есть у кого ссылка на учебник с нормальным переводом без очепяток в коде ?
758 2344998
>>344997
С ошибками в коде это и есть правильные учебники. Ты должен понимать что там написано, а значит сам находить ошибки. Тупо же копипастя, ничему не научишься.
759 2345116
>>344441
Если не оишабюсь, то буфыеризация происодит до тех пор, пока не встретится перенос на новую строку "\n". Можешь написать заведомо неправильный код и поиграть так с stderr, и увидеть, что если не выводить в конце '\n', то во время segfault сообщение не будет выводиться, а если добавить - будет.
760 2345515
>>344988
понял, спасибо
>>345116
да я уже разобрался, оказалось что на винде стдаут вообще не буферизированный
image78 Кб, 946x481
761 2345797
762 2345807
>>345797
Зачем ты говно мамонта принес?
763 2345808
>>345515

>да я уже разобрался, оказалось что на винде стдаут вообще не буферизированный


Разбирайся снова.
12922600157672.jpg52 Кб, 805x805
765 2345928
Сап, котятки. Откопал свой первый комп и решил что хочу в качестве хобби раскурить графику под дос, ну и соответственно что-то поближе к земле железу. Не то чтобы игори сразу кодить, для начала пару софтин с графеном под собственные нужды. Учил Си в универе двадцать лет назад, лол, не то чтобы его там давали на уровне выше школьного паскаля, но нравился мне он своей прямотой уже тогда. Короче анончики, нужна литература для долбоёба из середины девяностых про Си по полной программе. Желательно на русском, а то туповат одновременно с ангельского переводить и эти ваши указальники понимать. Насоветуйте книг, добрые аноны, а с меня как всегда.
766 2345936
>>345808
так, ты вообще иди нахуй, мне той твоей шизы хватило
>>345907

>The stdout and stderr functions are flushed whenever they are full or, if you are writing to a character device, after each library call

767 2345939
>>345936
Собсна, какого хуя я вообще доказываю, самый простой и эффективный способ - запустить код и посмотреть, тем более что я даже кидал скрины с пруфами.
768 2345945
>>345936

>мне той твоей шизы хватило


Какой?

Ты не разобрался в ситуации, но думаешь, что разобрался, почему ты по 1 реализации либси решил, что под окнами нет буферизации?
769 2345963
>>345945

>Какой?


ну это же ты мне тогда про буферизацию говорил? если нет значит не тебе

>Ты не разобрался в ситуации, но думаешь, что разобрался


в этом нет никакой информации, если я в чём-то не прав то лучше скажи в чём конкретно

>почему ты по 1 реализации либси решил, что под окнами нет буферизации?


Ну в идеале да, лучше сказать что в msvc это так работает, но я и в других местах видел такую формулировку, подумал, может есть какая-то зависимость от платформы и это в любых реализациях под винду так работает
770 2346362
>>345963
Если пишешь под винду, так и пиши под винду, виндовыми вызовами. Свою строку форматируй в память по указателю, а готовую хоть прямо в видеопамять записывай. И не будет никаких гаданий по кофейной гуще мультимочи, буферы-хуюферы.
771 2346486
>>345936
А я напоню, что в стандартном си стдерр всегда не буферизован, стдаут буферизован на терминал - построчно, иначе полностью.
772 2346641
>>346362
Мне не нужно было ничего писать, я просто хотел узнать как это работает
>>346486
Ну это явно не требование стандарта, потому что в реализации микрософта работает не так
773 2346684
>>346641

>в реализации микрософта


Ты бы еще турбо си.
774 2346742
>>346684
всмысле, она самая популярная
775 2346859
https://github.com/TheAlgorithms/C
https://github.com/AllAlgorithms/c

Алгоритмы на си, добавьте в следующий раз в шапку треда.
776 2346989
>>346742
Ну и что. У них С++ тащемто.
777 2347148
>>346641

>Мне не нужно было ничего писать


Суть программирования 2022, одни пиздаболы из социалочек, всё превращают в говночатик ради попиздеть.
778 2347196
>>347148

>Суть программирования 2022


>всё превращают в говночатик ради попиздеть


Недавно открыл для себя форумы?
779 2347290
Какие есть перспективы в ембеддед разработке ныне? Есть смысл перекатываться из стагнирующего и жутко перегретого рынка веба в ембеддед?
Я вкатун, если что. Вышку почти закончил, информатика и вычислительная техника, что-то знаю про всякие триггеры, транзисторы, сумматоры, закон ома помню, но все очень поверхностно, так как никогда должного внимания электронике и схемотехнике не уделял - думал что буду веб манькой.
Си знаю, многократно писал всякие лабы, в том числе под posix, с++ довольно поверхностно. Микроконтроллеры в руках ни разу не держал, паять не умею, с ардуиной и STM никогда не работал. Пользовался микрокапом и мультисимом в универе, хз, нужно ли это в ембеддеде.
780 2347296
>>347290

>Какие есть перспективы в ембеддед разработке ныне?


Никаких.
781 2347560
>>346989
Си тоже есть
>>347148
А как мне ещё задавать вопросы если их дохуя, еблан? Я тут предлагал с кем-нибудь перекатиться в тг например, под предлогом что тред засрется - мне сказали спрашивать здесь.
782 2347790
>>347560

>А как мне ещё задавать вопросы


в /b/
783 2348081
Я вкатун, прошу отнестись с пониманием к моему вопросу. Прочитал книгу и задался вопросом, а что дальше ? Ну я получил представление о языке, его синтаксисе, командах и т.д. А дальше что ? Просто открывая какой-то рандомный код, я нихуя не могу понять что в нем написано, не в плане команд операторов, а в плане указанных переменных и прочей хуеты. Или это значит, что я хуево все понял ?
784 2348185
>>347790
У меня всё по теме. Сам-то ты тут что-то делаешь, кроме того что критикуешь? Можешь идти нахуй кароче.
785 2348186
>>348081

>А дальше что ?


А зачем ты учил язык?

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


Если это какой-то специфичный код, тем более без пояснений, ты не обязан понимать что он делает. А если это простой код, значит ты как-то не так учил.
786 2348362
>>348186

> А зачем ты учил язык?


Хотел разобраться в том, как малварь создают.

> Если это какой-то специфичный код, тем более без пояснений, ты не обязан понимать что он делает. А если это простой код, значит ты как-то не так учил.


Да, именно специфичный, там какой-то сервер был, нихуя не понял, куча каких то незнакомых библиотек и т.д.
787 2348379
>>348362

>малварь создают


Разобрался? Теперь пиздуй в асм и не забудь mov bp, sp
788 2349193
>>348379

> Разобрался?


Нет

>Теперь пиздуй в асм и не забудь mov bp, sp


Зачем ?
789 2349983
Почему.
790 2349986
>>349983

>Почему.


Что?
791 2350042
>>349986
Везде читаю что если переменная перечисляемого типа, то она может принимать только значения которые перечислены в определении enum, иначе выдаст ошибку. По факту присваиваю ей другое значение и никакой ошибки нет.
792 2350064
>>350042

>Везде читаю что если переменная перечисляемого типа, то она может принимать только значения которые перечислены в определении enum, иначе выдаст ошибку


Си и кресты не перепутал?
793 2350068
>>350064
Нет
https://docs.microsoft.com/ru-ru/cpp/c-language/c-enumeration-declarations?view=msvc-170

>Переменная с типом перечисления хранит одно из значений набора перечисления, определенного этим типом

794 2350072
>>350068
В Си слабая типизация, такое поведение не может быть ошибкой.
795 2350075
>>350072
Ну тут же не приведение, а какой-то конкретный прикол перечисляемых типов. Но кажется я немного понял, там не ошибка должна быть а варн, но у меня нужные флаги не включены походу. Просто странно, зачем этот тип вообще нужен без варнов, можно же было просто сделать enum без всяких дескрипторов, чтоб обычные символические константы создавать и использовать их везде безотносительно типов.
796 2350080
>>350075

>Each enumerated type is compatible with one of: char, a signed integer type, or an unsigned integer type. It is implementation-defined which type is compatible with any given enumerated type, but whatever it is, it must be capable of representing all enumerator values of that enumeration.


>Enumerated types are integer types, and as such can be used anywhere other integer types can, including in implicit conversions and arithmetic operators.


https://en.cppreference.com/w/c/language/enum
797 2350107
>>350080
Да я не про это говорю, а про то что без предупреждений перечисляемые типы не нужны, они ничем не отличаются от обычных целочисленных вроде int.
798 2350455
>>350107
Предупреждение это не язык, а лишь помощь программисту избегать ошибок. Чем тупее программист, тем больше ему нужно помощи чтобы не обосраться. Вот так, со временем количество предупреждений и увеличивается. Раньше предупреждений было мало, теперь стало много. Дрошло и до того, что некоторым без предупреждений вообще никак, не нужно. Достигли дна, наконец-то.
799 2350644
>>350455
Да мне лично вообще похуй на предупреждения, просто подметил странность.
800 2351896
аноны, помогите. нужна библиотека для с. которая работает непосредственно с партишнами ext234, а конкретно например позволяет получать например незанятые или наоборот занятые блоки а так же мб записывать\считывать информацию из них. есть вообще что-то похожее?
801 2351909
802 2352253
>>297526 (OP)
Как сделать простое виндусятное окно для программы си? Можно ли совместить её с какой нибудь HiAsm? Они смогут обмениваться переменными?
803 2352257
>>352253

>Как сделать простое виндусятное окно для программы си?


Зависит от платформы.
804 2352260
>>345928
Спроси на форуме даунгрейдеров
805 2352429
>>352260

>Спроси на форуме даунов


Так будет вернее.
806 2352567
>>352429
Это здесь дауны
807 2352580
>>352567
Как успехи в программировании, недаун? Или можешь только хрюкать на форуме даунов?
image11 Кб, 394x345
808 2352879
почему.
image.png48x54
809 2352899
>>352879
деб
810 2352901
>>352899
и что тут не так
811 2352918
>>352879
2 бита значения и 1 бит знаковый, у тебя переполнение знакового происходит.
812 2352919
>>352918
Точно, спасибо
813 2352962
>>352879
Попробуй "unsigned int b : 3"
814 2355294
Аноны, написал обработчик для файла .bin, все норм работает. Но у меня таких бинарных файлов 6,5 тысяч. Названия файлов просто пронумерованы 1.bin - 6573.bin.
Как мне по очереди их обрабатывать, инкрементируя название файла?
Надо ведь как-то в fopen() это делать?
815 2355300
>>355294

>Как мне по очереди их обрабатывать, инкрементируя название файла?


Преобразовывать числа в строки.
816 2355317
>>355300
Это через snprintf()?
817 2355326
>>355317
Как хочешь.
818 2355412
>>355326
Я бы мб хотел, еслиб знал какие еще варианты есть.
Как это сделать грамотнее?
819 2355889
>>352253
Шереметьев, "программирование на си" torrent
image.png348 Кб, 570x590
820 2356114
>>355889

>Содержание курса:


>Введение


>Блок 1. Основы языка Си


>1.1 Установка CodeBlocks


КО

>1.2 Минимальная программа на языке Си


>1.3 Русификация консоли


КО

>1.4 Компиляция программы


КО

>1.5 Суть работы программиста


КО-КО-КО ))))
821 2356866
Добавьте в шапку курс по программированию на Си в Линукс.
https://www.edx.org/professional-certificate/dartmouth-imtx-c-programming-with-linux
Сам по себе сертификат платный, но можно просто смотреть курсы и решать задачки бесплатно без сертификата. Если кто-то беспокоится, что его там вместо программирования будут учить Линуксу или башу или еще какой-то хуете, то там первые 5 курсов вообще не затрагивают ни операционные системы, ни даже заставляют устанавливать компилятор. Компилятор на одной и той же страничке. Все лекции с субтитрами. Объясняются принципы хранения данных в памяти. После них в голове все встало на места и наконец-то открылось понимание указателей, маллока, массивов, передача параметров по ссылке и все такое.

Однозначная годнота для тех, кто не может осилить К&R.
image5 Кб, 264x179
822 2357131
Кто-нибудь знает в каком порядке тут производится замена?
image.png44 Кб, 172x135
823 2357219
>>357131
На что я, блять, смотрю?
824 2357373
>>357219
Да просто задумался, а что если сделать так, и в итоге возник такой вопрос. Например ясно что он точно не по очереди их заменяет, потому что иначе всё заменилось бы на A и была бы ошибка (переопределение переменной). Интересно как он парсит.
825 2357375
>>357373

>Интересно как он парсит.


Гуглить не пробовал?
https://docs.microsoft.com/en-us/cpp/build/reference/p-preprocess-to-a-file
826 2357379
>>357375

>Гуглить не пробовал?


Прочесть мой вопрос не пробовал?
827 2357380
>>357379
Какой?
828 2357382
>>357380
Ясно
829 2357579
>>357379
ты сам-то читать умеешь?

по ссылке блять твой ответ, тебе даже гуглить не понадобилось
830 2357641
>>357579
Ну давай, ткни носом, где там ответ на "в каком порядке производится замена" или "как он парсит"? Я бы ничего не сказал если бы не это "гуглить не пробовал". Естественно блять пробовал, иначе не спрашивал бы.
831 2358105
>>357641
прокати файл через препроцессор и посмотри сам, клоун.
832 2358111
>>357641
>>358105
А ещё я только что нашёл ответ на стаковерфлове, который это, сука, объясняет.

>Естественно блять пробовал


нихуя ты не пробовал.
833 2358272
>>358105
Ебнутый? Предлагаешь мне реверсить препроцессор?
>>358111

>нихуя ты не пробовал.


иди нахуй.
1617268799521.png66 Кб, 352x264
834 2358322
>>358272
боже блять какой же ты тупой
>>357375
мало того, что ты нихуя не гуглил, так ещё ссылку кинули и ты её даже сука не открывал, зато сидит самый умный, без ответа мля
1380293363371.jpg22 Кб, 400x300
835 2358472
>>352260
Спасибо за мысль, не знал по какому запросу искать клуб таких некрофилов как я, лол!

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

typedef struct tagBITMAP / the structure for a bitmap. /
{
тут всякие кишки
} BITMAP;

и потом объявляет переменные везде по коду через BITMAP, а tagBITMAP вообще нигде не использует. Почему не второй? Гайды говорят что после объявления структуры пишутся имена переменных жы? Зойчем тогда вообще первое имя?
836 2358693
>>358322
нет это ты тупой, сколько мы уже пиздим а ты до сих пор не понял в чём мой вопрос, хотя он простейший
16143641827210.mp4169 Кб, mp4,
480x270, 0:02
837 2358733
>>358472
http://www.c-cpp.ru/books/typedef
Вроде достаточно подробно расписано, хотя хз, не трогал тайпдефы особо

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

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

Для совсем дегенератов ебаных: у тебя "А" превращается в "А", а "B" - в "B". порядок выполнения подстановок тут оказывает серьёзное влияние на целое нихуя
838 2358795
>>358733
Ты тупой еблан и продолжаешь это доказывать, потому что ВСЁ ЕЩЁ не понимаешь.

>чё останется- то и заменяется последним


Меня ебёт что заменяется последним? Кто вообще про это спрашивал? Что останется я и так могу понять, просто принтанув A или B.

>гугли инфу


Точно, именно это мне и было нужно если я сюда написал, без тебя бы не догадался никак

>порядок выполнения подстановок тут оказывает серьёзное влияние на целое нихуя


Опять же, кто про это спрашивал? Меня это абсолютно не ебёт.
Можешь больше не отвечать, помочь ты не можешь всё равно, хотя помощь от такой гниды как ты мне в любом случае не нужна
839 2358808
Привет аноны, я нюфаг, взялся написать свою первую змейку, сижу на линуксе и не могу найти нормальный способ описать код так, чтобы змейка продолжала движение пока не нажата снова клавиша какая-нибудь. По гуглу будто одни костыли через termios.h, в под винду всего лишь одной функцией khbib() решается. Неужели ничего нового не придумали под линукс?
840 2358875
>>358795
Бля это не ты на днях в цпп треде 50 постов на оператор += наматывался? Тот так же крыл всех хуями требуя все более детальных инструкций.
image.png154 Кб, 1850x684
841 2358904
>>356866

>кто не может осилить К&R.


Так может ну его нахуй тогда этот Си?
842 2359111
>>358875

>Бля это не ты на днях в цпп треде 50 постов на оператор += наматывался?


Нет, хз о чём ты

>крыл всех хуями


Я не крыл до определённого момента, когда чел начал попусту выёбываться
И конечно я ничего не требовал, просто спросил
12877342593692.jpg61 Кб, 500x503
843 2359113
>>358733

> Вроде достаточно подробно расписано


Я на ту же статью вчера в гугле наткнулся, лол, и она не объясняет. Но уже в следующем листинге тот чувак пишет без первого имени вообще, так что думаю это чисто косметическая поебень и всё работает и так. Спасибо, анон.
12877342593692.jpg61 Кб, 500x503
844 2359115
>>358733

> Вроде достаточно подробно расписано


Я на ту же статью вчера в гугле наткнулся, лол, и она не объясняет. Но уже в следующем листинге тот чувак пишет без первого имени вообще, так что думаю это чисто косметическая поебень и всё работает и так. Спасибо, анон.
845 2359164
>>358904
Долбоеб не тот, кто не пока что не может осилить, а кто решил, что раз не осилил, то ну его нахуй.
846 2359185
>>358904
Да и вообще, обычно K&R советуют тем, кто вообще лыка не вяжет в программировании, типа меня. А он так-то сложный.
847 2359197
Кто сталкивался со Столяровым? Нормальный у него учебник?
цитата например

К сожалению, я вынужден сейчас сказать вам ещё одну не очень приятную вещь.
Далеко не каждый человек может стать программистом, и дело здесь не в уровне интеллекта или каких-то там «способностях», а в том, каковы ваши индивидуальные склонности. Программирование — это очень тяжёлая работа, требующая предельного интеллектуального напряжения, и выдержать эту пытку могут лишь те сравнительно
редкие извращенцы, которые способны от процесса создания компьютерных
программ получать удовольствие. Вполне возможно, что в ходе изучения этой книги вы поймёте, что программирование — это «не ваше»; ничего страшного, в мире есть много других хороших профессий. Если моя книга «всего лишь» позволит вам вовремя понять, что это не ваш путь, и не тратить лучшие годы жизни на бесплодные попытки учиться
в ВУЗе по какой-нибудь программистской специальности — что же, это само по себе немало: лучшие годы, потраченные впустую, вам потом никто не вернёт, и чем раньше вы поймёте, что вам нужно (точнее, не нужно), тем лучше.
848 2359200
>>359197
И ещё

С учётом сказанного выстраивается довольно однозначная цепочка языков для начального обучения: Паскаль, язык ассемблера, Си. В эту
цепочку практически в любом месте можно что-нибудь добавитьь но ни убирать из неё элементы, ни переставлять их местамиь судя по всему, нельзя. Зная Си, можно вернуться к изучению явления, именуемого операционной системой, и её возможностей с точки зрения программиста

Итак, если иметь в виду в будущем изучение Си, то предварительно нужно освоить какой-то язык, в котором а) есть указателиь причём в полный рост, без всякой сборки мусора; б) без указателей можно обходиться, пока обучаемый не окажется более-менее готов к их восприятию; и в) начав использовать указателиь обучаемый расширит свои возможностиь то есть в указателях должна быть реальная потребность.
849 2359201
>>359200
Толсто.
850 2359472
>>358795

>Меня ебёт что заменяется последним? Кто вообще про это спрашивал?


Ты.
>>357131

>Кто-нибудь знает в каком порядке тут производится замена?

852 2360025
>>359472
Там ничто не заменяется последним, и вот тут >>357373 я объяснил почему
853 2360032
>>360025
Ты котов бездомных тоже подкармливаешь?
854 2360079
>>360025
>>357373
#define ass(blast) ( blast+ass(blast) )
посмотри, во что это резолвит препроцессор, и да будет тебе счастье.
855 2360081
>>360079
тьфу, хуйню сказал

#define ass(blast) (blast + usa(blast))
#define usa(blast) (blast + ass(blast))
856 2360172
>>360032
Да я думаю он реально не понимает

>>360081
Сейчас не могу проверить, но если просто рассуждать, разве это не то же самое что я показал?
image7 Кб, 383x177
857 2360189
>>360081
Хотя не, понял к чему это. То есть получается что там рекурсивная замена с каким-то лимитом?
858 2360360
>>360189
#define A B
#define B A

согласно второму дефайну
#define A B превращается в #define A A, который дальше уже не обрабатывается во избежание рекурсии
аналогично со вторым дефайном
859 2360560
>>360360
Не, дефайны вроде начинают дейстовать от того места где объявлены
860 2360626
>>297526 (OP)
В некоторых программах, таких как ffmpeg или ядро линукса, можно включать/отключать функционал на этапе компиляции. Как это работает?
861 2360639
>>360626

>Как это работает?


Сборка\препроцессор\скрипты.
862 2361254
>>360639
В общих чертах процесс понятен, но как такое реализовать на практике? Я не хардкорный погромист, а сисадмин локалхоста.
863 2361309
>>360032
Что за мемес с котами?
865 2361603
>>359201
Почему? Знаком с ним? Не стоит время тратить на его учебник?
866 2361850
>>361543
С этим проблем нет, я про это
>>360360

>согласно второму дефайну #define A B превращается в #define A A

867 2362026
>>361850
1)B это A
2)#define A B, где B это A
3)#define A A
?)???
4)вы восхитительны
868 2362066
>>362026
1) дефайны не заменяют друг друга
2) ???
3) ¯ \ _ (ツ) _ / ¯
image56 Кб, 958x366
гы 869 2362447
870 2362605
>>361603
Ну чел, он действующий препод в мгу. Как ты думаешь сам?
Конечно стоит время потратить, тем более что если в инглиш не можешь, переводы читать - с ума сойти можно. А тут максимально локализировано всё.
p.s. видосы на ютубе у него шиза полная
871 2362920
Всем сап, вопрос от неуча.
Недавно для себя открыл тот факт, что вышла Raspbian OS 64-bit.
Если я установлю на малинку 64-битную ос, то сишные библиотеки для доступа к GPIO, по типу WiringPi и BCM2835 будут работать?
Они ведь создавались еще на 32-битных осях и создатели. В инете годной инфы нема, видимо, потому что новая ОС вышла не так давно, а я не тру хацкер чтобы самому допереть до этого.
872 2363019
А где мне блять читать что входит в конретную библиотеку и описание каждой функции?
873 2363074
>>363019
Мдя... 2022, си-тред.
!!569903615.jpg114 Кб, 464x450
874 2363382
>>363074
Братишка, ты не понимаешь сути си-тредов. Приходи поливать других гавном а не это своё погромирование.
875 2363582
>>363019

>в конретную библиотеку


В исходниках.

>описание каждой функции


В документации.
876 2363621
>>363382
Можно ведь тоньше. Например, "хочешь получить идеальный язык без сишных ошибок, но очень быстрый? Голубая ласка vlang.io уже идёт за тобой".
877 2364079
>>297526 (OP)
Хз куда спросить, с радача с таким вопросом прогнали.
В общем, учу FreeRTOS.

структура моей программы такова:

main.c:
LED_Task
TimerTask
CanTask

Ну и несколько файлов в которых Init, которые вызываются из main() и IRQ, в лучших традициях bare-metal:
timer.c
uart.c
can.c
и прочее...

Есть несколько вопросов:
1. Правильно ли так закладывать структуру?
2. Стоит ли делать Семафоры\Мьютексы и прочие примитивы глобальными, чтобы каждое прерывание могло им спокойно пользоваться, если оно нужно в другом файле?
878 2364217
>>357131
Один из самых заебатых вопросов на собеседовании, которым тимлид тешит свое раздутое ЧСВ.

Еще не хватает:

1.
int foo = 10;
foo = foo++ + ++foo;

2.
int foo = 10;
printf("%d %d", foo++, foo++);

3.
int a=10, b =20, c;
c = a+++b;

4.

int a = 10, b = 20, c = 30, d = 40, e;

e = a b ^ c+++ / d;

5. Установите целую переменную по абсолютному адресу 0x1234 к значению 0xcaba в одну строку
(int * const)(0x1234) = 0xcaba;

А самый нормальный ответ на любой вопрос - выгнать нахуй такого мудака, который пишет в продакшн такую хуйню.
Такой хуйни можно тонну нагенерировать, проверить на компиляторах, и ебать людям мозг, вместо того чтобы проверять.
Я проверял 1-й и 2-й на 3-х компиляторах и получил 2 разных ответа.

Ну и вишенка на торте, о чем меня спросили последний раз:
1. С какими типами оптимизации вы работаете?
2. Какие отличия между стандартами Си вы знаете?
3. Найдите все ошибки в данном коде на этой распечатке.
-Какого плана? Синтаксические тоже? Или только алгоритмичексие?
-Да тут и синтаксические и алгоритмические, долбоебические (кхе-хе) Еще никто все не нашел, насколько помним.
878 2364217
>>357131
Один из самых заебатых вопросов на собеседовании, которым тимлид тешит свое раздутое ЧСВ.

Еще не хватает:

1.
int foo = 10;
foo = foo++ + ++foo;

2.
int foo = 10;
printf("%d %d", foo++, foo++);

3.
int a=10, b =20, c;
c = a+++b;

4.

int a = 10, b = 20, c = 30, d = 40, e;

e = a b ^ c+++ / d;

5. Установите целую переменную по абсолютному адресу 0x1234 к значению 0xcaba в одну строку
(int * const)(0x1234) = 0xcaba;

А самый нормальный ответ на любой вопрос - выгнать нахуй такого мудака, который пишет в продакшн такую хуйню.
Такой хуйни можно тонну нагенерировать, проверить на компиляторах, и ебать людям мозг, вместо того чтобы проверять.
Я проверял 1-й и 2-й на 3-х компиляторах и получил 2 разных ответа.

Ну и вишенка на торте, о чем меня спросили последний раз:
1. С какими типами оптимизации вы работаете?
2. Какие отличия между стандартами Си вы знаете?
3. Найдите все ошибки в данном коде на этой распечатке.
-Какого плана? Синтаксические тоже? Или только алгоритмичексие?
-Да тут и синтаксические и алгоритмические, долбоебические (кхе-хе) Еще никто все не нашел, насколько помним.
879 2364221
>>364217

>>364217

>e = a b ^ c+++ / d;


e = a ✱ b ^ c+++ / d;

>(int ✱ const)(0x1234) = 0xcaba;


✱(int ✱ const)(0x1234) = 0xcaba;

звездочки сожрались

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


вместо того чтобы проверять реальные знания.

фикс.
880 2364712
>>364217

>foo = foo++ + ++foo;


>printf("%d %d", foo++, foo++);


>Я проверял 1-й и 2-й на 3-х компиляторах и получил 2 разных ответа.


Неопределенное.
божественно 881 2364734
#define HI(t) ((double)(t & 0xffffffff00000000LL))
#define LO(t) ((double)(t & 0x00000000ffffffffLL))

double
difftime(time_t t1, time_t t0)
{
return (HI(t1) - HI(t0)) + (LO(t1) - LO(t0));
}
882 2365053
>>364712
Да. Тем не менее это спрашивали, как-то. Сейчас я уже понял как отвечать на подобного рода хуйню.
883 2365202
>>362066
Что у меня на скринах, каша ты манная?
884 2365222
Есть структура, инициализирующая поля экземпляров исходя из наборов разных констант. Первое, что пришло в голову, это задать для каждого набора констант по массиву, в каждом из которых индексом будет номер конкретного профиля структуры, т.е.

Имя: Вася, Петя, Коля, Саша
Возраст: 21, 64, 7, 15
Температура: 36.4, 17.2, 37.0, 36.9

Не нравится, что в таком объявлении нет связей кроме индекса, что может быть неочевидно. Насколько это уродско, или как вы делаете это на си?
885 2365280
>>365222
Что тебе мешает создать массив структур?
886 2365283
>>365202
У тебя на скринах результат замены макроса.
887 2365284
>>365222
Базы данных для кого придумали, дятел.
888 2365286
>>365284
Толсто.
889 2365290
>>365286

>хранить пациентов в сишных массивах


Чтобы тебя так в больнице лечили.
890 2365292
>>365290

>хранить


Зачем тратить время на обращения к базам, когда данные константные?

>пациентов


Он ничего не говорил про пациентов и реальный проект.

>в сишных массивах


Что плохого?

>Чтобы тебя так в больнице лечили.


Это проклятие?
image16 Кб, 439x196
891 2365573
>>365222
Пик.
>>365290
Ввзыл.
892 2366012
>>365290
Кажется, я только что хэш таблицы
893 2366313
>>297526 (OP)
Есть какой нибудь годный учебник по основам программирования на С? В университет надо для поступления
894 2366597
>>297526 (OP)
Go
Objective-C

Да, да многие сейчас скажут, что это нужна потому что потому на этом легче разрабатывать хуйню для Гугл и Эпол. Но в этом и проблема. Что это было сделано не как дополнение, а как замещение, чтобы позаниматься саморекламой. Это не C++ над C.

То же самое сделали Apple с Flash`ем, чтобы поаутофеллировать.
895 2366621
>>366012
>>366597
Тред шизиков в софтаче.
896 2366790
>>366621

>Go


>Objective-C


Это было не в тот тред.
897 2366851
>>366790
Это ты не в тот тред, макака.
Но я понимаю, трудно бороться с тягой залезть в ситред, даже если он тебя не касается. Тяга грязных чуханов к свету так же естественна как мухота собирается вокруг лампочки. Вот и вылязят из своих помоев и ползут, сползаются к настоящему языку настоящего программирования. И сколько ни отрицай на словах, в душе истина неизменна, ведь истина это сама реальность которую не слепишь из слов, только ложь.
898 2366871
>>366851
Ладно, если дохуя умный, тогда мне на вопрос ответь, который я тут оставил неделю назад:
>>364079

Только ответ не "Да\Нет", а весомый какой-нибудь.
899 2366932
>>366851
Толсто.
900 2366935
>>366871

>а весомый какой-нибудь.


Забей хуй на структуру, всем похуй и формируют так, как им удобнее, язык не задает ее явно, значит любая правильная.
901 2366961
>>364079

>2. Стоит ли делать Семафоры\Мьютексы и прочие примитивы глобальными, чтобы каждое прерывание могло им спокойно пользоваться, если оно нужно в другом файле?


Чел. Мутекс защищает определенный ресурс. Если этот ресурс нужен прям всем, лучше экспортируй функции, которые берут мутекс и работают с ресурсом.
902 2367186
Если я не хочу пользоваться sql, xml или другой сторонней разметкой, нормально ли хранить табличные данные в файлах вида "один файл - один столбец"? Что нужно знать при этом про кодировку и разделители?
903 2367357
>>367186
Нит. Используй хотя бы csv, так не потеряется реляция. Кодировка только utf-8. Разделитель тот, которого нет в полях, зумерище.
904 2367659
>>367186

>я не хочу


Здесь сайт 18+

>>367357

>Кодировка только utf-8


Тыскозал? Еще в zip запакуй, дятел, больше кодировок богу кодировок.
utf16 - вперед, как загрузил, так и пользуешься, так же и записал, никаких говнобиблиотек и говноконверсий.
905 2367691
>>367659
Привет, токсик, я узнал тебя по твоим сварливым высерам.
906 2367722
>>367659

>никаких говнобиблиотек и говноконверсий.


Ебалай, без конверсий это останется массивом uint16_t.
907 2367894
Кто-нить юзал для Си либу pxlib для того чтобы вытаскивать данные из файлика paradox? как включить эту ебучую декодировку при установке
908 2367907
>>366935
>>366961
Спасибо, примерно, значит, двигаюсь в правильном направлении.

С глобальными переменными лучше не играться?
909 2368119
>>367722
wchar_t, или, для тупых ебалаев, wide char, юникодные символы нативные для системы, а значит не требующие ничего, бери и пользуйся, а не лепи макакины говнопрокладки на пустом месте.
910 2368310
>>368119

>wide char, юникодные символы нативные для системы


Худшее решение стандарта.
пофиксил
911 2368428
>>368310

>пук


Настоящее лицо прокладочной макаки. Пара простых ответов и попытки косплеить человека испарились без следа уступив законное место нативному хрюканью.
912 2368438
>>368428
Толсто.
Сможешь объяснить зачем существуют широкие символы?
914 2369028
Привет, бородатые.
Тяжело ли вкатиться в коммерческую разработку на Си без ВО? Уже 2 года работаю java макакой, но, сука, тянет на самые низкие уровни. Где в РФ сейчас пишут на Си?
1261897144924.jpg50 Кб, 699x629
915 2369557
Сап, ананасы, некрофил-нубас на проводе. Продолжаю ковыряться в коде под досом, точнее Borland C 3.1. Поясните как прицепить внешний obj.

Книга, по которой я пытаюсь ебаться с ассемблером/сёй не считает нужным разжёвывать такие нубские вопросы. Вот листинг процедуры хелловорлда на MASM, вот сишный листинг — дальше сами. В asm лежит процедура, которая должна вызываться из сишного кода. Из асма я хуярю обж, но ся при компилировании матерится что линкер не нашёл эту самую процедуру. Куда читать, что делать, ананасы? Выручайте.
916 2369985
>>369557

>Куда читать, что делать, ананасы?


Объявить функции в сикоде не забыл?
Clipboard01.jpg145 Кб, 1296x839
917 2370026
>>369985
Объявлено, я запускаю исходники что с книгой шли, разве что conio добавил, которой не хватало для kbhit.
918 2370208
>>369028
Как и везде думаю - разработка драйверов/ядра/прочего говна для ОС. Вакансий сравнительно мало, но и поток людей туда не очень большой, так что устроиться можно.

Правда вместе с С придется учить ассемблер и как работает ОС "под капотом". За месяц-два можно спокойно вкатиться
919 2370870
Дайте пиздатое руководство по именованию переменных, чтобы они не выглядели как сороконожка.
920 2370930
>>370870
Посмотри на код любого крупного проекта. Например, ядро линукс, nginx, ffmpeg,...
921 2372431
>>370208

>За месяц-два


маловато для нормального вкатывания
922 2372734
>>372431
Ну я лично столько учил. Правда я учил конкретно архитектуру ОС (свое ядро делал), а С и ассемблер уже знал.

Спустя 2 месяца после того как закончил в Газпром устроился. Правда переучиваться с x86 на arm пришлось.
923 2373602
>>372734

>учил конкретно архитектуру ОС


Не подскажешь материалы для изучения?
924 2374226
а что на русском почитать про библиотеки часто используемые?
925 2374365
>>373602
Как вкатывальщик вкатывальщику советую
https://youtube.com/playlist?list=PLHHm04DXWzeKuhdGFHSEWDpdgoYpjPptR
душевный тип. Может посоветуют что получше, но мне вообще хорошо зашло.
926 2374466
Почему про указатели рассказывают на примере переменных, а не структур? Для переменных они же лишены смысла
927 2374587
>>374466
Кто?
928 2374589
>>374466
С учётом сказанного выстраивается довольно однозначная цепочка языков для начального обучения: Паскаль, язык ассемблера, Си. В эту
цепочку практически в любом месте можно что-нибудь добавитьь но ни убирать из неё элементы, ни переставлять их местамиь судя по всему, нельзя. Зная Си, можно вернуться к изучению явления, именуемого операционной системой, и её возможностей с точки зрения программиста

Итак, если иметь в виду в будущем изучение Си, то предварительно нужно освоить какой-то язык, в котором а) есть указателиь причём в полный рост, без всякой сборки мусора; б) без указателей можно обходиться, пока обучаемый не окажется более-менее готов к их восприятию; и в) начав использовать указателиь обучаемый расширит свои возможностиь то есть в указателях должна быть реальная потребность.
929 2374926
>>373602
osdev, просто весь читать

Robert love, Linux kernel что-то там
Просто гайд по пониманию что в линуксе происходит и как

И двачую вот этого
>>374365
На Ютубе круче не найти

Также на udemy
"Developing multithreaded kernel from scratch"

Ну а по не читать, просто берёшь исходники ядра Линукс или его модули/драйвера и разбираешься
930 2375507
>>374926

>просто берёшь исходники ядра Линукс или его модули/драйвера и разбираешься


Можно какой нибудь пример.
931 2375558
>>374226

>библиотеки часто используемые


Какие?
932 2375685
>>358808
Тебе для начала необходимо понять саму концепцию движения. Все этот работает в бесконечном цикле, условно while(1), потом ты должен это выполнение как-либо задерживать, либо через for(что реалтно только для мк), либо как человек через sleep и отлавливать либо нажатие кнопки, либо сделать такой слип, который сам постоянно проверяет нажатие кнопки. Я просто как делал так и обьяснил сейчас.
933 2375698
>>375507
https://git.kernel.org/

Там много всякого, ядро Линуса возьми и посмотри, поменяй там шо нить, сделай свою еба фичу например. Гайдик как компилить и запускать в гуглах поищи
934 2376125
>>375685
Привет. С этим разобрался) Теперь непонятки с тем, как программа должна запоминать предыдущие координаты змейки, чтобы если змея свой хвост укусит, то игра закончилась
935 2377743
>>376125
Смотри, я делал через миссив структуры координат x,y,prevx,prevy. У меня сначала смещалась голова, а потом я записывал данные в prevx,prevy и изменял x,y относительно смещения гловы. Те примерно так: записываем x,y в prevx,prevy головы и потом по каждой другой части тела повторяем тоже самое, записываем x,y в prevx,prevy и меняем x,y на prevx,prevy предка, те по факту i-1, где i индекс части тела
936 2377776
>>374365
Спасибо, чекну. Я до этого Кринкина смотрел, ты не знаешь его случайно? Как в сравнении с ним то что ты скинул
937 2378702
>>376125
Может всё игровое поле сделать массивом и координаты туловища из него брать,и проверять вхождение головы.
938 2378721
А я напоминаю
https://pastebin.com/EUQQrdRs
939 2378737
>>378721

>змейка


>"out of memory"


Смишно.

>curses


Фреймворко-макака. Хрр, тьфу.

> / Loop and get user input /


> w a s d


И не стыдно? Стрелочки не осилил?

> for (;;) {


> switch (getch()) {


Судя по докам, getch() останавливает программу ожидая нажатия клавиши. Твой говнокод не работает.
IMG20220614070918.jpg113 Кб, 1080x571
940 2379301
>>378737
>>378721

>> for (;;) {


>> switch (getch()) {


>Судя по докам, getch() останавливает программу ожидая нажатия клавиши. Твой говнокод не работает.


?
941 2379492
>>378737

>не проверять malloc на возврат NULL



>curses


>фреймворк


>ебаться вручную с tty/termios/ioctl и читать клавиатуру/мышь из /dev/input/event (или делать что-то наверняка ещё более ебанутое на винде) вместо использования удобного решения, дарованного нам дедами



>getch блокирующий, говнокод не работает!!!


>nodelay(stdscr, 1)



Но стрелочки он правда не осилил. Ну или ему так просто привычнее.
942 2379495
>>379492
Это оптимизация памяти и времени, на обработку стрелочек уходит больше, чем на wasd. Ситред 2022 итоги.
943 2379504
>>379492
>>379492

>>не проверять malloc на возврат NULL


Вот кстати поясните плес. Допустим, я смотрю ютуб, слушаю музыку, открыл 100 вкладок в хроме и одновременно запускаю свой хеловорд на 1 кб динамической памяти, в котором нет такой проверки. Какова вероятность, что система мне не даст одного килобайта?
944 2379548
>>379504
Почему ты решил, что твоей программе вообще должны выделить память?
945 2379831
>>379504
Лол, читай про процессы и виртуальную память.
946 2380597
Как отключить у gcc препроцессор? Я хочу использовать сторонний, а на gcc будет приходить уже голый си.
947 2380599
>>380597
Хотя ладно, не столь существенно для быстродействия, думаю.
16386556370040.png1 Мб, 959x890
948 2380620
>>379492

>>ебаться вручную с tty/termios/ioctl и читать клавиатуру/мышь из /dev/input/event (или делать что-то наверняка ещё более ебанутое на винде) вместо использования удобного решения, дарованного нам дедами


Ситред 2022 итоги, пикрил.

С графикой ебаться неохота, с управлением неохота. Установи Юнити, нарисуй свою змейку мышкой и не еби мозг. Зачем в данный тред пришел?
949 2380737
>>380620
это не я пишу всю эту хуйню

(мимо анон который изначально за змейку спрашивал)
950 2380911
Посоветуйте годных каналов на реддите по си и линух. Чтобы в постах каждый день было интересное, а не "я нихуя не понял, вот мой говнокод".
951 2381050
>>380911
Толсто.
952 2381063
>>381050
Не толсто, я ньюфаг. Скачал швитую приложуху для новостей и мемов, чтобы следить за мировой культурой, а там одно говно. Я думал это что то хотя бы типа хабра. Впрочем нашел пару интересных каналов, но они не про си.
953 2381065
>>381063
Ты решил тут лишний вес сбросить?
954 2381430
>>380620
Я-то лично согласен с тобой, сам пытался писать tui-либу типа curses, правда на Go, просто здесь мотивация писавшего код тоже имеет значение. Может он либу саму хочет освоить, а как это работает под капотом ему неинтересно.
955 2381700
>>381430
Лезть в Си, но игнорировать что под капотом это бессмыслица. Си это не алгоритмический язык, в мысле, если писать аогоримы, не отличается от любого другого языка, и даже хуже их, ибо мешает своими низкоуровневыми подставами. Ведь для тебя подставы, раз не хочешь этим заниматься. Ты пришел не по адресу, иди в тот же шарп, выглядит похоже, но меньше мешающей хуйниб отвлекающей от твоих алгоритмов. Циклы, условия, массивы, списки, функции, вот всё это в шарпе куда логичнее и удобнее Си, у которого лишь кривой сахарок над низкоуровневостью который поломать раз плюнуть, у тебя только жопа будет гореть.
956 2382039
>>381700
Я не очень понимаю, почему ты приписываешь мне такие странные мотивации и обращаешься ко мне, будто я являюсь автором поста со змейкой, пишу на Си в описываемой тобой манере и в чём-то с тобой не согласен. Внимательнее перечитай сообщения.
957 2382075
>>382039
Я не понимаю зачем идентифицировать пользователей анонимного форума, который специально сделан анонимным чтобы этой хуетой не страдали, а общались по сути вопроса.

Какая разница, кто там со змейкой пришел или ушел, если конкретно ты, к кому я обращаюсь, такая же макака которой Си не нужен, а нужно лишь бы попроще на готовом. Ты не туда зашел, популярно же объяснил >>381700 Что неясно?

Это кретинское лицемерие залезть в Си, но отвергать то чем является Си, пытаясь его использовать как алгоритмический скрипт, для которых есть языки специальные, куда лучше чем Си, которые не для этого предназначен, тупо алгоритмы на готовом шлепать. Си это лоулевел, кишки, железо, а не абстрактные скрипты в сферическом вакууме чистой логики, обмазанные черными ящиками фреймворков которые сами делают "заебись", а кодеру похуй.
958 2382357
>>382075
Чувак, успокойся. Иди проспись, выпей свои таблетки или просто забей на эту дискуссию, потому что те рвение и агрессия, с которыми ты пытаешься приписать мне качества и мотивации, которых у меня нет, и дать мне объяснения, в которых я не нуждаюсь, выглядят уже совсем ненормально.
959 2382395
>>382357

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


>"чувак, ты, ты"


>"мне, я"


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


Сброду дали доступ к интернету. Итоги.
960 2382600
Анон со змейкой сообщает, что змейкой я тестировал старые bsd curses. Стрелочки там не поддерживаются, да и не нужно.
961 2382849
>>382395
Дружно сделаем вид, что ты сам написал что-то более осмысленное и по сути треда. Преисполнись уже до конца своей борьбой с абстракциями и начни писать на машинном коде.

>>382600
Я подозревал, что у кого-то могут быть интенции, отличные от бесполезного пердолинга. Но долбоёб выше сказал, что абстракции и "фреймворки" не нужны, а значит каждый должен написать свою библиотеку для решения стандартной задачи.
962 2384952
Выше и ниже долбоебы.
963 2385693
Как вы работу на Си находите, маги?
964 2385730
>>385693
Никак, на Си уже давно ничего не разрабатывают, почти везде используют, как прикладной язык.
965 2385768
>>385730
Да, ладно, не поверю. Всякие МК, ядра, антивирусы, хайлоды разве не на си пишут?
966 2385779
>>385768

>МК, ядра


Прикладной язык.

>антивирусы


Кресты.

>хайлоды


Кресты, го.
967 2385816
>>297526 (OP)
Приветствую всех в этом чатике. Надеюсь у вас здесь достаточно лампово. Не против, если здесь немного посижу с вами?
Тред пока не читал, планирую откиснуть в АСМе на какое-то время, потом сюда, забронирую пока здесь местечко.
968 2385875
>>385768
>>385779
Только сегодня видел вакансий 4-5 из около 400 только по СПб. Одни СУБД разрабатывают, другие какое-то сетевое ПО, третьи игровой движок. Кидать ссылки я, конечно, не буду.
969 2385876
>>385875
(не потому что я такой вредный, просто не хочу аффилироваться как-то, да и найти их самим несложно)
970 2386166
На проходящей в эти дни конференции Open-Source Summit 2022 в секции ответов на вопросы Линус Торвальдс упомянул о возможности скорой интеграции в ядро Linux компонентов для разработки драйверов устройств на языке Rust. Не исключается, что патчи с поддержкой Rust будут приняты в ближайшем окне приёма изменений, формирующем состав ядра 5.20, намеченного на конец сентября.
Запрос на включение изменений в ядро ещё не был отправлен Торвальдсу, но набор патчей прошёл дополнительное рецензирование, избавлен от основных замечаний, уже достаточно давно тестируется в ветке linux-next и доведён до состояния, пригодного для создания слоёв абстракции над подсистемами ядра, написания драйверов и модулей.

Мой вопрос: стоит ли теперь вкатываться в embedded c в linux?
971 2386203
>>386166
Да.
Даже если Раст окажется полной заменой С (что вряд-ли), то на это уйдет много времени. Тем более что зная embedded C, можно будет если что легко пересесть на такой же Раст.

Если жепа паникует, никто не мешает учить и то и то
972 2386252
>>386166

>интеграции в ядро Linux компонентов для разработки драйверов устройств на языке Rust


Интересно, когда появится первый, не переписанный на раст, драйвер?
973 2386388
Если переменная = sizeof(void ), это мне гарантирует свободную адресную арифметику по ней? Допустим, беру size_t и кручу-верчу его. Потом загоняю обратно в void . Всё будет в порядке? Нету там каких-нибудь скрытых сегментов за пределом 4...8 байт?
974 2386391
sizeof(void [звёздочка]), да или просто char var[8], к примеру;
9785041056902-2019-.jpg89 Кб, 500x500
975 2386527
>>297526 (OP)

>Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)


>"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).



Дайте список подобной литературы, также особенно дайте годных мемуаров, документальных драм, бородатых баек и т.п. необязательно про Си
976 2386533
>>386388

>Допустим, беру size_t и кручу-верчу его.


Если размера хватит, то все будет хорошо.

>Нету там каких-нибудь скрытых сегментов за пределом 4...8 байт?


Диапазон стандартом не установлен.
16492686037270.jpg53 Кб, 597x473
977 2386675
>>386388
На всех вменяемых архитектурах - да.
По стандарту - нет.
image.png18 Кб, 427x307
978 2386816
Есть массив mask, это просто массив данных карты, который не хочется выносить из структуры. Как-то не то выйдет, если сначала создать объект map со всеми характеристиками, обращаться к ним как map.lenght и одновременно иметь отдельный массив с данными этой карты, инициализированный где-то в main. Что можно сделать?
979 2386857
lengTH, а можно просто len
980 2386866
>>386816

>Что можно сделать?


Что ты хочешь сделать?
981 2386884
>>386866
Я хочу чтобы у меня был объект map структуры maps, к которому я бы смог обращаться как map.mask[4][12]. Как так сделать? Создавать в мейне отдельный массив char mask[][] не хочется, потому что он будет отделен от объекта map.
982 2386888
>>386884

>Как так сделать?


Так

>map.mask[4][12]

983 2386894
>>386888
Я хочу перед запуском игры в настройках менять размер карты и поэтому там придется ставить переменные. Но это запрещено. Как это исправить? Это же не должно ничего ломать, если объект структуры maps создавать после инициализации всех нужных переменных?
984 2386895
>>386894
Тебе нужна динамическая память?
985 2386896
>>386895
Наверное с её помощью можно сделать, но нет способа попроще? Мне же не нужно менять размер карты в ходе игры. Нужно менять только 1 раз до старта в настройках. Всё равно что define перед запуском поменять.
986 2386902
>>386896

>нет способа попроще?


Это самый простой.

>1 раз до старта в настройках


В каких настройках?

>define


Это константы, которые Си-код не может менять.
987 2386917
>>386902

>В каких настройках?


Которые я потом сделаю. Сейчас там просто значения переменной.

>Это константы, которые Си-код не может менять.


Я просто привел пример. Я хочу не залазить постоянно в код, чтобы #define lenght 30 поменять на #define lenght 50 , а хочу в красивом меню написать цифру 50.

>Это самый простой.


Почему нельзя в момент создания объекта структуры задать размер массива mask? Память же выделяется, когда ты пишешь struct maps map, а не когда просто объявляешь структуру. Это должен быть самый простой способ
988 2386931
>>386917

>создания объекта


>struct maps map


Это не создание объекта.

>Память же выделяется, когда ты пишешь


Она может выделиться когда угодно, главное, чтобы в момент выполнения этого кода она была.
989 2387159
>>386917

>Я хочу не залазить постоянно в код, чтобы #define lenght 30 поменять на #define lenght 50 , а хочу в красивом меню написать цифру 50.


#define maxlength 10000, а пользоваться в пределах значения length структуры.
990 2387465
>>386816
Это абсурдный код. Структура определяется объявлением, ты не можешь объявить одну структуру, а потом наплодить из неё разных структур лишь присваивая значения полям.

Думаю, ноги этой шизофазии растут из непонимания что такое компиляция, нативный код, долбоебом привыкшим к скриптовой динамикопараше.
16534207889820.jpg6 Кб, 241x209
dead 991 2387518
>>386894
#define ref(map,x,y) map->ptr[y@map->ysize + x]

Не блогодари.
992 2388500
Объясните, пожалуйста, почему результат функций и проверок в си выдаёт 1 как удачный, а во взаимодействии между программами и в ос 1 - это наоборот, ошибка? Почему это не унифицировали?

>>381700
http://cmustdie.com/
image11 Кб, 313x173
993 2388525
Узнали? Согласны?
dead 994 2388528
>>388500

>прочитал хуйню нихуя не понял


Функции в Си здорового человека должны возвращать -1 при ошибке (но NULL для указателя).
Тогда можно писать
if ((count = readall(fd)) < 0) {
close(fd);
return -1;
}

Вместо
if (readall(fd, &count) == MY_SMART_API_ERROR_RETURN) {
close(fd);
return MY_SMART_API_ERROR_RETURN;
}
995 2388939
>>388525
В чем косметический эффект
996 2389031
>>388939
Посмотри в ассемблер, там не будет копирования.
997 2389078
>>388500
Что и кто должен унифицировать? Разработчики компиляторов? Или те, кто стандарт выкатывают? Это вопрос конвенции, принятой в конкретном ПО на любом языке, не обязательно на Си. 228 будут возвращать on success, если захотят, и ничего ты им не скажешь.
998 2390196
Гарантируется ли, что все поля структуры идут сразу друг за другом, не считая выравнивания, т.е. что в неиспользованные промежутки ничего не запишется? Могут ли в эти промежутки записаться другие данные?
999 2390200
>>390196

>Гарантируется ли, что все поля структуры идут сразу друг за другом


Да.
1000 2390690
А как разрешить клопилятору переупорядочить сруктуру для наименьшего размера? Я часто так делаю вручную.
1001 2390731
>>390690
Никак и слава богам блять но можно заставить упаковать без паддинга. Хотя кажется тогда поешь говна с выравниваем.
image.png152 Кб, 1592x261
1002 2391984
Анон, что этой хуйне нужно?
Ебаная сишка, ебаная сборочная система, ебаная кросс-конпеляция каменного века
мимо растобог
1003 2392053
>>391984

>растобог


почему растобоги считают себя растобогами, если они на самом деле залупы?
image.png351 Кб, 1240x671
1004 2392351
>>391984
Сам нашёл. Просто добавь --verbose
Покроссконпелировал, нахуй, ебать, ваш сишный мирок убог, пиздец. Конпелятор решил, что эта инклуда - не инклуда, заебок. Как вы с этим живёте, вообще?
image.png400 Кб, 1262x740
1005 2392407
Охх, охх, горячо, ебать.
ПРОГРАММИРОВАНИЕ, блять
IMG20220629225252.jpg1,8 Мб, 3000x4000
1006 2392459
>>391984
>>392351
>>392407
Проблема была в битой симлинке, всем спасибо за внимание.
ещё немного поебаться и, глядишь, будет играбельно
1007 2392715
>>391984

>мимо растобог


Напиши на расте, в чем проблема?
1008 2392785
>>392715
За ради портирования игрули на арм машинку переписать её на расте получится немного оверкилл.
1009 2393570
Как сделать функцию, возвращающую указатель на массив 16 char?
Агргумент функции так: char (*name)[16]
А возвращаемое значение?
1010 2393900
>>393570
Это ж ёбаная сишка, будет просто char или ✵✵char
а вот на расте такое запросто
1011 2395910
>>393570
char✵ get_name() {
char✵ res = malloc(16 ✵ sizeof(char));
return res;
}

void del_name(char✵ v) {
free(v);
}

...
char✵ name = get_name();
...
del_name(v);
sage 1012 2396667
>>395910

>✵ sizeof(char)

1013 2396860
1014 2397776
>>396667
Думаю, он о том, что размер char на всех платформах равен 1 байту, и sizeof здесь просто лишний.
1015 2397810
Чем отличается signed char от unsigned char? Они места одинаково в памяти занимают? Есть какие-нибудь подводные камни применения знаковых чаров?
1016 2397836
>>397776
Ошибаешься, я о макаке залезшей в си не зная что такое байт, и еще код пишет.

>sizeof здесь просто лишний


Лишнего ничего нет, код полностью функционально полноценен, показывает что этому индусу в си не место. Потому что это не проблема кода, а проблема самого человека, дефективного способа мышления.
1017 2397868
>>397836

>пуууук


Лучше бы тред перекатили.
1018 2397937
>>397868
Учителю тоже так говоришь когда получаешь двойку?
1019 2398000
>>396860
>>397776

>>397836
Борцун с библиотеками, ты? Узнал тебя по твоим шизоидным высерам. Дефективность твоего мышления мы ранее уже выяснили, уж не тебе точно об этом судить.
1020 2398366
>>397810

>Есть какие-нибудь подводные камни применения знаковых чаров?


UB.
1021 2399014
Как правильно оформить суперминималистичную документацию для хеловорд библиотэки? Надо определить требования по аргументам, использованию возвращаемых значений, доступу к полям структур и т.д. и собрать где-то в одном месте, чтобы было красивенько, в комментариях не вариант. Как делают такое?
1022 2399106
>>399014

>Как делают такое?


doxygen
1023 2399209
>>399014
man man-pages
1024 2399457
Перекат >>2399452 (OP)
1025 2400306
есть видеокурсы нормальные какие-нибудь? собираюсь на торренте купить, а то из книжек с нуля даже хз что выбрать
1026 2400726
>>400306
K&R же, куда еще больше с нуля. Собственно с нуля другого выбора и нет.
1027 2400760
>>399457
Я осел, проебал тег. Перекатите уже кто-нибудь.
1028 2401177
>>400726
блин просто проблема в том что почему-то именно книги я не очень хорошо воспринимаю, поэтому и думаю может видеокурсы есть хорошие
1030 2404149
Что правильно (или лучше) делать, когда нужно получить несколько значений (в общем случае - разных типов) от функции? Запаковать в структуру на хипе и через указатель возвращать её с последующим высвобождением памяти в вызывающем коде? Звучит по-уебански, но ничего лучше я не придумол
1031 2404230
>>404149
можешь через аргументы ебануть.
объявил переменные вне функции, сам решил стек или хип, передал их указатели в функцию, функция по этим указателям все заполнила и вернула какой-то код (ошибка, либо все ок).
image58 Кб, 704x460
1032 2404548
>>404149
Структуру размером два слова почти все возвращают эффективно (на регистрах). Если больше, то передай указатель на локальный массив или структуру. Если совсем большая, выделяй в хипе.
1033 2404934
Тут пока смотрел видео на Ютубе, попался видос про паттерны.
И теперь у меня вопрос - а в любимой сишечке есть какие-то гайды про то как стоит/не стоит строить приложение в целом и почему?
Пока нашел только книжку
Patterns in C adam Thornhill
Но она платная.
1034 2404954
>>404934

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


Пахнет инфоцыганством.
Исторический принцип - чем меньше делает приложение, тем оно лучше.
1035 2405352
>>404934
керниган точно что то писал такое. в названии книги слово "практика" или "практический/ое"
1036 2406406
Хелло байтаны, извините за глупый нубский вопрос, кто из вас знаком с gdb и отладкой в нем кода - каким образом случился переход со строки 2204 (1787 к store_get отношения не имеет, там начало зацикленного блока кода)?
Плюс/минус первый раз взял в руки этот отладчик, прижало вкурить как exim парсит несколько специфических DKIM заголовков и чет приуныл
1037 2406428
>>392459
Что происходит на пикрил? Это эмулятор?
27401126468177901622740112640048288707.jpg320 Кб, 1080x1350
1038 2406440
>>332364
WSL же только от 10 и выше?
1039 2406471
>>406406
Выглядит как то, что исходник поменялся а бинарник остался тем-же. Попробуй там перекомпилить и запустить или lldb или что ещё использовать, если не починится
image.png251 Кб, 347x364
1040 2406475
>>406406
На всякий случай пересобрал без оптимизаций, но все равно такой же прыжок там после присвоений/обнулений еще куча if блоков, должны же они были проверится?((
1041 2406482
>>406471
Возможно это все проделки RHEL-овского rpmbuild..
Покурю немного его SPEC файл и попробую ручную пересборку / LLVM-ный дебагер, спасибо
1042 2406866
++
1043 2406883
>>406406
>>406475
>>406482
В общем отказался от идеи собрать из src.rpm что безусловно было бы удобно - бахнул rpmbuild и вот тебе на выходе и бинарный пакетик, и debuginfo, и всем этим можно жонглировать пакетным менеджером в пользу старого доброго git-а + make + install. Пришлось конечно поприседать с ручной установкой зависимостей, путями/конфигами, но зато удалось добиться нормального поведения в отладчике - на этом все, спасибо помогавшему анону
1044 2407331
>>386166
Зачем эта параша нужна, когда у тебя системная параша будет вся в unsafe'ах, а пруфать ты нихуя не будешь, история с раст белтом просто охуенно показательна.
image.png202 Кб, 512x512
1045 2407677
>>407331

>история с раст белтом


а что за история?
1046 2408226
>>407677
Ну челики из этого проекта по первой находили баги во всяких мьютексах из стдлиба.
1047 2408397
Заранее прошу прощения, если несу хуйню и путаюсь в терминологии, хотя вроде не должен. Приму конструктивную критику и пойду курить дальше.

Пишу свой двухколёсный дебаггер. Вот есть процесс, ему соответствует программа и слинкованные с ней в рантайме библиотеки (libc, ld и прочее); сегменты программы загружены в выделенную процессу память, библиотеки отображены и я всю эту красоту могу наблюдать в /proc/{pid}/maps.
Всё, что мне нужно сделать, это найти запись в таблице символов файла программы/библиотеки по адресу вызванной функции. Я парсю инфу о сегментах из /proc/{pid}/maps, смотрю, какой сегмент соответствует адресу функции и для соответствующего имени файла с помощью libelf подгружаю нужные мне заголовки.
Дальше это работает так:
https://pastebin.com/0rLUpUWF
(код сырой; на данном этапе нужно было, чтобы это просто работало)
data содержит маппинг файла программы/библиотеки, addr = адрес_функции - адрес_сегмента.
Для самого executable код вроде работает, но не для слинкованных с ним либ. Что я упускаю?
16272412282490.png2 Мб, 1000x1777
1048 2408399
Мой gcc в составе minGW под винду создает a.exe из любого моего хеллоуворлда. Как сделать чтобы имя эксешника было идентично имени .с файла?
1049 2408412
>>408399
gcc -o name huita.c
1050 2409964
>>408412
сделал как ты сказал, теперь у меня вместо a.exe файл с названием name
а мне надо чтобы была huita
1051 2409978
>>409964
Толсто.
1052 2410023
>>409964
В полноценных ОС это решается makе.

CC=gcc
CFLAGS=-O -Wall

huita: huita.c
1053 2410354
>>408399
Короче правой кнопкой щелкни получившийся файл, нажми в выпадающем меню кнопку Переименовать. Способ удобен тем что ты можешь назвать файл как ты захочешь и когда захочешь, этих даунов не слушай, они промыты пропагандой командной строки, будущее за графическим интерфейсом.
1054 2411273
>>297526 (OP)
Какой самый свежий и понятный учебник на русском?
1055 2411885
>>411273
BeginEnd. Это канал на ютабе, там Антон всё рассказывает в плейлисте по C.
1056 2412058
есть ли по си каналы на трубе типа tsoding? Он просто пиздец в эзотерику ударился какую-то.
1057 2413265
Где перекат?
1058 2413350
>>413265
Зачем?
1059 2414745
>>412058
А мне нравятся его теперешние стримы, особенно по templeOS, да и сам он чел крутой. Правда в хохлошизу ударился поле 24, но это ничего страшного.
1060 2414972
int main()
{
int x,y;
int i;

printf("input x=");
scanf("%d", &x);
printf("input y=");
scanf("%d", &y);

printf("oper: \n1 = \n2 = +\nselect code = ");
scanf("%d", &i);

if (i == 1);
printf("%d
%d = %d", x, y, x * y);

if (i == 2);
printf("%d + %d = %d", x, y, x + y);

return 0;
}

Делал калькулятор, он считает какую-то хуйню, что я там не так написал?
1061 2414995
>>414972
Всё, нашел
sharedimage.png177 Кб, 750x1334
1062 2415869
>>297526 (OP)
Анчоусы, как вообще грамотно переводится "address offset" и "stack base pointer"? Я просто далек от С и машинных кодов, а гуглеж ещё больше запутал.
Как понять значение фразы: "This movl (команда такая, это я уже сам понял) is moving this value into this thing which is actually address of offset. So %rbp is the stack base pointer..."
1063 2415891
>>297526 (OP)

>fatal error: 'stdio.h' file not found


Из-за чего это? Могло или это быть из-за отсутствия gcc?
Вроде я уже устанавливал Cygwin
101101110.jpeg466 Кб, 1459x974
1064 2416303
>>297526 (OP)

>- Стандарт 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 (драфт)



Есть годный разбор отличий? На старой идеешке код не компилится, надо бы понять почему. Не вручную же различия стандартов выявлять?
1065 2416613
>>416303
Конпелятор ошибок уже не выдает?
1066 2416947
>>415869
Возьмись лучше за перевод рецептов.
1067 2417684
Привет, Анон.
Мне очень нравится "низкоуровневое" программирование, нравится С, нравится изучать операционки и всё что связано с сетью.

Но я не могу для себя понять, какова область применения у языка в целом и какие существуют вакансии в реальном мире в этой области? Может вы что-то подскажите, отталкиваясь от интересов, которые указал выше, куда мне стоит двигаться и как искать что-то подобное в плане работы? Заранее благодарю.
1068 2417813
>>417684

>какова область применения у языка в целом и какие существуют вакансии в реальном мире в этой области


Никаких, ты умрешь с голода, если будель писать на Си.
>>417684

>куда мне стоит двигаться и как искать что-то подобное в плане работы?


Пробовать вкатиться в ОС проекты, а после пилить деньги с пожертвований крупных корпораций.
1069 2417815
>>416613
А по сути будет что-то? Или сам не знаешь?
1070 2418108
>>417815
Блин, прошу прощения, промахнулся. Это вот этому джентльмену предназначалось:
>>416947
1071 2418128
Хелпаните по сокетам.
Есть несколько адресов и один порт. На все это дело шлется udp инфа с сервера, и есть клиент который читает данные с этих сокетов каждый в отдельном треде
Че я делаю: создаю для каждого треда отдельный сокет, ставлю setsockopt опцию реюза для порта, бинжу адрес INADDR_ANY и моим портом, потом ставлю setsockopt опцию с адресом уже конкретным
Собсно я че то не так делаю или в логике какая то проблема? Потому что у меня каждый тред читает все адреса вместо одного конкретного
1072 2418211
Анон, вкатился в эмбедед, пытаюсь ковырять байты, вкатываюсь в RTOS потихоньку. Но щас понимаю что вообще почти ничего не знаю о компиляции. Даже простой мейкфайл наверное не смогу сделать, а тут еще и диплом по графам потока управления дали. Где лучше почитать инфу про все это чтоб вкатиться? Есть книги какие или источники мб?
1073 2418225
>>418128

>в отдельном треде


Пиши на питоне.

>в логике какая то проблема?


В знаниях.
1074 2418250
>>418225
Ну э ты подсказать не можешь?
1075 2418352
>>418128
Ничего не понял. Ты клиентский сокет биндишь?
1076 2418376
>>418352
Да, с сервер посылает udp на разные адреса с одним и тем же портом
Клиент все это читает и проблема только в нем
1077 2420015
https://github.com/torvalds/linux/blob/master/Documentation/networking/tls.rst
Кто использовал, какие подводные?
1078 2420827
>>417684
Драйвера, ОС, ядро.
Вроде еще контролёры бывают, но это не точно
1079 2421838
Объясните пожалуйста.
Вот есть сортировка слиянием, на этапе когда нужно найти середину массива имеется формула m=l+(r-l)/2.
Но не пойму, почему не просто m=(r-l)/2? Зачем +l еще?
1080 2421969
>>421838
затем, что l может быть не равным 0. Какая середина для l = 6, r = 10? посмотри по какой из твоих формул она корректно находится
1081 2421979
такой вопрос. когда начался курс ооп на плюсах попался не самый требовательный препод (на похуй вела в принципе, но чето рассказывала). но вопрос сишный
короче запомнил от неё, что для размеров массива лучше всегда использовать size_t, звучит разумно.
точно формулировку не помню, но как-то все это перешло в то, что я почти год писал циклы for используя size_t(for (size_t i = 0...blabla)
только сегодня услышал, что не рекомендуется использовать беззнаковый тип в условии цикла фор (при size = 10: size_t i =0; i < size - 11... будет бесконечный цикл из-за переполнения) , но источник тоже так себе(видос на ютубе - отрывок со стрима)

так вот, всё таки че использовать в цикле, тупо int? выгдядит как то хз
для размера массива вроде size_t нигде плохо не влияет
1082 2422100
>>415891
добавлю, что пытался запусить код в
codeblocks-20.03
1083 2422138
>>421969
А, мысль не туда заворачивалась, теперь увидел,спасибо.
1084 2422365
>>421979
for (size_t i = 100; i != SIZE_MAX; i--)
1085 2422389
если переменная в функции не меняется, внутри какой нибудь принт или просто обработка значений, то нужно ли явно в сигнатуре прописывать, что переменная const? является ли это хорошим тоном или же загромождает код
1086 2422391
>>422365
и что это значит? вопрос про любой стандартный обход с нуля до значения какой то переменной, а не вырожденный случай. действительно ли плохо i делать беззнаковым или это сильно редко приводит к ошибкам
1087 2422543
>>422389
Это не хороший тон. А очень хорошая практика, и её нужно использовать всегда. Во-первых, это обезопасит твой код от случайных и нарочных выстрелов в ногу. Во-вторых, покажет пользователю функции что она никак не изменит переменную, а следовательно безопасна на чтение, ну если у тебя в нескольких потоках идет работа. Ну и в третьих расширит применение твоей функции, ведь её можно будет вызывать как для волатильных переменных так и для константных
Ну и один спецификатор в 5 букв. Как это загромождать что то может
1088 2422568
Учу C, запускаю примеры программ в песочнице Sololearn и как то всрато оно работает и запускается там. Почему? https://www.onlinegdb.com/online_c_compiler - перешел сюда.
1089 2422577
Посоветуйте годные видеоуроки по С. Можно и на англе.
1090 2422638
>>422577
Читать быстрее же. Но я когда только вкатывался смотрел видосы narodstream т.к. работал тогда за рулем много и не было возможности читать.
1091 2422904
>>422638
Я наоборот из тех людей, у которых КПД при чтении книг ниже, чем при разборе лекций и видосов.
1092 2423205
>>422904
Просто чтение книги должно сопровождаться какими-то действиями по теме. Если просто читать то канеш ничего особо не усвоишь.
1093 2423628
>>422389
Если оно не меняется, это константа.
const можешь навесить, если внутренний голос подсказывает тебе, что какой-нибудь долбоеб, не разрбравшись в 100 строках макарон с goto, рано или поздно присвоет твоему pi новое значение. В остальных случаях это сомнительная практика.
1094 2423734
>>422391
У тя массив или заведомо маленький (< 30000) или нет.
В первом случае можешь брать инт. Во втором что-то большее, что подходит: for (long l = bigsize; --l >= 0; )
1095 2423823
есть у кого вменяемая реализация map на сях?
1096 2424019
>>422389

>является ли это хорошим тоном


Только для указателей.

>загромождает код


Для всего, кроме указателей.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 4 августа 2022 года.

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

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