Главная Юзердоски Каталог Трекер NSFW Настройки

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 1129 146 339
C Programming Language #73 /clang/ Аноним # OP 15/02/22 Втр 03:43:30 2297526 1
image.png 106Кб, 1200x1276
1200x1276
image.png 325Кб, 1442x587
1442x587
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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)
Аноним # OP 15/02/22 Втр 03:45:50 2297528 2
image.png 300Кб, 500x631
500x631
Аноним 15/02/22 Втр 04:44:03 2297537 3
Привет. Ну накоенц-то!

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

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

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

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

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

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

Поехали!
Аноним 15/02/22 Втр 08:58:46 2297578 4
>>2297537
>Вместо Си можно подставить Паскаль, потому что разница между ними ничтожна и заключается лишь в синтаксисе - они близнецы и братья.
Нельзя, не братья, не близнецы.

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

>С++ это "Си на стероидах".
С++ это язык с Си синтаксисом, все.

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

>ТЫ МОЖЕШЬ НЕ ЛЮБИТЬ ЯЗЫК СИ, НО ЗНАТЬ ЕГО ОБЯЗАН.
Нет.
Аноним 15/02/22 Втр 11:12:43 2297651 5
>>2297578
>Нельзя, не братья, не близнецы.
Абсолютные близнецы. За исключением множеств, оператора with и пары других мелочей.

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

>Зачем собирать программу чужим компилятором? Можно статистику про 90%?
Даже больше 90%. Обратная совсестимость С++ с Си весьма и весьма хороша. Не используй K&R стиль объявления функции и будет тебе счастье.
Аноним 15/02/22 Втр 11:26:02 2297662 6
Пишу в эпичном
Аноним 15/02/22 Втр 12:38:22 2297729 7
Аноним 15/02/22 Втр 13:17:04 2297775 8
>>2297537
Си и Паскаль хороши для обучения.
Аноним 15/02/22 Втр 13:57:32 2297834 9
>>2297775
Вот именно. Без понимаюния как это работает программы жрут память как не в себя, жрут процессорное время, постоянно переписывая сктроки по памяти. Они (программы) ещё бы и падали на каждом шагу, но современные языки неплохо защищены от этого - концепция и хорошая ранняя диагностика. Поэтому современные программы просто тупо жрут дешёвые нынче вычислительнык ресурсы, электроэнерги. и худо-бедно выполняют своё предназначение, попутно обогревая окружающую среду.

А всё это покрывается волшебной аббревиатурой TTM - Time To Market. Главное вывести своё говно на рынок, а там уже техподдержка разрулит инциденты. Вот в таком мире нынче живём.
Аноним 15/02/22 Втр 14:19:02 2297872 10
>>2297651
>Абсолютные близнецы. За исключением множеств, оператора with и пары других мелочей.
Что у них общего, кроме простых типов?

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

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

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

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

Иногда мне кажется, что тут работают боты, которых проверяют студенты, вроде они тебе отвечают, но смысла в их ответах нет. Сообщения выглядят, как склейка сообщений с каких-то форумов.
Аноним 15/02/22 Втр 14:48:01 2297935 11
image.png 8Кб, 290x132
290x132
>>2297872
>Что у них общего, кроме простых типов?
Ну как тебе объяснить, если ты на обеих не программируешь?
Перечисления, циклы, указатели, указатели на функции, структуры/рекорды. Всё, что есть в одном, есть и в другом.

Тип 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 лет ни разу не видел сырцов в таком стиле.

Аноним 15/02/22 Втр 15:31:48 2297992 12
>>2297935
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, получше, а так да, один язык можно сказать.
>
Аноним 15/02/22 Втр 16:39:45 2298086 13
>>2297992
>>example-1.c:9:19: error: invalid conversion from 'void' to 'char'
Ну так строгое приведение типов. Всё нормально. Так и должно быть. Ты, кстати, там ошибку допустил
sizeof * a

>>2297992
>>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 вне комментариев?

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


Аноним 15/02/22 Втр 17:12:51 2298135 14
>>2298086
>sizeof a
sizeof
a == sizeof(a), но если ты про выделение памяти, то да там памяти выделяется в sizeof a раз больше.

>А теперь напомню изначальный посыл:
А я думал такой >>2297537
>Итак, суть этого поста - ТЫ МОЖЕШЬ НЕ ЛЮБИТЬ ЯЗЫК СИ, НО ЗНАТЬ ЕГО ОБЯЗАН. Ты даже можешь его ненавидеть, но знать обязан. Иначе ты не программист, а приживала, зря едящий свой хлеб.
Аноним 15/02/22 Втр 17:44:16 2298173 15
>>2298135
Ну да, знания Си это обязательное условие.
Аноним 15/02/22 Втр 18:04:22 2298204 16
Аноним 15/02/22 Втр 18:05:45 2298208 17
>>2297834
Да и похуй. Кого это волновать должно вообще? Айти-индустрия – в основном – гигантский распил бабла государствами и корпорациями.
Аноним 15/02/22 Втр 18:23:02 2298240 18
>>2298204
Чтобы не превратиться в дикарей, поклоняющихся чудо-машине, использующих её, но не понимающих как она работает.
Чтобы писать оптимальные программы.
Чтобы знать алгоритмы, а не тупо использовать очередной 100500-й модный фремворк, который через полгода устареет и будет заменён ещё более модным фреймворком.
Аноним 15/02/22 Втр 18:24:57 2298247 19
>>2298208
>Кого это волновать должно вообще?
Меня, "деда", волнует. Я начинал с восьмибытных компьютеров.
Аноним 15/02/22 Втр 18:25:27 2298248 20
>>2298247
>восьмибытных
восмибитных
Аноним 15/02/22 Втр 18:46:11 2298269 21
>>2298240
>Чтобы не превратиться в дикарей, поклоняющихся чудо-машине, использующих её, но не понимающих как она работает.
Знание C, никак не помогает в понимании, как работает вычислительная машина.

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

>Чтобы знать алгоритмы, а не тупо использовать очередной 100500-й модный фремворк, который через полгода устареет и будет заменён ещё более модным фреймворком.
Хорошие разработчики понимают алгоритмы, не важно на каком языке они пишут, если программист не может в алгоритмы в сфере, в которой он работает - это хуевый программист.
Аноним 15/02/22 Втр 19:32:11 2298308 22
image.png 67Кб, 894x840
894x840
>>2298269
>Знание C, никак не помогает в понимании, как работает вычислительная машина.
Си это в некотором роде высокоуровневый ассемблер. Хорошо помогает. Картинка в подтверждение.

Сейчас меня студенты спалят. На картинке, разумеется, просто кусок учебного материала из лекции. А то ещё подумаете что в рабочих проектах так называю переменные.
Аноним 15/02/22 Втр 19:50:42 2298324 23
Аноним 15/02/22 Втр 20:00:46 2298333 24
>>2298308
>Си это в некотором роде высокоуровневый ассемблер. Хорошо помогает. Картинка в подтверждение.
Я с этим и не спорил, но C и близко не дает понимание того, как работают вычислительные машины. Он дает базовые понимания того, как работать с памятью и операционной системой, сама стандартная библиотека C, заканчивается на моменте, когда нужно сделать что-то большее, чем чтение и запись памяти. Все остальное реализуется через системные вызовы.
Аноним 15/02/22 Втр 21:06:12 2298388 25
>>2297992
>example-2.c
Ну так-то implicit int ещё с C99 запрещён, это тебе повезло, что твой компилятор тебя с ним нахуй не шлёт.
Аноним 15/02/22 Втр 21:36:53 2298410 26
>>2298388
Если бы послал, я бы собирал с -std=c89, никаких проблем.
Аноним 15/02/22 Втр 21:50:40 2298419 27
>>2298240
>Чтобы не превратиться в дикарей, поклоняющихся чудо-машине, использующих её, но не понимающих как она работает.
Ты чтоль понимаешь, если ебешься с сями?) ебло бля) Ты давно смотрел как там и что проектируют и собирают в проце и памяти, чтоб уверенно заявлять как оно там все на самом деле работает. Тоже мне не каргокультист епта)) пхах
Аноним 15/02/22 Втр 22:09:15 2298435 28
>>2298333
Красиво написал, так я подумал. А потом увидел что это трипл и все понял.
Аноним 15/02/22 Втр 22:13:23 2298436 29
>>2298419
Мне кажется уже ни кто этого достоверно не знает. Только эмпирическим путем можно установить производительность того или иного кода. Даже ассемблерного.
Аноним 16/02/22 Срд 09:21:43 2298631 30
>>2298240
Мыслишь верно, но выводу >>2298173 неверные.
Дело в том, что нельзя превратиться в дикарей, так же как нельзя перестать быть дикарями. Человек не меняется. кем родился, тем и помрет. Личность фиксирована как минимум с момента рождения.

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

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

>>2298631
Не робот, а черепашка лого.
Аноним 16/02/22 Срд 10:54:06 2298664 32
>>2298631
>Чено нельзя допускать, это только пердольные мваня языки типа всяких хачкелов
В таком случае развитие языков застрянет на текущем уровне. Все инновации, виртуальная машина, сборка мусора, абстрактные типы данных, условный оператор с плечами вместо goto, итераторы, - всё это впервые появилось в, как ты выражаешься, "мваня языках".
Аноним 16/02/22 Срд 11:02:28 2298671 33
>>2298664
Развитием языков занимаются профессионалы, а речь про обучаемую школоту. Вот типичный пример тупого дегенерата, которые в этом пердольном говне валяются. Не может элементарно прочитать текст, про что написано, а тупо триггерится на отдельные слова и пукает мимо кассы. Вот такое вот никак нельзя воспитывать намеренно, преподавать в школе, иначе жто уже не школа, а детсад дегенерации.
Аноним 16/02/22 Срд 11:04:29 2298672 34
>>2297992
>C# и C - это братья языки близнецы, все что есть в одном есть и в другом

Ты в слове Java допустил 4 ошибки. C# близнец с Java. Хоть и имеет Си-подобный синтаксис.
Аноним 16/02/22 Срд 11:16:28 2298681 35
>>2298672
>Ты в слове Java допустил 4 ошибки. C# близнец с Java. Хоть и имеет Си-подобный синтаксис.
К чему ты это?
Аноним 16/02/22 Срд 11:21:05 2298684 36
>>2298672
Мимо проходил. В джаве нет и половины фич сишарпа, похожи они только принудительным ООП, LINQ и Streams и ключевыми словами, кек. Никак не близнецы
Аноним 16/02/22 Срд 11:26:23 2298690 37
>>2298684

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

Сссссссссука, когда уже за это расстреливать будут? Это худшее, что вообще случилось в кодинге, на одном уровне с засилием жээса.
Аноним 16/02/22 Срд 11:29:09 2298692 38
>>2298690
Если тебе не нравится принудительный ООП, ты можешь просто использовать классы, как пространства имен.
Аноним 16/02/22 Срд 11:34:47 2298693 39
>>2298692
> если не нравится ебаться в жопу, ебись тогда в жопу но на пол шишки
Аноним 16/02/22 Срд 14:22:28 2298844 40
>>2298693
>вместо меня код пишет язык
Тут сайт 18+ для самостоятельных людей. Пиздюкам не умеющим жить без мамкиной юбки и дегенератам не вырасшим из детских штанишек просьба проследовать нахуй в сишарп/джава/жс/питон тред

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

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

https://2ch.hk/sex/res/8141622.html

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

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

У инцела тревожное расстройство вследствие воспитания в однополой семье "мать плюс бабушка". У Дениса Бурхаева было ещё хуже: мать + бабка + сестра матери, они втроём пытались его воспитать даже не образцовым пионером, а образцовой пионеркой. Поскольку двачер потратил молодость на умственное, а не физическое развитие, да ещё и мать с бабкой стращали его, дрессировали и запугивали, то получился результат, как на картинке 1. Рост — средний по популяции, астеник, есть дефицит массы тела, одна кожа да кости. Драться не умеет
Аноним 16/02/22 Срд 15:04:50 2298903 42
>>2298844
>Наверное к тому, сто си и с# не имеют ничего общего от слова совсем.
Наверное, ты один из ботов, которых пишут студенты и проверяют тут, да? Все еще не можете в анализ естественных языков? Прочитай ветку и пойми, что это была ирония о том, что другой анон писал, что C и паскаль - это языки близнецы, только потому что в них есть перечисления и простые типы.
Аноним 16/02/22 Срд 16:28:28 2298970 43
>>2298881
Какие-то стереотипы миллионлетней давности, что программист - это нерд-аутист-скряга, хотя еще с 90х эта профессия для всех желающих, и среди прогораммистов можно встретить кого угодно от нерда, до гопника, от кочки до богемного хипстора, хотя 90% - обычные офисные васяны.

>да ещё и мать с бабкой стращали его, дрессировали и запугивали
Лолшто? Обычно в таких семьях сынуличке жопу вытирают и сюсюкают аж до свадьбы, пока овоща не передадут на сохранение другой бабе, и пусть только попробует ему жопу неправильно подтирать нашему золотцу, тупая блядина.
Аноним 16/02/22 Срд 16:57:44 2299011 44
>>2298881
>/sex
>Нытье и оправдания инцела.
Зачем ты сюда принес?
Аноним 16/02/22 Срд 17:07:42 2299021 45
>>2298671
А профессионалы, едва им после рождения перерезают пуповину, сразу начинают пейперы хуячить в научные журналы, так тебя надо понимать, максималистичный юноша?
Аноним 16/02/22 Срд 23:21:06 2299407 46
>>2299021
Профессионалов не лепят как говно из глины в школе, они ими сами становятся, и уже далеко не в школе, а во взрослой жизни. А лепят только тупорылое пердольное говно, потому что само по себе говно безмозглое и бесполезное, ничего не иожет. Поэтому и не нужно лепить, пердосрани нет места в школе, если нет цели наплодить выродков.
Аноним 16/02/22 Срд 23:51:47 2299435 47
>>2298903
Си и Паскаль это близнецы, тут нет никакой иронии. Разве что Паскать дубовый, т.к. предназначен для учебы, типа строго воспитывать стиль кода. Но функционирует от точно так же как Си и С++, т.е. является их прямым эквивалентом, просто он неактуален по причине дурацких идей в его дизайне озвученных выше.
Аноним 17/02/22 Чтв 07:47:33 2299561 48
>>2299435
Такие близнецы, что на момент появления первой, во второй не было ни динамических массивов, ни управления динамической памятью, ни нетипизированных указателей и тд. Покормил.
То что ноги растут у обоих из алгола, не делает их близнецами.
Аноним 17/02/22 Чтв 17:15:48 2300070 49
>>2299561
На момент появление на свет, ты не мог ни башкой думать, ни разговаривать, а мог только орать и пачкать пеленки. Так зачем рот тут открываешь? Покормил.
Аноним 17/02/22 Чтв 17:23:12 2300078 50
>>2300070
Всех переиграл, как конем по нотам - сразу верб, близнецы.
Аноним 17/02/22 Чтв 18:25:36 2300162 51
>>2299561
>нетипизированных указателей
Ну хоть в чем-то паскаль был лучше. Не знаю как сейчас, но искренне надеюсь что они их вводить не стали.

Что-то на уровне полезности NULL. И множественного наследования.
Аноним 17/02/22 Чтв 19:34:04 2300224 52
>>2300162
>надеюсь что они их вводить не стали
Turbo Pascal сделал все как у взрослых.
Аноним 17/02/22 Чтв 19:59:07 2300254 53
>>2300224
Не напоминай. Вот же годная вещь была - компиляция в памяти это нечто божественное. И хоть я приверженец Си, но Турбо Паскаль вспоминаю с любовью. Годнота была.
Аноним 17/02/22 Чтв 22:37:34 2300387 54
>>2299407
>Профессионалов не лепят как говно из глины в школе, они ими сами становятся
А становятся они таковыми по двадцать лет хуяча на языках, "реально применимых на практике", правильно я тебя понял?
Аноним 17/02/22 Чтв 23:02:29 2300406 55
>>2297526 (OP)
Доброго вечера, си боги. Хочу адски въебать computer science, и я так понимаю мне нужен си. Есть какая нибудь книжка совсем для грудничков? Что бы параллельно учить both hardware & software части
Аноним 18/02/22 Птн 00:45:03 2300464 56
>>2300254
>компиляция в памяти это нечто божественное
Имеешь ввиду компиляция сразу в бинарник, без этапа создания объектных файлов? Если да, то можно вспомнить что объектные файлы могут пригодиться для инкрементальной компиляции.
Аноним 18/02/22 Птн 07:08:20 2300518 57
image.png 463Кб, 1280x720
1280x720
>>2300464
>Имеешь ввиду компиляция сразу в бинарник, без этапа создания объектных файлов?
Нет. Имеется в виду компиляция в память, без создания исполняемого файла. Т.е. это было похоже на интерпретатор, с отличием в том, что программа всё же компилировалась, но только исполняемый код был в оперативной памяти и не писался на диск.
Это имело смысл, посколько IDE HDD были очень очень очень очень очень медленными.
Аноним 18/02/22 Птн 07:23:54 2300519 58
>>2300518
Вы прослушали пориджные шизофантазии. Спасибо за внимание.
Аноним 18/02/22 Птн 08:08:55 2300523 59
Спешите видеть - тупой защеканец высказал своё бесполезное мнение - >>2300519

Спросите меня: "А почему он тупой?" Да потому что не ведает вырожденец о чём толкует. Дядя этому хуйлу и адекватным анонампринёс картинку, чтобы оно, хуйло, посмотрело своими мутными красными глазами на пункт меню "Destination Memory", но вонючая субстанция в его наплечной параше неспособна осознать очевидные вещи, оно увидело первый раз в жизни Turbo Pascal на этой картинке и нихуя не поняло.
Аноним 18/02/22 Птн 08:51:55 2300528 60
>>2300523
Поридж даже не понял о чем речь. Пытается махать незначительной фигней, не замечая что штаны спили и на самом деле размахивает своим достоинством на потеху публике.
Аноним 18/02/22 Птн 09:29:44 2300538 61
>>2300518

Поздравляю, ты изобрёл JIT. Точнее, борланд его юзал, когда это ещё не было мейнстримом :)
Аноним 18/02/22 Птн 09:31:10 2300540 62
>>2300254
>была - компиляция в памяти это нечто божественное.
Это архаизм на самом деле: так работали первые поколения компов без ОС и релоцируемых программ, с однопроходным ассемблером. Подозреваю ТурбоПаскаль выдавал что то типа досовского com файла - там простейший формат, по сути дамп памяти, который грузится всегда в одно место.
Аноним 18/02/22 Птн 09:32:16 2300541 63
Аноним 18/02/22 Птн 09:52:12 2300548 64
>>2300540
Это всё понятно, но это работало охуительно. И приятно.

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

Аноним 18/02/22 Птн 09:53:21 2300549 65
>>2300406
>hardware & software
>для грудничков
Ну попробуй Таненбаум "Архитектура компьютера" и потом Керриска "Linux api. Исчерпывающее руководство"
Аноним 18/02/22 Птн 09:58:39 2300552 66
>>2300540
Ну так сходить в магазин заказать онлайн и открыть дверь курьеру не было возможности, вот и крутились как могли.
Аноним 18/02/22 Птн 17:53:15 2301003 67
>>2300549
>Таненбаум "Архитектура компьютера"
Я сам не читал, но вот тут ее не очень любят видимо. Говорят она башню из слоновой кости строит.
https://habr.com/ru/post/589091/
Аноним 18/02/22 Птн 18:23:42 2301047 68
>>2301003

https://youtu.be/GPv8coYl3cE

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

Без практики, без реального компилятора изучать нет смысла.
Аноним 18/02/22 Птн 21:42:36 2301205 69
Вопрос - атомарен ли инкремент на x64 архитектуре? Есть ли а С11 атомарные типы, кроме sig_atomic_t?
Аноним 19/02/22 Суб 21:31:17 2301797 70
Аноним 19/02/22 Суб 22:33:04 2301854 71
Аноним 20/02/22 Вск 18:00:06 2302662 72
Давайте уточним, на дворе все-таки 2022.
Я до сих пор не могу сделать массив (VLA запрещены)
int arr[N], где N это не макрохуйня и не литерал
да?
Аноним 20/02/22 Вск 18:38:21 2302732 73
>>2302662
Язык "Ванга" Не в этом треде.
Аноним 20/02/22 Вск 19:09:06 2302792 74
>>2302662
Я конечно извиняюсь, а что такого особенного в 2022, что такие фундаментальные вещи должны ломать?
Аноним 20/02/22 Вск 19:54:26 2302840 75
>>2302732
Не понял.
>>2302792
Ломать? Ломать создание int a[5]; ни в коем случае не стоит.
А можно позязя
int main()
{
static const size_t a = 12;
int arr[a];
}
? Ну позязя!
Аноним 20/02/22 Вск 20:29:03 2302870 76
>>2302840
Вангую потому что она не тру конст, у нее есть локация в памяти, теоретически ее может переписать (да это UB и надо что-то типа снятия защиты записи на страницу памяти?)
const int a = 12;
intp = &a;
p = 42;
В отличии от тру конст, которая сразу пойдет операндом в машинную инструкцию (хотя, конечно, ее тоже можно перезаписать, лол)
Аноним 20/02/22 Вск 21:02:18 2302898 77
>>2302662

Записывай:

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

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

arr[0] = 100;
arr[1] = 100;
Аноним 20/02/22 Вск 22:16:16 2302947 78
Аноним 20/02/22 Вск 22:24:00 2302954 79
>>2302947
это и есть на стеке
Аноним 20/02/22 Вск 23:10:32 2302990 80
>>2302954
а епт, глаза ебуться, чет показалось что там обычный malloc
Аноним 21/02/22 Пнд 00:26:37 2303035 81
>>2302947
А стек не закончится?
Аноним 21/02/22 Пнд 00:32:37 2303038 82
>>2303035
Закончится, ты будешь виноват. На си пишешь, а не на питоне.
Аноним 21/02/22 Пнд 11:52:08 2303237 83
2022-02-21-1151[...].png 5Кб, 348x287
348x287
>>2302840
>А можно позязя
Да ради б-га.
Аноним 21/02/22 Пнд 15:05:11 2303398 84
>>2303038
Закончится - расширим, хуле нам, питонистам
Аноним 21/02/22 Пнд 15:50:00 2303449 85
>>2303398
В питоне нет стека.
Аноним 21/02/22 Пнд 16:12:27 2303464 86
image 36Кб, 817x550
817x550
пасаны, поясните пожалуйста
Аноним 21/02/22 Пнд 16:21:28 2303475 87
Аноним 21/02/22 Пнд 16:23:28 2303478 88
Аноним 21/02/22 Пнд 16:27:56 2303483 89
>>2303464
Проблема у тебя, gcc собирает.
Аноним 21/02/22 Пнд 16:30:15 2303484 90
>>2303483
я знаю что некоторые собирают, мне интересно почему именно тут так
Аноним 21/02/22 Пнд 16:32:06 2303486 91
>>2303478
И все. unsigned char 0..255, char -128..127
Аноним 21/02/22 Пнд 16:33:29 2303489 92
>>2303464
Я уж молчу что читать память дальше переменной вообще, скорее всего UB.
Аноним 21/02/22 Пнд 16:34:51 2303493 93
>>2303486
>char -128..127
char в винде беззнаковый.
Аноним 21/02/22 Пнд 16:35:52 2303497 94
>>2303486
Так какая разница, вмещается же. Я его как знаковое вывожу.
Аноним 21/02/22 Пнд 16:36:05 2303498 95
Аноним 21/02/22 Пнд 16:37:54 2303504 96
>>2303489
но если сделать не +1 а -1 например то всё заебись
Аноним 21/02/22 Пнд 16:42:48 2303510 97
>>2303493
>>2303498
https://docs.microsoft.com/ru-ru/cpp/c-language/type-char
Хотя сейчас погуглил, как я понял знаковость изменяется флагом комплиятора, но насколько я помню по умолчанию он стоит всегда на беззнаковые, а проект называется Project1, поэтому я думаю, что там используется беззнаковый.
Аноним 21/02/22 Пнд 16:47:04 2303516 98
>>2303510
но знаковость играет роль только при операциях с ними, не при выводе же
Аноним 21/02/22 Пнд 16:47:41 2303518 99
1496866144145.png 4Кб, 283x77
283x77
>>2303504
Ладно я сдаюсь
Может быть проблема в аргументе printf?
Аноним 21/02/22 Пнд 16:51:54 2303523 100
>>2303516
Он в любом случае неявно приводиться должен.
Аноним 21/02/22 Пнд 16:54:09 2303526 101
>>2303518
У тебя "c" русская или английская? Вроде студийный компилятор должен уметь в кириллицу в коде.
Аноним 21/02/22 Пнд 17:00:01 2303530 102
Аноны, а как вы указываете тип переменной? Стандартной хуйне в виде "int, long long, ...." или же как это сделано в расте, чтобы было видно количество байт "u8, u64,..."
Где вообще можно об этом почитать?
Аноним 21/02/22 Пнд 17:05:00 2303543 103
>>2303530
Видеть количество байт нужно только во всяких криптографических и прочих алгоритмах. В остальном достаточно базовых типов, главное для размеров использовать size_t, а для разницы указателей ptrdiff_t.
Аноним 21/02/22 Пнд 17:06:12 2303546 104
image 18Кб, 753x234
753x234
>>2303518
чем дальше тем больше вопросов
Аноним 21/02/22 Пнд 17:07:28 2303548 105
>>2303530
>Аноны, а как вы указываете тип переменной?
В зависимости от проекта по желанию левой пятки.
А если серьёзно, то действительно в завсимости от проекта - под Виндой одно, под Фрюниксами другое. Как в хидерах объявлено, так стараюсь и в проекте.

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

Аноним 21/02/22 Пнд 17:07:29 2303549 106
>>2303523
В каком месте и к чему приводиться?
>>2303526
>У тебя "c" русская или английская?
латиница
Аноним 21/02/22 Пнд 17:10:26 2303553 107
>>2303546
Тут как раз никаких вопросов.
Переменная хранится на стеке, там же где адрес возврата и прочее.
Ты пишешь в память ЗА переменную. Просто тупо ее портишь.
Аноним 21/02/22 Пнд 17:12:45 2303557 108
>>2303464
А какой смысл у этого кода? Ты к адресу переменной C прибавляешь единицу, а зачем разыменовываешь получившийся указатель. Что за эффект должен получиться?
неофит
Аноним 21/02/22 Пнд 17:16:20 2303559 109
>>2303546
Натрави на исходник gcc с ключом -S. Посмотри получившийся ассемблерный файл. Может быть поймешь где косяк push/pop rbp не спроста.
Аноним 21/02/22 Пнд 17:16:34 2303561 110
>>2303548
>>2303543
Понял, просто хотел изначально научиться единственному и более менее правильному стилю написания кода.
Аноним 21/02/22 Пнд 17:17:43 2303564 111
>>2303557
Адресная арифметика, например как альтернативный способ работы с массивами. Но не в его случае.
мимопроходил
Аноним 21/02/22 Пнд 17:18:01 2303565 112
>>2303546
Твоя программа объявляет только одну переменную
То есть память выглядит так

что-то системное
1 байт: переменная C
что-то системное <ты пишешь сюда

Аноним 21/02/22 Пнд 17:21:48 2303569 113
>>2303553
А хотя да, сейчас вчитался получше в ошибку, стало понятнее.
>>2303557
Если буквально то я хочу прочитать следующий за переменной байт. А вообще всё началось с того что я попробовал вывести чар как инт, то есть через %d и ожидал увидеть там число отличное от 129 которое присвоено, но выводилось всё так же 129. Потом я решил посмотреть стоят ли после этого числа нули в памяти - оказалось что нет. И только потом я вспомнил что аргументы передаются через стек и он ложит туда 1 байт как и полагается, а остальные байты видимо заполняет нулями это не точно
Аноним 21/02/22 Пнд 17:29:13 2303577 114
>>2303449
Ты не выкупил, забей
Аноним 21/02/22 Пнд 17:31:49 2303579 115
>>2303543
>и прочих алгоритмах
например, структуры данных при реализации различных протоколов.
Аноним 21/02/22 Пнд 17:33:05 2303580 116
Аноним 21/02/22 Пнд 17:36:31 2303585 117
>>2303565
Я так понял что я рушу стек. Но то в каком виде студия изначально выдала ошибку это всё равно странно.
Аноним 21/02/22 Пнд 17:39:34 2303590 118
>>2303585
Я не знаю почему так. Мое предположение - студия видит что ты обращаешься по адресу вне переменных, считает это UB (Undefined Behavior), в этот момент считает, угу, значит это бред написан, переменная c реально не используется, выкидываю вместе с инициализацией.
Аноним 21/02/22 Пнд 17:51:58 2303601 119
Почему нельзя поставить *NIX систему или отдельный Gcc тулчейн, чтобы ебаться со студией?
Аноним 21/02/22 Пнд 17:58:13 2303610 120
>>2303585
Добавь ключевое слово volatile в объявлении переменной.
Аноним 21/02/22 Пнд 18:04:34 2303618 121
>>2303610
всё то же самое, но справедливо, стек реально ломается. Но я тут в процессе задался фундаментальным вопросом, а что вообще переменные забыли в стеке...
Аноним 21/02/22 Пнд 18:26:39 2303637 122
Аноним 21/02/22 Пнд 18:30:04 2303639 123
>>2303618
У тебя локальная переменная функции. Если ты вызовешь ее рекурсивно, то у каждого вызова должно быть место для своей переменной.
Естественно если ты объявишь переменную вне функции, она будет не на стеке.
Аноним 21/02/22 Пнд 21:42:08 2303785 124
>>2303639
Примерно понял, спасибо
Аноним 21/02/22 Пнд 21:48:58 2303792 125
>>2303785
Еще забыл написать, при возврате из функции вместо очистки памяти стек просто уменьшается на нужное количество байт.
Аноним 21/02/22 Пнд 22:33:47 2303834 126
>>2303792
Да, помню такое. Получается этот мусор от прошлых вызовов ещё потрогать можно?
Аноним 21/02/22 Пнд 23:43:21 2303915 127
>>2303834
На этом часто уязвимости и основаны. С этим пытаются бороться (силами операционной системы и компилятора) разбрасывая память по рандомным адресам - ASLR
Аноним 22/02/22 Втр 15:41:56 2304316 128
Анончики, а чтобы свой malloc под винду запилить, надо всякие функции типа CreateFileMapping дергать или я не в ту сторону ищу?
Аноним 22/02/22 Втр 15:42:58 2304319 129
>>2304316
HeapAlloc, HeapRealloc, HeapFree за тебя уже все сделано.
Аноним 22/02/22 Втр 15:46:06 2304322 130
>>2304319
огромное спасибо, а CreateFileMapping эти штуки для чего используют?
Аноним 22/02/22 Втр 15:49:45 2304323 131
Аноним 22/02/22 Втр 15:51:24 2304325 132
>>2304323
есть, но не описано где на практике это используют, а еще всякие VirtualAlloc есть
Аноним 22/02/22 Втр 19:16:46 2304445 133
>>2297526 (OP)
Есть ли какой-то способ имплементировать this-> в С?
Пишу для микроконтроллеров, не хочу полностью переходить на С++ и менять корпинятор.


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

int32_t class(dev_ctx_t *ctx, uint8_t val)
Аноним 22/02/22 Втр 19:23:12 2304448 134
>>2304445
Нельзя, только через указатель на структуру первым аргументом, потому что именно такой код и генерируется из классов в C++.
Аноним 22/02/22 Втр 19:26:52 2304449 135
Аноним 22/02/22 Втр 20:23:36 2304504 136
Аноним 22/02/22 Втр 21:06:50 2304541 137
>>2304504
Ничего так, лихо ты. В VS уже не работает, не то что между архитектурами. Но можно перекрыть кучей дефайнов и, собственно, сделать свой компилятор.

Смотрю как в VS вообще с asm вствками работать, не разу не работал. В x64 вроде вообще не работает.
Аноним 22/02/22 Втр 21:07:31 2304542 138
>>2304541
> В x64 вроде вообще не работает.
Режиме сборке, в смысле. Нужно специальный файл городить, если я правильно понимаю.
Аноним 22/02/22 Втр 21:16:55 2304549 139
>>2304541
Можно попробовать собирать MinGW и линковать, как объектный файл.
Аноним 22/02/22 Втр 21:21:16 2304550 140
>>2304549
Да я на VS просто так пробовал, попробую на ARM своем, может там будет все ок и легче его перенести.
(Я ж изначально на него хотел.)

Но конечно такие вещи опасны, если не поддерживаемы, раз-два и код скопировали в другой проект - а он там не пашет.
Аноним 23/02/22 Срд 08:19:07 2304693 141
>>2304550
>Но конечно такие вещи опасны
>как сделать из си кресты, но без крестов, кресты не нужны, но нужно как в крестах
Да, дебилы опасны, я бы такого хуесоса мгновенно уволил с занесением в черный список. Если так любит играть со своим анусом, пусть это делает дома наедине с собой.
Аноним 23/02/22 Срд 09:04:09 2304708 142
скорее бы уже C23, может будет defer или любой другой деструктор, чтобы юзеры не забывали память вилкой чистить
Аноним 23/02/22 Срд 09:18:11 2304712 143
Аноним 23/02/22 Срд 09:44:54 2304721 144
>>2304712
написал же, чтобы юзеры всяких либ не забывали FreeMyLib() вызывать и тому подобное
потому что штука, которая может вызвать событие на выход переменной из скоупа, очень нужна
Аноним 23/02/22 Срд 10:13:46 2304738 145
>>2304721
Никто не будет использовать, многие проекты вообще С99 собираются. И расходы у defer функций огромные.
Аноним 23/02/22 Срд 10:55:20 2304749 146
>>2304738
скажу больше, что многие C89 собираются, на C99 переходят, только очень низкоуровневые, когда нужна уверенность в целых, 64битный да вариативный макрос
> И расходы у defer функций огромные
накладных расходов вообще нет, компилятор просто вставляет кусок кода в место, где переменная выходит из скоупа
Аноним 23/02/22 Срд 11:21:29 2304761 147
>>2304749
>накладных расходов вообще нет, компилятор просто вставляет кусок кода в место, где переменная выходит из скоупа
https://pastebin.com/JrH980Cu

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

Аноним 23/02/22 Срд 11:48:39 2304780 148
>>2304761
> Как он будет обрабатывать некорректные выходы из области видимости?
ну так перед строчкой abort(); // critical error, exit, pthread_exit, ExitProcess, ExitThread etc
вставит
free(a); free(b); free(c);
т.к. компилятор видит, что в этом месте точно такой же выход из скоупа
> Как он будет оптимизировать количество вызовов defer функций?
что значит количество? Один вызов к одной закрепленной переменной.
var x;
defer(x){ /code / }
теперь в месте выхода переменной X из области видимости вставляется code
Аноним 23/02/22 Срд 12:01:55 2304792 149
>>2304780
>ну так перед строчкой abort(); // critical error, exit, pthread_exit, ExitProcess, ExitThread etc
Компилятор не знает, какая функция завершает работу программы, pthread_exit, ExiitProcess, ExitThread функций нет в стандартной библиотеке.
>т.к. компилятор видит, что в этом месте точно такой же выход из скоупа
Не видит.
>Один вызов к одной закрепленной переменной.
Это назвается деструкторы, мы же говорим о defer функциях.
>что значит количество?
Для каждого выхода области видимости, необходимо продублировать код вызова defer функций или придумать гениальный способ оптимизации машинных кодов создаваемых компилятором, только зачем?

ЗАЧЕМ ТЕБЕ C++/Go В C?
Аноним 23/02/22 Срд 12:24:51 2304814 150
>>2304792
> Это назвается деструкторы, мы же говорим о defer функциях.
изначально мы говорим о механизме, который будет вызывать некий код при выходе переменной из области видимости, а каким словом это обозвать дело десятое
> ЗАЧЕМ ТЕБЕ C++/Go В C?
тоже выше написано, чтобы создавая библиотеку я бы давал гарантии пользователям, что им нужно только создать структуру из этой либы в нужном им месте, а об освобождении ресурсов уже подумал я и компилятор мне помог
Аноним 23/02/22 Срд 12:31:48 2304823 151
>>2304814
>изначально мы говорим о механизме, который будет вызывать некий код при выходе переменной из области видимости, а каким словом это обозвать дело десятое
>>2304708
>скорее бы уже C23, может будет defer или любой другой деструктор
Ты путаешь понятия, но пытаешься в расширение стандартов языка.

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


Аноним 23/02/22 Срд 12:38:41 2304828 152
>>2304823
> Ты путаешь понятия
я написал суть, а слова привел для тех, кто в теме не очень шарит, а кто шарит и так понял смысл из фразы > штука, которая может вызвать событие на выход переменной из скоупа, очень нужна

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

ладно, ты решил в срач скатываться, вместо обсуждения, поэтому бывай
Аноним 23/02/22 Срд 13:08:33 2304841 153
>>2304828
>я написал суть, а слова привел для тех, кто в теме не очень шарит, а кто шарит и так понял смысл из фразы > штука, которая может вызвать событие на выход переменной из скоупа, очень нужна
Ты хочешь деструктор в С, зачем? Возьми и пиши на C++, где эти деструкторы есть.

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

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

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

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

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

Так там такой ебейший дефайн был нагроможден ради пяти строк со всеми проверками компиляторов, ОС хостовых машин, и прочего говна.
Аноним 23/02/22 Срд 17:05:25 2304992 155
>>2304955
просто многие не понимают, что от C тоже хотят нормального человеческого развития или запила его альтернативы, чтобы был такой же легкий в освоении и простой, но при этом учитывал знания, полученные в IT за последние 40 лет
Аноним 23/02/22 Срд 17:12:21 2304998 156
Аноним 23/02/22 Срд 17:12:30 2304999 157
>>2304955
Не о том речь. В твоем примере поставлена задача и она решена, не важно дефайнами или нет, это продуктивная работа. Ты же, изобретая кресты в сях, не решаешь никаких задач, а тупо играешься, балуешься, причем знаешь как надо делать (передавать параметр), но сознательно откладываешь решение. Косишь от работы бессмысленным пердолингом. Поэтому я и сказать "играть со своим анусом", потому что это и есть маструбация, бесполезное занятие только ради личного удовлетворения, т.е. вред работе. И особенно если впердолишь нестабильное решение, это уже не просто вред от бездействия, а активное вредительство.
Аноним 23/02/22 Срд 18:22:18 2305064 158
Аноним 24/02/22 Чтв 10:58:35 2305485 159
>>2304322
Для того же, для чего в нормальных ОСях исползуют mmap(2).
Аноним 26/02/22 Суб 14:20:04 2306816 160
2022-02-26-Effe[...].jpg 15Кб, 612x55
612x55
2022-02-26-Comp[...].jpg 140Кб, 1216x630
1216x630
Начала учить язык по книжке R. Seacord - Effective C. Почему компилятору индифферентно использую ли я * при указании на функцию? Как должно быть по идее правильно?
Аноним 26/02/22 Суб 14:37:09 2306834 161
а вот есть ассемблерные вставки, а они пишутся на каком ассемблере, стандарт его определяет или что или как?
Аноним 26/02/22 Суб 14:57:21 2306863 162
>>2306834
Не определяет, асм вставки вроде вообще не стандартизированы нормально, в каждом компиляторе синтаксис у них отличается.
Для каждой архитектуры тоже свой асм.
Аноним 26/02/22 Суб 15:03:19 2306871 163
>>2306816
Возможно это связано с тем, что компилятор неявно приводит fn_b, к указателю на функцию, после чего ты его разыменовываешь и он снова приводится к указателю.
Аноним 27/02/22 Вск 12:11:57 2307388 164
Как сгенерировать уникальное имя переменной или функции, внутри макроса, для внутреннего использования?
Аноним 27/02/22 Вск 13:55:56 2307463 165
>>2307388
Смотри в сторону макроса __COUNTER__ (в стандарт не входит, но во всех компиляторах есть) и конкатенации через ##.
Аноним 27/02/22 Вск 18:22:51 2307667 166
>>2307388
я в своих либах просто ## использую для той же генерации по типам
Аноним 28/02/22 Пнд 00:19:12 2307808 167
Ахуеть, у меня двач заработал впервые за этот месяц если не больше, я смогу снова здесь сидеть!
Аноним 28/02/22 Пнд 07:34:58 2307921 168
Мужики, похоже, что скоро в РФ появится много работы на Си.
Аноним 28/02/22 Пнд 09:04:08 2307951 169
>>2307921
В военке не Си популярен
Аноним 28/02/22 Пнд 09:12:10 2307953 170
>>2307951
В военке программирование на срочниках популярно.
Аноним 28/02/22 Пнд 09:47:42 2307959 171
>>2307951
Так не военка же. Сейчас свои заводы и производство подниматься начнут. А веб-макаки пойдут дворы мести.
Аноним 28/02/22 Пнд 09:48:24 2307960 172
>>2307959
На заводах Си не используется.
Аноним 28/02/22 Пнд 10:09:34 2307967 173
>>2307960
В разных НИИ вполне себе на C++ пишут.
Аноним 28/02/22 Пнд 10:10:05 2307969 174
>>2307959
для ЧПУ на Си только API пишут, основная работа на скриптухе типа Lua, так что сишников больше не понадобится
Аноним 28/02/22 Пнд 10:12:10 2307970 175
Аноним 28/02/22 Пнд 10:45:31 2307998 176
Что хуже, когда библиотека имеет зависимости от других библиотек или когда библиотека не имеет зависимостей, но имеет внутри себя велосипеды.
Аноним 28/02/22 Пнд 11:49:02 2308034 177
>>2307998
что мешает слинковать первую библиотеку в свой бинарь?
зависимости никогда никого не смущали
Аноним 28/02/22 Пнд 15:19:07 2308180 178
Аноним 28/02/22 Пнд 16:26:49 2308222 179
>>2297526 (OP)
Хочу освоить C и Lua. С чего лучше начать?
Аноним 28/02/22 Пнд 16:32:16 2308227 180
>>2308222
>С чего лучше начать?
С неосваивания этих языков, а так Си, потом луа.
Аноним 01/03/22 Втр 15:55:04 2308824 181
Аноны, не знаю куда обращаться. Не могу найти тему для курсача по операционным системам, может у кого появятся идеи. Есть +- неделя на написание
Аноним 01/03/22 Втр 17:58:24 2308918 182
>>2308824
Сделай форк дебиана.
Аноним 01/03/22 Втр 19:26:46 2308982 183
>>2308918
Что значит сделать форк? Внести какие-то изменения в репозиторий или что? А как обычный рядовой чел внесёт какие-то нормальные изменения в репозриторий с операционкой чтобы это ещё и можно было бы использовать в курсовой? мне просто интересно, я даже не представляю что там сделать такого можно.
Аноним 01/03/22 Втр 19:28:54 2308985 184
>>2308918
С нескучными обоями. вспомнились платиновые треды молодости
Аноним 01/03/22 Втр 19:59:58 2309002 185
>>2308982
Тебе нужен курсовой и код, или просто курсовой? Какая ОС? Какие-то ограничения, задачи на курсовой были от преподавателей? Если код, то под окнами, я бы порекомендовал написать логгер для обращений программ в реестр, чтобы удалить созданные ими ключи, после их деинсталяции. Под пингвином, попробуй написать ... Не знаю, под него все системное уже написано.
Аноним 01/03/22 Втр 22:32:56 2309078 186
>>2309002
Курсовая заключается в написании кода + записки к нему. Ограничений вроде нет, я думал взять что-то про линух, тк наверное по нему больше всего инфы в инете. Была идея на ncurses написать gui который показывает различные датчики температуры в компе, и как-то встроить в виде виджета на рабочий стол. Насколько реализуемо? Сам я пользуюсь убунтой
Аноним 01/03/22 Втр 22:56:10 2309081 187
>>2309078
Хотя наверное идея встроить херню на ncurses как виджет звучит бредово
Аноним 02/03/22 Срд 06:50:49 2309136 188
>>2309081
Можешь сделать аплет, который показывает информацию о сети, например, куда и какие пакеты идут, сколько байт передано и т. д..
Аноним 02/03/22 Срд 13:07:32 2309343 189
>>2309002
В общем научруку понравилась тема с логгированием, сейчас буду разбираться. Спасибо, анон
Аноним 03/03/22 Чтв 12:46:25 2310059 190
Аноним 03/03/22 Чтв 15:20:19 2310159 191
>>2310059
> Мнение?
Хочу, чтобы перевел и оформил в виде статьи на каком-нибудь хабре, чтобы с большим числом народу перетереть
Ну а по сути - все как всегда: комитетчики - старые пердуны, которые уже не умеют в развитие, а только используют то, к чему привыкли, поэтому тормозят развитие. Есть кучи направлений, где можно улучшать эффективность языка, чтобы он делал более совершенный код, чтобы удобнее было писать, но ..
Аноним 04/03/22 Птн 12:53:29 2310618 192
>>2310159
>которые уже не умеют в развитие, а только используют то, к чему привыкли, поэтому тормозят развитие.
Как им развиваться?
Аноним 04/03/22 Птн 14:24:38 2310678 193
Если в одной библиотеке, есть статическия глобальная переменная, например, мьютекс для синхронизации вывода, то если я слинкую эту библиотеку, статически с другой библиотекой, а после чего использую вторую библиотеку в своей программе и еще раз слинкую статически первую библиотеку, но уже со своей программой, то мьютексы во второй библиотеке и в первой библиотеке будут разные?
Аноним 05/03/22 Суб 13:56:44 2311270 194
Аноним 05/03/22 Суб 18:31:05 2311457 195
>>2310678
Если проекты (1. программа+мьютекс_либа и 2. либа+мьютекс_либа) разные, то очевидно что глобальные переменные у обоих проектов будут разные. Надо подключать мьютекс-либу динамически к программе и либе.
Аноним 05/03/22 Суб 18:38:22 2311463 196
>>2309002
>Если код, то под окнами, я бы порекомендовал написать логгер для обращений программ в реестр, чтобы удалить созданные ими ключи, после их деинсталяции.
- Звучит как глобальный хук (|| другой способ инжекта либы) с перехватом функций обращения к реестру.
- Также похоже на снэпшотер всего реестра, до и после установки программы. Но там еще и другие программы могут в этот момент писать что-то в реестр. Может случиться бяка.
Аноним 05/03/22 Суб 18:47:13 2311468 197
>>2311463
>Звучит как глобальный хук (|| другой способ инжекта либы) с перехватом функций обращения к реестру.
Да, но если права позволяют и система тестовая, то можно реализовать через патч системной Advapi32.dll, но я не помню, как связываются системные библиотеки, в смысле только динамически или статически тоже. Ну, а способов глобальной подгрузки dll, в интернете миллионы, к тому же прав администратора будет достаточно, потому что следить за процессами, у которых права выше администратора, бессмысленно.
Аноним 06/03/22 Вск 19:17:06 2311988 198
unproto-fail.png 29Кб, 1155x150
1155x150
Сяп. Разве могут типы из стандартных хидеров противоречить друг другу? И откуда va_list в стдио ?
Аноним 06/03/22 Вск 19:35:45 2311998 199
>>2311988
Почему у тебя 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
Аноним 06/03/22 Вск 19:47:41 2312003 200
>>2311988
>>2311998
Посмотрел на исходный код, там (по гитхабу) в 150 строке, в файле unproto.c выбирается заголовочный файл флагом STDARG, используй его при компиляции.
Аноним 07/03/22 Пнд 09:20:19 2312173 201
Функция printf и все остальные ее производные, в конечном итоге, вызывают write или WriteFile, которые можно использовать для записи в сокет, так вот, можно ли использовать функцию fprintf для записи в сокет и насколько это легально?
Аноним 07/03/22 Пнд 11:33:12 2312212 202
>>2312173
> можно ли использовать функцию fprintf для записи в сокет
Почему бы и нет, зовёшь close(0), открываешь сокет и похуячил.

> насколько это легально?
Настолько же, насколько отсылка на текущую ситуацию в мире.
Аноним 07/03/22 Пнд 13:06:14 2312248 203
Аноним 07/03/22 Пнд 14:20:55 2312325 204
>>2312248
Чтобы твой сокет получил дескриптор 0.
Блядь, я перепутал, stdout - это 1, надо close(1).
Аноним 07/03/22 Пнд 14:22:07 2312330 205
>>2312325
>Чтобы твой сокет получил дескриптор 0.
Почему он должен его получить? И зачем мне именно этот дескриптор?
Аноним 07/03/22 Пнд 19:53:30 2312585 206
>>2311998
>Почему у тебя stdio.h расположен в /usr/include, а stdarg.h хуй знает где?

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

>>2312003
У меня там вообще _AIX. Тупа поставил <stdarg.h> - анпрототайпер собрался
Аноним 08/03/22 Втр 12:58:58 2312872 207
Товарищи, а при линковке gcc шо -static шо -Wl,-Bstatic это синонимы и просто слинкуют все последующие либы статически к бинарнику приложения?

Если мне нужно часть либ статически, а часть динамически, то мне перед одними нужно поставить -Wl,-Bstatic потом их перечислить, потом -Wl,-Bdinamic и уж их перечислить?
Аноним 08/03/22 Втр 14:06:52 2312897 208
Почему в Си нет библиотек? Аноним 08/03/22 Втр 21:06:45 2313116 209
Screenshot20220[...].jpg 136Кб, 1200x753
1200x753
Аноны, почему так мало? Где функции сортировки, работы с деревьями, генераторы различных типов распределений, списки, графики? Неужели такие базовые вещи в Си нужно писать с нуля в ручную? Или может быть есть какой-нибудь ресурс, где можно найти готовые реализации в .h файлах?
Аноним 08/03/22 Втр 21:44:24 2313139 210
>>2313116
> где можно найти готовые реализации в .h файлах?
github, за последние лет 50 написали уже все, что только может тебе прийти в голову
> почему так мало?
потому что в стандартной либе должен быть минимум элементарных кирпичиков, чтобы на любой ОС можно было запустить, а не засирать и тащить в нее все подряд
Аноним 08/03/22 Втр 21:55:29 2313155 211
>>2313116
Для деревьев и прочей лабуды используют другие языки вроде питона. Ты не туда зашел, петушок, со своим говном.
Аноним 08/03/22 Втр 22:03:30 2313157 212
>>2313139
Ну гитхаб понятно, но почему нет какого-то централизованного и стандартизированного менеджера пакетов вроде pip'a, где можно скачать готовую и отлаженную реализацию и включать её в код через include. Разве удобнее самому копаться в гитхаб-помоях, где половина функций либо вообще не будет работать, либо будет работать так плохо, что придётся переписывать самостоятельно?
>>2313155
Деревья вообще-то даже в файловых системах используются. Давай, напиши ФС на Питоне, клован.
Аноним 08/03/22 Втр 22:50:33 2313192 213
>>2313155
> Для деревьев и прочей лабуды используют другие языки вроде питона. Ты не туда зашел, петушок, со своим говном.
Какой еще петухон. Ты не туда зашел, петушок, со своим говном.
> но почему нет какого-то централизованного и стандартизированного менеджера пакетов
потому что тогда нужен какой-то дядя или много дяд, кто будет определять что такое хорошо по своему вкусу, все либы в своих областях чаще всего итак в одном самом популярном и отлаженном экземпляре, та же ssl, ну а что попроще вроде там png - набираешь также в гитхабе и смотришь по количеству звезд, времени обновления и прочему, если подходит - берешь, для простых либ давно есть стандарт вроде того, что создается one_header_library под свою задачу, а потом их просто накидываешь в свой проект и прописываешь один инклуд, яркий пример сборник таких либ stb
Аноним 09/03/22 Срд 09:24:25 2313336 214
>>2313157
Потому что язык разработали в семидесятых, алло.
За легко подключаемыми либами с гитхаба тебе в голенг.
Аноним 09/03/22 Срд 09:51:46 2313343 215
>>2313336
Unix тоже разработали в 70. По-моему, скачать файл через wget и переместить его в каталог библиотек не так уж и сложно.
Аноним 09/03/22 Срд 10:24:33 2313354 216
>>2313157
>почему нет какого-то централизованного и стандартизированного менеджера пакетов
Вот возьми и напиши, на курсач сойдёт.
Аноним 09/03/22 Срд 10:57:06 2313363 217
Аноним 09/03/22 Срд 12:02:44 2313381 218
Почему симейк такое убожество и какие у него преимущества перед мейком, если его кто-то выбирает?
Аноним 09/03/22 Срд 13:01:41 2313428 219
>>2312330
> Почему он должен его получить?
Потому что ОС раздаёт свободные дескрипторы по порядку.

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

Пиздец, у зумеров attention span как у землеройки.
Аноним 09/03/22 Срд 13:03:47 2313430 220
>>2313381
Потому что ты не понимаешь разницы между системой сборки и мета-системой сборки.
Аноним 09/03/22 Срд 13:15:31 2313437 221
>>2313381
> преимущества перед мейком
ебать ты лох..
Аноним 09/03/22 Срд 13:24:21 2313443 222
>>2312173
>можно ли использовать функцию fprintf для записи в сокет и насколько это легально?

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

Где ты тут видишь printf для записи в сокет?
Аноним 09/03/22 Срд 17:17:15 2313585 223
>>2313157
>Ну гитхаб понятно, но почему нет какого-то централизованного и стандартизированного менеджера пакетов вроде pip'a, где можно скачать готовую и отлаженную реализацию и включать её в код через include.
Все есть. См. msys2, vcpkg под винду. С линухом вообще никаких проблем нет, там в каждом дистре свой пакетный менеджер.
>стандартизированного
Как ты себе это представляешь? Си это не только х86/64. Существуют десятки сишных компиляторов под хуеву кучу платформ, которые не то что бинарно, а даже программно не совместимы.
Аноним 09/03/22 Срд 17:40:56 2313598 224
бля пасаны, я только вкатываюсь, может кто-нибудь даст вк/тг чтоб я мог иногда заёбывать с вопросами?
Аноним 09/03/22 Срд 18:17:38 2313631 225
Аноним 09/03/22 Срд 18:18:41 2313633 226
Аноним 09/03/22 Срд 18:21:44 2313638 227
>>2313631
долго, да и тред засрётся. Ну ладно, похуй.
Аноним 09/03/22 Срд 18:22:58 2313640 228
Какие есть альтернативы доксигена? Желательно живые, можно только для Си и С++.
Просто интересно потрогать их и посмотреть плюсы или минусы.
Аноним 09/03/22 Срд 18:36:19 2313647 229
atoi/atol/atoll тупа конвертят строку, даже если она не валидная без всяких ошибок?
Аноним 09/03/22 Срд 18:38:01 2313648 230
Аноним 09/03/22 Срд 19:03:25 2313663 231
>>2313354
А что, это идея. Кто-нибудь хочет присоединиться?
Аноним 10/03/22 Чтв 10:37:31 2313949 232
а что за тип FARPROC, не могу нагуглить, шо це
подозреваю, что какой-нибудь size_t
Аноним 10/03/22 Чтв 10:46:33 2313952 233
>>2313949
раскопал, что это
typedef int (FAR __stdcall *FARPROC)();
но что такое FAR, судя по коду просто какой-то флаг или что
Аноним 10/03/22 Чтв 11:50:17 2313981 234
>>2313949
Ошмётки легаси, когда на ранних 32-битных машинах были ближние (NEAR) и дальние (FAR) процедуры. Привыкай, в виндусе всё так.
Аноним 10/03/22 Чтв 11:53:17 2313983 235
>>2313443
Нагуглить fdopen и включить мозг на пару секунд религия не позволяет или таки возраст?
Аноним 10/03/22 Чтв 13:50:30 2314046 236
d342.png 11Кб, 617x252
617x252
>>2313981
Спасибо, а не знаешь как этот FARPROC правильно в функцию прокинуть и через GetProcAddress получить, потому что func_1 остается NULL, а func_2 все нормально работает?
Но нужно именно без хардкодного описания параметров функции через typedef, чтобы перед GetProcAddress ее тип проставить или без этого он совсем никак не сможет в данном случае сопоставить func внутри функции load_func и передаваемую туда func_1
Аноним 10/03/22 Чтв 13:51:21 2314049 237
>>2313983
Ты же понимаешь, что ты обосрался и пытаешься в маневры? Зачем ты продолжшаешь общение? Смирись с тем, что ты не прав, у тебя нет никаких оправданий, а лишь попытки оскорблений, скорее всего ты бездарное существо, которое живет на бабушкину пенсию и дрочит Си-код.
Аноним 10/03/22 Чтв 13:53:53 2314053 238
>>2314046
Ты передаешь указатель в функцию и его изменяешь, передавай указатель на указатель для его именения или взаимодействуй с глобальной переменной.
Аноним 10/03/22 Чтв 13:57:27 2314058 239
>>2314053
Блин, я уже слепой.. Спасибо, нужно спать хоть раз в пару дней
Аноним 10/03/22 Чтв 15:09:43 2314096 240
image 72Кб, 991x416
991x416
Кто-нибудь может объяснить почему тут так написано? Разве бывает тип больше лонг лонг?
Аноним 10/03/22 Чтв 15:15:36 2314100 241
>>2314096
Да, например, struct { unsigned long long value_1, value_2 } double_long_long;
Аноним 10/03/22 Чтв 15:17:24 2314103 242
>>2314100
Аче структура это тип?
Аноним 10/03/22 Чтв 15:18:19 2314105 243
>>2314049
> ты бездарное существо, которое живет на бабушкину пенсию и дрочит Си-код
Проекции уровня /pr/
Аноним 10/03/22 Чтв 15:19:16 2314106 244
>>2314103
А, что это по-твоему?
Аноним 10/03/22 Чтв 15:21:15 2314108 245
>>2314106
Да я хз, я их не проходил ещё даже, просто книгу читаю, а там вещи непонятные, приходится наперёд смотреть
Аноним 10/03/22 Чтв 15:43:51 2314125 246
>>2314108
среди простых целых типов - да, int64_t/uint64_t ака long long/unsigned long long - самые большие
Аноним 10/03/22 Чтв 16:04:08 2314146 247
>>2314125
Но тогда почему там написано "на помощь и приходит uintmax_t", ведь этого всего лишь машинное слово (или я чет не понял), а структуры могут быть любой длины?
Аноним 10/03/22 Чтв 16:48:16 2314179 248
>>2314146
Читай внимательно, что там дальше написано.
Аноним 10/03/22 Чтв 17:27:23 2314194 249
>>2314179
Ну дальше там написано что есть какой-то __int128 (че) которым внезапно может оказаться переменная, но следом же сказано что компилятор не считает его за расширенный целочисленный тип, поэтому максинт это в любом случае лонг лонг. Непонятно зачем вообще нужен этот максинт если есть лонг лонг. В статье сначала говорится типа "вот можем захотеть написать так, но вдруг размер больше? поэтому надо юзать максинт" а потом оказывается что больше-то ничего и не бывает.
Аноним 10/03/22 Чтв 17:36:43 2314208 250
>>2314194
Там еще дальше написано.
Аноним 10/03/22 Чтв 17:38:37 2314211 251
>>2314208
Да я до конца прочитал. Ты сам открыл эту статью или просто так говоришь?
Аноним 10/03/22 Чтв 17:41:53 2314215 252
>>2314211
>Но есть один нюанс. Некоторые читатели, использующие __int128 или его беззнаковый аналог, могут задаться вопросом: почему в моем компиляторе clang или gcc intmax_t определен как long long, тогда как его размер меньше, чем у __int128? Все дело в том, что clang и gcc не рассматривают __int128 как расширенный целочисленный тип, так как это влечет за собой изменение intmax_t, а это уже нарушает ABI-совместимость с другими приложениями.

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

>В конечном итоге intmax_t/uintmax_t немного не соответствуют целям, описанным для них в стандарте.
Аноним 10/03/22 Чтв 17:48:42 2314219 253
>>2314215
Так а каким в итоге целям они соответствуют? Или никаким и можно забить на них хуй?
Аноним 10/03/22 Чтв 17:52:36 2314221 254
>>2314219
>никаким и можно забить на них хуй?
Да.
Аноним 10/03/22 Чтв 18:02:29 2314227 255
Аноним 10/03/22 Чтв 18:08:00 2314231 256
>>2314227
>Я погугли и кажется нашёл кое-что получше
Выглядит, как говно без задач с парой пакетов в репозитории, которые не понятно еще в каком виде предоставляются.
Аноним 11/03/22 Птн 12:13:55 2314642 257
>>2314219
Целям не ломания совместимости.
Школьникам-максималистам-бунтарям-старье-нинужно-весь-мир-разрушим-до-основанья-а-затем-новый-мир-построим осмыслить подобное трудно, но это важно.
Аноним 11/03/22 Птн 12:24:57 2314656 258
>>2314642
>Целям не ломания совместимости.
uintmax_t и intmax_t, как раз ломают совместимость.
Аноним 11/03/22 Птн 12:43:54 2314676 259
Аноним 11/03/22 Птн 13:06:04 2314703 260
>>2314676
>>2314215

>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?
Аноним 11/03/22 Птн 14:34:03 2314764 261
>>2314642
Приведи пример несовместимости когда эти типы спасают
Аноним 11/03/22 Птн 15:44:49 2314810 262
>>2314703
>__int128 int_128 = __INT128_MAX;
Эта залупа вообще хоть в чем-то скомпилируется? Ни разу не видел 128-битных литералов.
если конечно __INT128_MAX это дефайн, а не хитровыебанное прибитое гвоздями расширение конпелятора
Аноним 11/03/22 Птн 16:03:40 2314826 263
Аноним 12/03/22 Суб 03:09:53 2315287 264
>>2314826
Я не про это вообще. Уже сам нашел.

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;
Аноним 12/03/22 Суб 19:43:59 2315553 265
Анончики, приветствую. Худо-бедно умею прогать на плюсах, сейчас сходил на собес и мне сказали, что плюсы это заебись, но они у себя пишут на чистом си. В целом, как мне сказали, если знаешь плюсы, на си перейдешь быстро, не парься.
Собственно, вопрос, так ли это? На си ни одной строчки кода не написал в жизни. Да и на самих плюсах в каких то низкоуровневых дебрях не копался. Понимаю, что логика языков должно быть практически идентична, но все равно наверняка отличается в некоторых моментах + синтаксис + всякие внутренние инструменты типа stl, я даже не ебу есть ли что то типа этого в си. Что скажете?

Алсо, посоветуйте плз хороший учебник по си, по которому можно относительно быстро вкатиться. Книги в шапке вижу, может есть какие-то комментарии по ним, что лучше, или еще какие-то годные варианты?
Аноним 12/03/22 Суб 20:04:09 2315561 266
>>2315553

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

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

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

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

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

>мб каким-либо образом где-то упаковав информацию о количестве/типах аргументов и типе возвращаемого значения?
typedef return_type function_type_name(parameters);
Аноним 13/03/22 Вск 13:13:40 2315823 269
Зойчем структуры как-то ебануто выравнивают содержимое? Нахуя это сделано? Как ими пользоваться нормально, если они такие непослушные? Хотел структурой описать содержимое одного файла, так она все переговняла, посмещала. Хуйня получилась. Пришлось ебаться, описывая содержимое массивом с указателями.
Аноним 13/03/22 Вск 14:41:35 2315897 270
>>2315823
>Зойчем структуры как-то ебануто выравнивают содержимое? Нахуя это сделано?
Производительность.

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

>Хотел структурой описать содержимое одного файла, так она все переговняла, посмещала. Хуйня получилась. Пришлось ебаться, описывая содержимое массивом с указателями.
Проблема в тебе, а не в выравнивании.
13/03/22 Вск 14:47:08 2315902 271
>>2315823
гугли упаковка/распаковка структур для бинарного хранения или передачи и не выдумывай велосипедов
надеюсь ты еще студентик, а не зарабатываешь этим деньги, а то заебался переделывать за таким говном как ты
Аноним 13/03/22 Вск 17:35:56 2316057 272
>>2315561
Окей, спасибо, анончик!
А по учебникам че то годное можешь посоветовать? Чтобы вот быстро освоить как то хотя бы базовые вещи, чтобы потом уже проще было. А то этих талмудов на 1000 страниц много, но что именно из этого годнота на берегу определить очень сложно.
Аноним 13/03/22 Вск 18:23:54 2316094 273
>>2316057
>А по учебникам че то годное можешь посоветовать?
Ничего. Не читал.
Аноним 13/03/22 Вск 19:49:33 2316152 274
Аноним 13/03/22 Вск 19:53:52 2316156 275
Аноним 13/03/22 Вск 20:12:39 2316162 276
Аноним 13/03/22 Вск 23:24:06 2316281 277
>>2315672
Спасибо. В результате поступил средне - передаю содержащий аргументы объект в случае функции, а в случае метода ещё и соответствующий инстанс. Свой подход всё ещё собираюсь использовать для различения функции с аргументами/функции без аргументов/метода, но это будет уже проще сделать.

>>2315707
Спасибо, что-то вообще в голову это не пришло. Жаль только, что придётся условиями всё это дело обложить а-ля "if (nargs == 2 && has_return) { return (func_type_2args_has_return)(args) }. И в макрос никак красиво не оформить.
Аноним 13/03/22 Вск 23:31:20 2316285 278
>>2316281
>И в макрос никак красиво не оформить.
Можно оформить в красивую асм вставку.
Аноним 14/03/22 Пнд 11:15:28 2316464 279
Аноним 15/03/22 Втр 13:00:47 2317066 280
offset.PNG 9Кб, 470x229
470x229
Аноны, почему первый мегабайт в начале диска (gpt) пропускается? Он отображается как свободный то есть неразмеченный. Находится вначале. С какой целью это сделано?
Аноним 15/03/22 Втр 13:02:47 2317067 281
offset.PNG 11Кб, 470x229
470x229
>>2317066
Надо подчеркнуть чтобы вы быстрее поняли. Вот видите первый разедл и у него offset 1024кб от начала диска, почем первые 1024кб диска не используются? А? А? А? Причём они не размечены так как на диске отображаются как фри.
Аноним 15/03/22 Втр 14:40:24 2317115 282
Аноним 15/03/22 Втр 14:44:21 2317119 283
>>2317115
Потому что здесь ситемщики сидят больше шансов что ответят.

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

Правда вопрос в том что mbr запись 512 байт занимает а не 1024 килобайта но это видимо размера кластера то есть весь lba0 адресует 1024килобайта потому что такой размер блока, ведь lba1 это уже заголовок gpt
Аноним 15/03/22 Втр 16:43:44 2317175 284
Системный вызов fork() создаёт копию родительского процесса. Правильно ли я понимаю, что код в этой копии стартует не с самого начала программы, а с того места, которое идёт сразу после fork() ?
Аноним 15/03/22 Втр 16:49:44 2317183 285
>>2317175
это ты про api линукса чтоли?
Аноним 15/03/22 Втр 16:51:20 2317185 286
>>2317175
С самого начала программы.
Аноним 15/03/22 Втр 16:53:55 2317187 287
Аноним 15/03/22 Втр 17:00:03 2317201 288
>>2317183
Да.
>>2317185
>С самого начала программы.
А как тогда сделано, чтобы форки не плодились бесконечно? Ведь если программа начнёт выполняться с самого начала, то она опять на вызов fork() натолкнётся?
Аноним 15/03/22 Втр 17:00:53 2317202 289
Аноним 15/03/22 Втр 17:14:01 2317213 290
>>2317175
Не совсем так, он начинает работу с места форка, но возвращает результат в зависимости от того, является ли процесс дочерним или родительским. Таким образом, можно сделать различную логику у дочернего и родительского процесса, после форка.

https://opennet.ru/man.shtml?topic=fork
>При успешном завершении родителю возвращается PID процесса-потомка, а процессу-потомку возвращается 0. При неудаче родительскому процессу возвращается -1, процесс-потомок не создается, а значение errno устанавливается должным образом.
Аноним 15/03/22 Втр 18:30:53 2317297 291
>>2317175
Похоже на гопников: "форкни мне бабла. чел"
Аноним 16/03/22 Срд 13:43:52 2317677 292
Подскажите, плиз какие библиотеки есть на win10 чтобы получить температуру процессора в настоящий момент? Пока только wmi нашёл, ещё способы есть?
Аноним 16/03/22 Срд 13:47:48 2317679 293
>>2317677
>Пока только wmi нашёл, ещё способы есть?
Чем он тебя не устраивает?
Аноним 16/03/22 Срд 13:49:11 2317682 294
>>2317679
ничем. всем устраивает просто навсякий случай спросил мало ли есть какой-то более простой\альтернативный способ. всегда так делаю. так я уже копаю во всю в его сторону
Аноним 16/03/22 Срд 14:41:54 2317707 295
>>2317679
Он выдаёт постоянно одно и тоже значение которое не меняется.

Я использую класс MsAcpi_ThermalZoneTemperature и объект CurrentTemperature постоянно выдаёт одно и тоже 2982.
Аноним 16/03/22 Срд 15:40:00 2317724 296
>>2317707
CurrentTemperature выдаёт не температуру проца, а температуру с датчикам расположенного на материнской плате.
Аноним 16/03/22 Срд 15:41:19 2317726 297
>>2317707
>>2317724
Функции по выдаче реальной температуры процессора не предусмотрено в wmi есть только датчик с материнки, чтобы её узнать нужно драйвер написать.
Аноним 16/03/22 Срд 15:44:43 2317731 298
По своей сути вообще current temperature используется больше для детекта в целом температуры внутри корпуса компа\ноутбука.

Можно например вытащить комп на балкон и через 10 мин опять запустить её и увидеть что темпера просела.
Аноним 16/03/22 Срд 18:47:44 2317802 299
256543425049971[...].jpg 258Кб, 1080x1349
1080x1349
Как установить GCC на windows? Ютуб гайды перенаправляют на сторонние сайты, не gnu.org .
Аноним 16/03/22 Срд 19:00:29 2317815 300
>>2317802
windows 10/11 => wsl/wsl2
windows <10 => msys/msys2/mingw/mingw-w64/cygwin
Аноним 16/03/22 Срд 22:58:52 2317969 301
>>2317802
>перенаправляют на сторонние сайты, не gnu.org
Ты бы ещё посетовал, что за установкой линупса тебя отправляют не на kernel.org
Аноним 17/03/22 Чтв 10:03:41 2318103 302
Аноним 18/03/22 Птн 19:34:46 2319043 303
Железячники нахуя вы сокращаете имена всего до ткнчхни? ПОЧЕМУ НЕЛЬЗЯ ПИСАТЬ НОРМАЛЬНО? Экономия пары байт?
Аноним 18/03/22 Птн 20:32:04 2319085 304
Аноним 18/03/22 Птн 20:39:40 2319094 305
0blGmoSAMDs.jpg 25Кб, 416x287
416x287
Аноним 18/03/22 Птн 23:51:26 2319189 306
Аноним 19/03/22 Суб 00:06:43 2319193 307
>>2319189
(сам заметил, что strcmp неправильно использовал)
Аноним 19/03/22 Суб 02:30:04 2319220 308
Как изучать язык Си?
Почему его считают плохим выбором начинающего для изучения программирования?
Аноним 19/03/22 Суб 06:18:04 2319247 309
>>2319220
Кто считает? Си первым делом изучают например в cs50 или в школе21. Мой препод в универе говорил, что си хороший первый язык.
Из аргументов: учишься работать с памятью, простой синтаксис.
Аноним 19/03/22 Суб 08:09:41 2319256 310
>>2319189
Зачем ты написать свой велосипед, с использованием системного вызова и побайтовым чтением?

scanf("%ms", &string); // POSIX 2013
Аноним 19/03/22 Суб 11:42:43 2319310 311
Помогите написать makefile. собрал библиотеку функций из .с в .о потом ar rc в один файл .а. Позже написал main.c как его теперь соединить с библиотекой .a ?
Аноним 19/03/22 Суб 11:44:50 2319311 312
>>2319310
$(CC) -static main.c -Lpath-to-your-lib-directory -lyour-lib-name
Аноним 19/03/22 Суб 12:14:12 2319326 313
>>2319311
у вас слишком сложно
уже попердолился и написал типа
gcc -o $(NAME) $(OBJ_FILES) $(LIBA)
вроде работает.
Мне говорили что книжка по мейкфайлам около 700 страниц, так и живу на основе ранее написанного
Аноним 19/03/22 Суб 14:14:31 2319373 314
16308872710920.mp4 1643Кб, 400x720, 00:00:14
400x720
Хочу в драйвера пиздец как вкатиться. Начать хочу с винды, подскажите с чего начать ньюфане? Ну я щас читаю microsoft docs про драйвера там всякие виды, isolated driver packages и т.д. много всего и лишнего для ньюфажной головы там. Подскажите как уже к практике присутпить. Может какой-нибудь фильтр для клавиатуры написать или хз что.
Аноним 19/03/22 Суб 14:22:05 2319374 315
>>2319373
>Начать хочу с винды
Перехочевай.
Аноним 19/03/22 Суб 14:27:02 2319375 316
>>2319374
А с чего начать? С linux'а?
Аноним 19/03/22 Суб 16:18:23 2319412 317
Аноним 19/03/22 Суб 16:24:09 2319413 318
>>2319412
А чем он проще? Просто извини мне мало да, потому что мне придётся ставить его дуалбутом щас в uefi а это геморрой тот ещё.
Аноним 19/03/22 Суб 16:28:34 2319417 319
Аноним 19/03/22 Суб 16:30:38 2319422 320
>>2297526 (OP)
Вчера оставлял тред, никто туда не зашёл и его снесло, потому что я забыл бампнуть. Собственно, вопрос с треда: Насколько распространено использование wm_keyboard_LL для отслеживания нажатий клавиш, и как сильно на это могут триггерится антивирусы / античиторы / антипидоры?
Аноним 19/03/22 Суб 16:31:35 2319426 321
Аноним 19/03/22 Суб 16:51:42 2319435 322
>>2319422
>распространено использование wm_keyboard_LL
Где и зачем?
Аноним 19/03/22 Суб 17:10:10 2319440 323
>>2319413
Думаю, что как минимум тем, что у него открыт исходный код; в репозитории ядра много примеров драйверов для разных устройств, в которых можно покопаться (предварительно разобравшись, как ядро с ними взаимодействует).

А в чём геморрой? На моём личном опыте линуксовский GRUB рядом с виндусовским загрузчиком хорошо рядом встаёт; слышал о проблемах с какими-то моделями efi, но сам не встречался. Плюс, если тебе просто дрова писать и тестировать, то и места свободного на диске много выделять не надо.
Аноним 19/03/22 Суб 17:27:36 2319445 324
>>2319435
>для отслеживания нажатий клавиш
Аноним 19/03/22 Суб 17:48:45 2319453 325
>>2319445
>зачем?
Зачем тебе их отслеживать?!
Аноним 19/03/22 Суб 17:51:56 2319456 326
>>2319453
Хочу, чтобы моя хуйня реагировала на нажатия клавиш во всех окнах, а что?
Аноним 19/03/22 Суб 17:57:11 2319462 327
>>2319456
>а что?
Это сломанная логика или малварь 2002 года? Глобальный перехват клавиш не нужен в полезном ПО.
Аноним 19/03/22 Суб 17:59:39 2319466 328
>>2319462
Пилю хуйню исключительно для себя, да и о полезности своей хуйни я не заявлял.
>не нужен
Кто сказал?
Аноним 19/03/22 Суб 18:00:45 2319469 329
>>2319466
>Кто сказал?
Назови хотя бы 1 причину почему я не прав?
Аноним 19/03/22 Суб 18:20:01 2319481 330
>>2319469
Берёшь и реагируешь на нажатие клавиатуры по всему кудахтеру.
Если самому додумать слишком сложно, то можешь сразу сливаться
Аноним 19/03/22 Суб 18:22:06 2319483 331
>>2319481
>Берёшь и реагируешь на нажатие клавиатуры по всему кудахтеру.
Маневры от мамкиного хакера по статьям нулевых.
Аноним 19/03/22 Суб 18:23:33 2319484 332
>>2319483
>пук
Так бы сразу и сказал.
Аноним 19/03/22 Суб 19:08:10 2319496 333
>>2319440
>>2319440
спасибо, что пояснил, анон.

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

спасибо, анон. тогда будем в linux стремиться для начала
Аноним 20/03/22 Вск 12:39:05 2319758 334
>>2319422
>wm_keyboard_LL
Эти хуки хороши только если тебе нужен доскональный контроль клавы/мыши, включая блокировку. Например есть НЕАКТИВНОЕ окно которое тебе нужно скроллить и кликать в нём, но БЕЗ АКТИВАЦИИ этого окна. С помощью хука перехватываешь все события, реагируешь на них как хочешь, при этом можешь блокировать какие надо от дальшейшей обработки системой по умолчанию.

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

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

Вообще, я думаю, есль же всякие кейлоггеры, где реализовано всё как надо, но эти хацкеры мамкины жлобы код скрывают.
Аноним 20/03/22 Вск 15:41:55 2319904 335
мб есть какой способ намутить темплейты как в плюсах используя какой-нибудь не сишный препроцессор? вроде же есть какие-то общие препроцессоры типа gnu m4
Аноним 20/03/22 Вск 16:02:12 2319912 336
>>2319904
>мб есть какой способ намутить темплейты как в плюсах используя какой-нибудь не сишный препроцессор?
Чем тебя сишный не устраивает?
Аноним 20/03/22 Вск 16:04:02 2319913 337
>>2319912
а что, можно темплейты намутить на сишном препроцессоре?
Аноним 20/03/22 Вск 16:06:10 2319914 338
>>2319913
1) Зачем они тебе?
2) Что ты понимаешь под темплейтами?
3) Зачем шаблоны в Си?
От твоих ответов зависит возможно или нет.
Аноним 20/03/22 Вск 16:27:32 2319938 339
>>2319914
> 1) Зачем они тебе?
чтобы не писать вручную миллион одинаковых функций и структур типо
int func_int(int arg1, int arg2)
float func_float(float arg1, float arg2)
и т.д.
>> 2) Что ты понимаешь под темплейтами?
то что в плюсах понимается под темплейтами
>> 3) Зачем шаблоны в Си?
а зачем спрашивать один и тот же вопрос 2 раза?

Аноним 20/03/22 Вск 16:36:57 2319947 340
Аноним 20/03/22 Вск 17:43:53 2320002 341
>>2319913
>а что, можно темплейты намутить на сишном препроцессоре?
Да, только выглядят они несколько говняно. Посмотри sglib, например.
Аноним 21/03/22 Пнд 12:47:29 2320515 342
>>2319947
спс, идею понял, не лаконично, конечно
а если мне надо шаблон на 2 типа
то там видимо кастыли вообще лютые будут
>>2320002
> выглядят они несколько говняно
супер говняно выглядят
либа прикольная
Аноним 21/03/22 Пнд 19:36:52 2320775 343
Безымянный-файл[...].jpg 258Кб, 1200x898
1200x898
Аноны, как обозвать хидер с общими функциями, вроде переделонных под нужный контекст стандартных функций?
Аноним 21/03/22 Пнд 19:39:10 2320779 344
>>2320775
>вроде переделонных под нужный контекст стандартных функций?
Это как?
Аноним 21/03/22 Пнд 19:46:26 2320786 345
Аноним 21/03/22 Пнд 22:12:01 2320893 346
>2297526
По какой причине make может не печатать выполняемые команды в процессе сборки? Запускаю с ключом --no-silent, но выхлопа нет.

Сама сборка вроде идет, но гдет в середине процесса вываливается нихуя неинформативная ошибка с вызовом bzip2 откудато из глубин мейкфайла.
Аноним 22/03/22 Втр 00:31:12 2320951 347
233498296541466[...].jpg 151Кб, 1080x1080
1080x1080
Можно ли на C# написать компилятор C под винду?
Аноним 22/03/22 Втр 01:54:46 2320974 348
>>2320951
Можно всё, обычно вопрос стоит - нахуя.
Аноним 22/03/22 Втр 11:20:11 2321095 349
>>2320951
компилятор можно написать на чем угодно: на жаваскрипте, питоне, сишарпе и даже авке, только на штмл и цсс не получится наверное
Аноним 22/03/22 Втр 11:21:24 2321096 350
>>2321095
>только на штмл и цсс не получится наверное
Потому что это не языки программирования.
Аноним 22/03/22 Втр 12:41:18 2321137 351
image.png 14Кб, 403x293
403x293
Помогите продавцу мяса разобраться с циклом
Хочу сделать проверку допустимости ввода только чисел, которые при соблюдении условия будут записываться в массив.
Если ввожу только числа, то программка работает, а если ввожу другой символ, то консолька зависает. Объясните пожалуйста
Аноним 22/03/22 Втр 12:44:34 2321139 352
>>2321137
Считывай в строку, а после пройдись по ней функцей isdigit, дальше через atoi преобразуй строку в int, размер буфера (для строки) будет равен `sizeof(#__INT_MAX__) + 1`.
Аноним 22/03/22 Втр 12:45:59 2321140 353
>>2321139
>`sizeof(#__INT_MAX__) + 1`
__INT_MAX__ - максимальное значение int в десятичной системе, в строковом представлении, + 1 для знака и еще + 1 для терминального нуля.
Аноним 22/03/22 Втр 12:47:54 2321142 354
>>2321139
А можно ли как-то сделать без функций атой, сайзоф и т.п.? Я пока что ещё не дошел до этих тем с работами со строками, пока хочу разобраться как циклы сделать с помощью простых отношений
Аноним 22/03/22 Втр 12:55:08 2321148 355
>>2321137
Похоже у меня нет случая для while(0)?
Поэтому консолька не знает что делать в такой ситуации, когда вводится не число
Аноним 22/03/22 Втр 12:56:04 2321149 356
Аноним 22/03/22 Втр 12:59:54 2321150 357
Аноним 22/03/22 Втр 13:02:59 2321153 358
>>2321150
Но в примере все равно происходит неправильная обработка строк вида "1000qwerty", потому что scanf считывает только 1000, а последующее чтение возвращает "qwerty", поэтому очистку stdin надо сделать общей для 2 случаев, то есть вынести за проверку.
Аноним 22/03/22 Втр 13:12:52 2321159 359
>>2321150
>>2321153
Точно!
Совсем позабыл про эти потоки ввода и вывода. Буду разбираться. Большое спасибо
Аноним 22/03/22 Втр 16:00:32 2321278 360
>>2320974
Ответ, как всегда, один - а хули нет?
Аноним 23/03/22 Срд 00:58:21 2321598 361
Анончики-прогеры, такой вопрос
Почему-то иногда при запуска кода на Си(1 раз из 5), в переменные записывается какая-то дрянь, работал с указателями, сначала думал, что может неправильно память выделял, но после перепроверки и просмотра кода построчно понял, что все нормально, проблема в том, что только в некоторых ячейках памяти матрицы какая-то ерунда, в остальных все нормально, выделял память под матрицу char.
операционная система Windows 10, процессор AMD, работал на ноуте, был разряжен до 15 процентов
Аноним 23/03/22 Срд 01:44:50 2321605 362
>>2321603
/
Назначение: выводит на консоль интерпритации, где формула принимает 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");
}
Аноним 23/03/22 Срд 01:46:27 2321606 363
>>2321603
>>2321605
Блять, сранная табуляция и звёзды съехали
Аноним 23/03/22 Срд 01:48:42 2321609 364
/
Назначение: выводит на консоль интерпритации, где формула принимает 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");
}
Аноним 23/03/22 Срд 02:01:10 2321612 365
1647990068595.jpg 335Кб, 1080x2340
1080x2340
>>2321610
Указатели проебались, ибо текст интерпритировал как разметку
Аноним 23/03/22 Срд 02:02:40 2321613 366
1647990158931.jpg 306Кб, 1080x2340
1080x2340
Аноним 23/03/22 Срд 02:04:36 2321614 367
Короче, условно говоря, при запуске кода каждый 5-7 раз не могу дойти до пункта освободил битс, то есть матрицу свою, почему так - понять не могу
Аноним 23/03/22 Срд 02:07:34 2321615 368
>>2321612
А блять, я понял почему, потому что я выделил память не под char*(указатель на char), а просто на char, пиздец, бля
Ебался три часа из-за одной строчки
Аноним 23/03/22 Срд 02:10:27 2321617 369
>>2321615
>>2321616
Да, я уже понял, когда покушал сразу заметил ошибку
Аноним 23/03/22 Срд 12:34:05 2321715 370
image.png 6Кб, 296x210
296x210
Здравствуйте, объясните Гене Букину.

Есть массив, и в нем надо найти символ, когда он встречается в первый раз.
Я создал массив, сохраняю символ в переменную и передаю массив и символ в функцию, которая должна вернуть мне адрес ячейки, где символ встречается в первый раз.
Но я запутался с этими типами и указателями. Максимум что получается это вернуть значение по адресу, но не сам адрес.
Помогите, прошу...
Аноним 23/03/22 Срд 13:01:28 2321727 371
>>2321715
>return &text
Ты возвращаешь адрес указателя, а не адрес, на который он указывает. Возвращай сам указатель: return text
Аноним 23/03/22 Срд 13:08:46 2321734 372
>>2321727
Я уж пробовал и так, но не работает, он ругается говорит

error: returning 'char *' from a function with return type 'char' makes integer from pointer without a cast [-Wint-conversion]
40 | return text;


Аноним 23/03/22 Срд 13:11:41 2321738 373
>>2321734
В объявление функции ты должен указать возвращаемый тип данных. Вместо "char searh(...)", "char* search", так как при возврате переменной text, из функции возвращается адрес на char, а не char
Аноним 23/03/22 Срд 13:12:07 2321740 374
>>2321727
>>2321734
хехе объявил функцию как указатель и все получилось
ппц интересно
если не трудно объясните пожалуйста. я еще только прохожу указатели
Аноним 23/03/22 Срд 13:12:59 2321742 375
>>2321738
Спасибо, только что додумался. до этого так не делал ни разу. Объявлял функцию как функцию, а не указатель
Аноним 23/03/22 Срд 13:14:41 2321743 376
>>2321738
Но что-то мне подсказывает, что можно как-то сделать так чтобы вернуть адрес ячейки можно было бы вернуть из функции объявленной без звездочки.
Можно ли так?
Аноним 23/03/22 Срд 13:23:31 2321748 377
>>2321743
Нет, так нельзя, потому что возвращаемый тип данных должен соответствовать объявлению функции. Возвращаешься указатель -- функций объявлена, как указатель, возвращаешь char -- функция объявлена, как char, и т.д.
Аноним 23/03/22 Срд 13:25:53 2321755 378
>>2321748
Понял. Большое спасибо. В книге видимо упустил такое
Аноним 23/03/22 Срд 18:07:56 2321889 379
255621571349504[...].jpg 88Кб, 1080x1080
1080x1080
>>2321095
А на на лиспе можно? Под винду.
Аноним 23/03/22 Срд 20:50:55 2321969 380
Объясните нубу, почему звездочка указателя должна являться частью имени переменной, а не типа данных
(void *a,b; вылетит с ошибкой "нельзя переменную void")
Из за этого для объявления указателя на функцию нужно лишние скобочки писать, а профит в чем?
Аноним 23/03/22 Срд 23:24:13 2322048 381
>>2321969
Можно в одну строку писать char c[99], @pc = c;
Аноним 24/03/22 Чтв 03:11:42 2322086 382
>>2321969
>а профит в чем?
Я так понимаю, что можно объявить и переменную и указатель на неё
int a, pa, b, pb;
Аноним 24/03/22 Чтв 08:16:41 2322121 383
>>2321969
>Объясните нубу, почему звездочка указателя должна являться частью имени переменной, а не типа данных
Указатель не является типом.
>Из за этого для объявления указателя на функцию нужно лишние скобочки писать
Не нужно.
Аноним 24/03/22 Чтв 08:48:42 2322132 384
>>2321743
Адрес памяти явно в char (1 байт) не поместится - дальше сам.
Аноним 24/03/22 Чтв 08:50:09 2322135 385
>>2322132
Возвращаемое значение разве не увеличивается до размера регистра?
Аноним 24/03/22 Чтв 09:33:54 2322151 386
>>2322135
В GCC вырождается в movzbl, а это, если я верно знаю, загружает 1 байт и дополняет нулями до размера регистра.
Аноним 24/03/22 Чтв 10:53:44 2322181 387
Стоит проходить cs50? Почему надо учить си, а не сразу c++?
Аноним 24/03/22 Чтв 11:04:31 2322186 388
>>2322181
>Стоит проходить cs50?
Если хочешь.
>Почему надо учить си, а не сразу c++?
Понимание реализаций C++ кода.
Аноним 24/03/22 Чтв 20:14:45 2322493 389
>>2321889
Компиляторы на лиспе писали ещё тогда, когда твоя бабушка решила поебаться с твоим дедушкой
Аноним 25/03/22 Птн 03:19:45 2322640 390
Аноним 25/03/22 Птн 15:44:15 2322959 391
Можно ли вычислить результат функции на этапе компиляции?
Аноним 25/03/22 Птн 15:51:27 2322973 392
Аноним 25/03/22 Птн 21:18:44 2323227 393
>>2322959
Вот это скомпилируется в 2 команды:

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

float g(void)
{
return f(1.25);
}
Аноним 25/03/22 Птн 21:33:25 2323231 394
>>2323227
Мне не оптимизация нужна, а аналог constexpr из C++, сотни строк макросов идут нахуй.
Аноним 25/03/22 Птн 21:37:04 2323233 395
Аноним 26/03/22 Суб 09:45:55 2323340 396
arr.png 14Кб, 477x357
477x357
почему так нельзя?
Аноним 26/03/22 Суб 09:54:51 2323345 397
>>2323340
Потому что соси хуй, быдло
Аноним 26/03/22 Суб 11:39:55 2323410 398
>>2323340
const (костанта) == "неизменяемое". И тут ты такой int в char[] превращаешь. Тут даже Java спросит "а не сделать ли get(), set() и cast"?
Аноним 26/03/22 Суб 11:52:28 2323415 399
>>2323410
Сам понял, что написал?
Аноним 26/03/22 Суб 12:20:58 2323427 400
Аноним 26/03/22 Суб 12:22:19 2323428 401
>>2323410
>int в char[] превращаешь
Ну это явная шизофрения уже, типичное весеннее обострение.
>>2323415
А ты дурачок, если сразу шизика не распознал.
Аноним 26/03/22 Суб 12:23:19 2323429 402
>>2323427
Чем эти даунские прыщавые пидоры оправдываются что раньше было нельзя?
Аноним 26/03/22 Суб 12:26:45 2323432 403
>>2323429
А, у тебя вне функции.
Тогда так: в clang можно! А в гцц все по стандарту 99.
Аноним 26/03/22 Суб 12:29:43 2323433 404
>>2323432
>по стандарту 99.
То есть в стандарте константа не константа.
Нет, не верю. Комитет те еще пидорасины, но не до такой степени.
Это прыщавые дебилы обосрались.
Аноним 26/03/22 Суб 13:33:18 2323479 405

>>2323340
Вы очень умный и внимательный
Аноним 26/03/22 Суб 13:36:27 2323485 406
>>2323479
А ты тупой уебок.
Нахуй иди.
Аноним 26/03/22 Суб 13:38:00 2323488 407
>>2323340
По умолчанию в стеке тебе делать нечего, тем более тупой индусской макаке.
>>2323427
Это была хуевая идея. Если так надо насрать в стеке, есть alloca(), однако давать срать по умолчанию даже без осознания этого факта программистом, ну это дно. Или же это показатель, что именно язык "С" не предназначен для обычных людей, а строго инструмент специалистов досконально понимающих такое подъебки.
Аноним 26/03/22 Суб 13:43:38 2323496 408
>>2323488
>в стеке тебе делать нечего
Или что, ножкой топнешь?
Аноним 26/03/22 Суб 13:52:26 2323505 409
>>2323488
>По умолчанию в стеке тебе делать нечего
Что значит "по умолчанию"?
>тем более тупой индусской макаке
Как ты определил, что он макака?
>Если так надо насрать в стеке, есть alloca()
Нет. https://www.opennet.ru/man.shtml?topic=alloca
>однако давать срать по умолчанию даже без осознания этого факта программистом
Что значит "по умолчанию"?
Аноним 26/03/22 Суб 14:11:38 2323516 410
>>2323505
Значит что я мать твою ебал.
Аноним 26/03/22 Суб 15:37:33 2323590 411
>>2323505
>Что значит "по умолчанию"?
Без специальных действие с твоей стороны для получения доступа, что будет означать ты понимаешь что делаешь и лезешь туда намеренно. А по-умолчанию, когда просто пишешь обычный код, но он лезет куда не надо без твоего разумения. Последствия такой хуйни "я пишу сам не знаю что" самые печальные. Однако, последнее - естественное положение вещей в говномакакинге. Эти ввыродки думают, что так и надо, что это и етсь программирование, не осознавая, что в си это не работает, так нельзя тут.

>Как ты определил, что он макака?
В си, не знать про стек. Залетная макака, ну или серь тролит тупостью.
Аноним 26/03/22 Суб 17:10:03 2323655 412
>>2323590
VLA, мамоёб, ты в него умеешь?
Аноним 26/03/22 Суб 21:26:37 2323741 413
Совет деда: VLA и alloca не нужны. Если размер массива ограничен парой килобайт, то задай константу и выдели фиксированный кусок стека. Если нет - не стреляй в ногу, используй маллок.
Аноним 27/03/22 Вск 12:01:11 2323906 414
>>2323904
Тебе расписать, что в нем говно?
Аноним 27/03/22 Вск 12:29:03 2323925 415
Аноним 27/03/22 Вск 12:42:19 2323934 416
>>2323932
Варнинги и ошибки компиляции, если я захочу передать const char X в функцию, которая принимает char X, но при этом работает с ним, как с const char X, то мне придется отключать варнинги и ошибки.
Аноним 27/03/22 Вск 13:11:58 2323954 417
>>2323909
>код я писал в виме из за чего форматирование код машет быть хуёвой
Хуевое оправдание.
Аноним 27/03/22 Вск 13:26:51 2323966 418
>>2323963
>Скинь тогда плагин для форматирования кода в виме
clang-format (не плагин), но не рекомендую использовать версии до 15, мало функционала может оказаться.
Аноним 27/03/22 Вск 13:36:22 2323970 419
image 98Кб, 1005x714
1005x714
Аноним 27/03/22 Вск 19:13:52 2324147 420
>>2322048
>>2322086
Спасибо, хотя все еще кажется что не перевешивает
>>2322121
> Указатель не является типом.
Передай в функцию, требующую указатель на int целочисленное значение и почитай что напишет компилятор
> Не нужно.
int foo(int a, double b) создаст функцию с возвращаемым типом int, единственный способ создать указатель - добавить скобки
int (*foo)(int a, double b);

Попробуй разобраться в вопросе прежде чем щитпостить
Аноним 28/03/22 Пнд 09:17:27 2324401 421
>>2324147
>создаст функцию
declaration
>создать указатель
definition
Аноним 28/03/22 Пнд 13:23:33 2324535 422
image 111Кб, 712x199
712x199
Кто-нибудь может объяснить какого хуя?
Аноним 28/03/22 Пнд 13:42:04 2324548 423
>>2324535
Во всех подобных случаях смотри асм-выхлоп, это многое прояснит. Вангую следующее: поскольку printf принимает любое количество параметров, они идут по cdecl конвенции, т.е. ты кладешь на стек один байт char и следом четыре байта int, а printf читает два раза по четыре байта unsigned, поэтому и распидорашивает все. Но если такого уровня ответ тебя не устраивает, то кастуй char в unsigned.
Аноним 28/03/22 Пнд 13:56:11 2324556 424
image 267Кб, 740x421
740x421
>>2324548
>смотри асм-выхлоп
так там же вся суть происходит в принтфе, в котором много вложенных вызовов всяких других функций, такое я хз как смотреть
>ты кладешь на стек один байт
вот кстати что видно из асма, так это то что кладётся именно 4 байта, и вообще не видел чтоб когда-нибудь было по-другому
>кастуй char в unsigned
так оно же в памяти будет в таком же виде храниться, не?
вот просто можно даже абстрагироваться от сканфа, как так получается что чар по модулю больше 255
Аноним 28/03/22 Пнд 14:14:03 2324569 425
>>2324556
> кладётся именно 4 байта
Я почему-то подумал, что идет именно один байт. Но вообще это логично, что это не так, стек выгодно выровненным держать.
> так там же вся суть происходит в принтфе
Ну почему, у тебя уже видно как минимум то, что movsx по своему определению пробрасывает знаковый бит, а т.к. пишется unsigned, то он в 31 разряде и дает тебе твои 4 миллиарда.
> так оно же в памяти будет в таком же виде храниться, не?
Не, в памяти char хранится именно как один байт. Но это без учета возможного выравнивания полей в структурах, ну или, как видно, на стеке.
Аноним 28/03/22 Пнд 14:25:18 2324576 426
>>2324569
>movsx по своему определению пробрасывает знаковый бит, а т.к. пишется unsigned, то он в 31 разряде и дает тебе твои 4 миллиарда.
а вот этого я почему-то не заметил... тогда вопрос решен, спасибо
>Не, в памяти char хранится именно как один байт
Я знаю что один байт, я про то что signed и unsigned это одно и то же значение
Аноним 28/03/22 Пнд 14:34:35 2324579 427
>>2324576
> я про то что signed и unsigned это одно и то же значение
Ну как бы да, нужно только не забывать, что там UB дохуя где на операциях на знаковых. Но отметить хотел бы немного ебанутую терминологию, которая ввела тебя в заблуждение: unsigned сам по себе в сишке это сокращение от unsigned long, он 4 байта на большинстве платформ.
Аноним 28/03/22 Пнд 14:39:08 2324580 428
>>2324579
>unsigned long
Вроде unsigned int. Ну да, я знаю, просто мы говорили про чар и я подумал что ты имеешь в виду unsigned char.
Аноним 28/03/22 Пнд 16:15:20 2324656 429
>>2324580
> Вроде unsigned int.
Да, ты прав, я опечатался.
Аноним 28/03/22 Пнд 17:14:29 2324687 430
Аноним 29/03/22 Втр 06:13:40 2324913 431
>>2324535
Ты вводишь 2 символа, а scanf ожидает у тебя 2 строки, которые можно преобразовать в целочисленные типы, в итоге получается, что ты просто выводишь неинициализированные значения, которые приводишь со знакового и более короткого к unsigned.
Аноним 29/03/22 Втр 11:15:15 2325007 432
Что должен сегодня знать и уметь C junior?Какие программы,фреймворки?
Аноним 29/03/22 Втр 11:17:01 2325008 433
>>2325007
>Что должен сегодня знать и уметь
Все.
>C junior
Их нет.
>Какие программы,
Отладчики.
>фреймворки?
Их нет.
Аноним 30/03/22 Срд 07:01:19 2325528 434
>>2325007
>>2325507
>Что должен сегодня знать и уметь C junior?Какие программы,фреймворки?
Это.
Аноним 30/03/22 Срд 07:05:59 2325529 435
Обьектно ориентированное программировании и абстракции действительно не ускоряют написание кода?
Аноним 30/03/22 Срд 07:07:19 2325530 436
>>2325529
Как они должны ускорять его?
Аноним 30/03/22 Срд 10:57:14 2325625 437
Абстракции позволяют писать код, без них ты бы до сих пор писал пиложения на ассемблере. Да даже ассемблер -- абстракция над схемами из транзисторов.

ООП помогает поддерживать код в больших проектах. С ним проще ориентироваться в коде. Ускоряют написание -- хз, что ты имеешь в виду -- какой-нибудь костыль или маленькое приложение быстрее напишешь без ооп, но потом будешь страдать при дебаге.
Аноним 30/03/22 Срд 13:56:13 2325708 438
>>2325625
>ООП помогает поддерживать код в больших проектах
Поправка: поддерживать код в больших проектах, силами большой команды. Если ты делаешь в одно рыло, но в принципе тоже приятнее будет, но не так остро, когда рыл много

>какой-нибудь костыль или маленькое приложение быстрее напишешь без ооп, но потом будешь страдать при дебаге.
Нет. Меньше кода - меньше ебли с отладкой.
Аноним 30/03/22 Срд 14:39:54 2325740 439
>>2325708
>в больших проектах, силами большой команды
Тащемто достаточно модульности кода + распределения ответственности.
Аноним 30/03/22 Срд 15:32:28 2325772 440
>>2325625
>Да даже ассемблер -- абстракция над схемами из транзисторов.
Нет.
>ООП помогает поддерживать код в больших проектах.
Нет.
>С ним проще ориентироваться в коде.
Вкусовщина.
>но потом будешь страдать при дебаге.
Нет.
Аноним 31/03/22 Чтв 16:25:46 2326565 441
>>2325625
>Да даже ассемблер -- абстракция над схемами из транзисторов.

Но ассемблер это всего-лишь язык. Вот архитектура это непосредственная абстракция над микроархитектурой, а ОС - над архитектурами. Где тут место языкам и в частности ассемблеру?
Аноним 01/04/22 Птн 01:50:39 2326864 442
image.png 26Кб, 749x609
749x609
image.png 13Кб, 544x237
544x237
image.png 15Кб, 542x320
542x320
В чём моя проблема?
почему сравнение при высчитывании второй функции не работает, а с первой всё нормально?
Аноним 01/04/22 Птн 01:54:26 2326865 443
image.png 1Кб, 215x54
215x54
>>2326864
использовал бесконечности для сравнения, в этом проблема?
Аноним 01/04/22 Птн 09:09:05 2326901 444
>>2326865
Какое описание задачи? По коду нельзя понять, что ты хотел сделать и где ошибка, что такое первая и вторая функция, какая проверка не работает?
Возможно проблема в том, что ты переопределяешь переменные `min` и `max` внутри блоков проверок.
Аноним 01/04/22 Птн 15:02:56 2327095 445
>>2326901
>Какое описание задачи?
Больше интересно, в какой тупорылой шараге задают математические задачки на си, самом непригодном для математики языке.
Аноним 01/04/22 Птн 15:19:30 2327110 446
>>2327095
А самый пригодный какой?
Аноним 01/04/22 Птн 15:21:04 2327111 447
>>2327110
Любой с удобной реализацией длинной арифметикой из коробки.
Аноним 01/04/22 Птн 15:26:04 2327117 448
effect.webm 1026Кб, 1908x1080, 00:00:12
1908x1080
2515445646545641.png 101Кб, 512x512
512x512
Вопрос к эмбед-господам, если такие тут всё ещё обитают.

Для домашней махарайки хотел бы реализовать эффект из программы 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 символов полученной строки на каждый элемент массива. А потом сдвигать всё это дело.
Идея крайне говёная и плохо подходит для эмбед. Но это вобще крайний вариант, прежде чем застрелиться.

П.С. Тем, кому влом помочь - пожалуйста, просто пройдите мимо. Вам не впервой.
Аноним 01/04/22 Птн 16:48:07 2327176 449
Аноним 01/04/22 Птн 17:15:28 2327199 450
dfd3445tv4gdsd.jpg 6Кб, 221x228
221x228
>>2327176
Не хватает прокрутки вправо при достижении последнего символа строки.

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

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

Я пока пойду вкуривать что к чему в том, что ты скинул. У меня это много времени займёт.
Аноним 01/04/22 Птн 17:39:32 2327210 451
Аноним 01/04/22 Птн 17:41:54 2327211 452
>>2327199
>>2327210
Смещения и рывки сам исправляй, мне лень офсеты считать.
Аноним 01/04/22 Птн 18:45:18 2327259 453
image 118Кб, 419x435
419x435
>>2327117
Не совсем понял, что ты хочешь сделать. Обычно текст отрисовывают в видеобуфер(массив, который содержит состояния точек-пикселей), откуда уже последовательно столбец-за столбцом выводится на матрицу. Сдвиги и промежутки делаются элементарно изменением индекса при чтении этого буфера.
Аноним 02/04/22 Суб 04:11:24 2327418 454
>>2327211
>Смещения и рывки сам исправляй, мне лень офсеты считать.
Окей, попробую. Спасибо за помощь и уделённое время.
Ты это, в тред иногда заходи - если разберусь с кодом и он взлетит, то хотел бы отблагодарить. Хотя бы пополнением абонентки на телефон любым способом.

>>2327259
>Не совсем понял, что ты хочешь сделать.
Хотелось бы избежать использование промежуточного буфера и транслировать на лету текстовые символы + эффекты напрямую в массив, который отображает текущее состояние светодиодов на матрице. Памяти на устройстве очень мало.
Аноним 02/04/22 Суб 10:43:46 2327467 455
Почему FILE в Си написан капсом? Почему не file_t?
Аноним 02/04/22 Суб 10:48:24 2327469 456
>>2327467
Такие же вопросы касаются всех имен в стандартной библиотеке, почему они выглядят, как не читаемое говно? Ебанные деды.
Аноним 02/04/22 Суб 12:08:23 2327523 457
>>2327469
У дедов было мало памяти и скорости, дурачок, не более шести символов в идентификаторе гарантировалось. Ты ещё про линуксовые команды пожалуйся, ls cp и т.д.
Аноним 02/04/22 Суб 12:11:35 2327527 458
>>2327523
>У дедов было мало памяти и скорости, дурачок, не более шести символов в идентификаторе гарантировалось.
Использовать хэши?
Аноним 02/04/22 Суб 18:53:34 2327743 459
45425882828.png 289Кб, 800x640
800x640
>>2327211
Анончик, спасибо за старание. Но, кажется, твой код мимо кассы. У тебя завязка на шрифт и консольку. Ну или, скорее всего, я не догоняю, как адаптировать код под свои нужды.

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

Чтобы твои труда не пропали даром - напиши, как тебя отблагодарить.
Спасибо тебе, добрый человек.
Аноним 02/04/22 Суб 19:29:53 2327772 460
>>2327743
Это пример алгоритма без дополнительных буферов, просто адаптируй вывод на матрицу, сделай абстрактную функцию print_matrix, которая будет преобразовывать смещения под твои данные, у тебя вроде координаты на ней какие-то ебанутые, на вход которой будет подаваться массив значений, типа "10001", где 1 - это включение светодиода, 0 - это выключение. В итоге, сигнал должен будет подаваться на "линию" светодиодов. После чего замени в алгоритме printf на свой print_matrix и подправь остальные данные, как тебе надо. Обнуление состояний светодиодов в таком случае не нужно будет, потому что я же не перезаписываю руками символы в терминале, их перезаписывает следующее число.
Аноним 02/04/22 Суб 20:08:38 2327797 461
200x200bb.jpg 8Кб, 200x200
200x200
>>2327772
Если ты не слишком занят, то напиши, плез, на мыло kaija78@gmail.com.
Честно - я не очень понимаю, что творится в твоём коде и смог выделить только некоторые части.
П.С. Мыло фейковое, для связи.
Аноним 02/04/22 Суб 20:49:57 2327812 462
Аноним 02/04/22 Суб 21:02:11 2327820 463
>>2327812
>>2327797
Там кстати в комментариях ошибка, в выводе справа налево, но думаю это понятно, там текущая и последняя цифра перепутаны копипастом.
Аноним 03/04/22 Вск 14:11:33 2328113 464
Безымянный-файл[...].png 468Кб, 690x862
690x862
В хидерах можно определять только и только инлайны, верно?
Аноним 03/04/22 Вск 14:12:06 2328114 465
Аноним 03/04/22 Вск 14:37:09 2328131 466
Аноним 03/04/22 Вск 15:52:40 2328168 467
>>2297526 (OP)
Аноны напишите годных, заковыристых а так же уебанских вопросов, которые задавали вам на собесе Си. Особенно в эмбеддед.

На последнем собесе мне задавали вопросы самой разной группы инвалидности, например, но среди них можно найти годноту:
1. Назовите отличия стандартов с89 и с99 - справочная информация задрачиванию не подлежит
2. Посмотрите на этот лист А4 кода и найдите все типы ошибок которые тут есть, вплоть до звездочек, точек с запятой, объявления переменных после оперидрования с другими переменными (привет из С89) и прочей иногда не особо очевидной хуеты.
3. Сможет ли МК заработать после первой микросекунды вклчения? - как по мне вопрос хуйня, т.к. он требует некоторых знаний в электронике, которые эмбеддер не обязан иметь.
4. С какими типами оптимизации вы работаете?
5. Как происходит прерывание? вопрос норм, полагаю
6. Что будет если, 2 ядра работающие в параллель, одновременно считывают из одной ячейки памяти и инкреентируют её? Как предотвратить такую ситуацию? - считаю достаточно хорошим вопросом
7. Мьютексы, хуютексы, volatile, static, константный указатель, указатель на константу, указатель на функцию, битовые операции - задают везде по дефолту
Аноним 03/04/22 Вск 16:04:34 2328175 468
>>2328168
Пиздец, я думал хуже тюремных загадок ничего в жизни не узнаю. Уровень такой же, что и у этих вопросов.
Аноним 03/04/22 Вск 16:04:39 2328176 469
>>2328114
>>2328131
Т.е. можно смело заебенить тела функций?
Аноним 03/04/22 Вск 16:05:35 2328177 470
Аноним 03/04/22 Вск 16:10:08 2328179 471
>>2328175
Вот поэтому и спрашиваю, заебали валить хуетой справочной по 2-е, 3-е, как будто себе невротебаться техлида ищут толпой.
Аноним 03/04/22 Вск 16:38:18 2328196 472
>>2328177
Спасибо, проверил - действительно можно.
А чому тогда во всех туторах для вкатывальщиков рассказывается о хидер-декларациях и .с-имплементациях? Это что-то вроде гуд-практис?
Аноним 03/04/22 Вск 17:04:12 2328205 473
>>2328168
> 3. Сможет ли МК заработать после первой микросекунды вклчения? - как по мне вопрос хуйня, т.к. он требует некоторых знаний в электронике, которые эмбеддер не обязан иметь.
Ну, если в резюме написано, что работал с мк, то это хороший способ проверить, изучил ли чел хоть один даташит.
> 4. С какими типами оптимизации вы работаете?
Ыыы.

Мне задавали вопрос, как предельно точно синхронизировать время между двумя машинами. Надо было расписать пакеты с метками времени и расчеты, я затупил.
Аноним 03/04/22 Вск 17:23:02 2328210 474
>>2328205
>Ну, если в резюме написано, что работал с мк, то это хороший способ проверить, изучил ли чел хоть один даташит.
Тут дело-то не совсем в МК, если говорить про программу - по любому нет, какой бы МК не был. Сначала микроконтроллер настраивает периферию. Это уже ассемблерная часть но пока до нее далеко, см ниже. И это почти всегда элементарный и очевидный ответ.

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

А если говорить еще и про обвязку и саму работу в целом, т.е. стартанул или нет - то совсем дргуое дело: если посмотреть осциллографом на резонатор, то он стартутет как нарастающая волна (скорее всего из-за конденсаторов возле него). Итог - МК стоит в супоре в самом начале, т.к. резонанор не запущен.
Аноним 03/04/22 Вск 17:24:18 2328215 475
>>2328205
>Надо было расписать пакеты с метками времени и расчеты, я затупил.
В NTP протоколе вроде отправляются пакеты с поправкой на пинг, не?
Аноним 03/04/22 Вск 17:48:29 2328226 476
215453258785623[...].jpg 8Кб, 225x225
225x225
>>2327820
>>2327812
Короче, чувак, тебя можно нанять для доделки?
Если есть свободное время.

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

Да - хорошо, нет - хуй знает что с твоим кодом делать.
Видимо я совсем тупой.
Аноним 03/04/22 Вск 19:59:39 2328343 477
Аноним 03/04/22 Вск 20:14:27 2328361 478
>>2328176
Да. Гугли single header library.

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

Если тело функции находиться в хедере, то его нужно отделять от объявления блоками #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"
...


Иначе при сборке из нескольких .с файлов использующих это хедер, будет ошибка линковки из-за повторного включения кода фунции.
Аноним 03/04/22 Вск 20:21:52 2328366 479
>>2328210
Я бы ответил, что тактовый генератор стабилизируется не сразу и потому в МК есть таймер запуска.
>>2328215
Не знаю, но это пришлось бы расписать.
Аноним 03/04/22 Вск 22:15:23 2328448 480
а если я создал enum для флагов что-то типа
enum {
...
flag_end = 0x1000 0000
}
то как будет работать этот enum на системах, меньшей битности 16 и 8 битных, он урежет мне все флаги по 0x1000 и 0x10 соответственно?
или исходя из того, что int всегда должен быть не менее 4 байт по стандарту у меня всегда есть как минимум эти 32 бита?
Аноним 03/04/22 Вск 22:44:02 2328460 481
>>2328448
> int всегда должен быть не менее 4 байт по стандарту
Не должен.
>как будет работать этот enum
Как угодно.
Аноним 03/04/22 Вск 22:51:53 2328467 482
>>2328460
но в стандарте 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.
Аноним 03/04/22 Вск 22:56:09 2328472 483
>>2328460
а про int написано, что

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

т.е. получается, что можно уверенно хранить флаги до 0x8000
потому что даже на 8 битных системах, int будет не менее 2 байт
Аноним 04/04/22 Пнд 09:32:28 2328570 484
586f6863c361882[...].jpg 219Кб, 945x686
945x686
rgbledmatrix .webm 4775Кб, 2160x3840, 00:00:18
2160x3840
>>2328343
Хорошо, попробуем пойти более сложным путём...

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

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 бит в строке?
Аноним 04/04/22 Пнд 09:33:49 2328572 485
Аноним 04/04/22 Пнд 09:44:29 2328574 486
>>2328570
>Я правильно интерпретировал эту часть кода?
Да.
>Я парвильно понимаю, что из целой строки выводятся только первые _DIGITS_FONT_WIDGTH - offset символов?
Да.
>Т.е. из битового представления строки надо считать только первые _DIGITS_FONT_WIDGTH - offset бит?
Да.
>Допустим, строка 0x0F -> читаем первые 5 бит (левый бит MSB) -> будет считано 0000 1
Да.
>Или пропустить первые _DIGITS_FONT_WIDGTH + offset бит в строке?
Да и вывести остатки, то есть 0x0F + 5 бит -> 111.
Аноним 04/04/22 Пнд 09:46:04 2328575 487
>>2297526 (OP)
ИЩУ УЧЕБНИК
САП! Ищу учебник какого-то Русского препода, вроде в двух томах
Там он обучает программированию на С в Linux
Помогите пожалуйста найти
Аноним 04/04/22 Пнд 09:57:59 2328580 488
>>2328572
89: int last_i = 0;
89: int last_i = string[0]; // FIX

В остальном коде разбираться лень, но вроде все правильно, хотя выглядит вроде правильно.
Аноним 04/04/22 Пнд 10:05:51 2328583 489
>>2328580
>В остальном коде разбираться лень, но вроде все правильно, хотя выглядит вроде правильно.
Если бы было правильно - оно бы работало :) А судя по моей вебмке, работает как-то не очень...

>89: int last_i = string[0]; // FIX
Так это *(string + last_i) - указывает на символ в строке с индексом 0. Потому что last_i = 0.
Аноним 04/04/22 Пнд 10:24:16 2328594 490
>>2328583
>(font_line & (0x01 << bit))
>(font_line & (0x80 >> bit))
Возможно проблема в этом.
Аноним 04/04/22 Пнд 10:40:25 2328601 491
>>2328583
А блин, ты же видек скинул, возможно проблема в шрифтах

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

И еще попробуй обрезать значения, типа xpos > FONT_WIDTH, значит xpos = FONT_WIDTH и продолжать вывод, такое же и с отрицательными (меньше чем 0).
Аноним 04/04/22 Пнд 11:00:11 2328615 492
>>2328594
>Возможно проблема в этом.
В хедере задефайнено #define LSB_FONT false
Так что заходит в эту строку
>(font_line & (0x80 >> bit))
И это просто проверка - что в байте в конкретном бите - 0 или 1 (если 0 - пиксель погашен, если 1 - зажигаем нужным цветом), которая производится с какого-то бита или до какого-то бита в зависимости от offset.

>>2328601
>И еще попробуй обрезать значения, типа xpos > FONT_WIDTH, значит xpos = FONT_WIDTH и продолжать вывод, такое же и с отрицательными (меньше чем 0).
Хорошо. Ушёл возиться.
Аноним 04/04/22 Пнд 11:03:37 2328617 493
>>2328615
>И это просто проверка - что в байте в конкретном бите - 0 или 1 (если 0 - пиксель погашен, если 1 - зажигаем нужным цветом), которая производится с какого-то бита или до какого-то бита в зависимости от offset.
У тебя просто `const unsigned char font_line` объявлен, без указателя, я и думаю, что это хуйня какая-то.
Аноним 04/04/22 Пнд 11:49:00 2328646 494
typo.png 42Кб, 1099x395
1099x395
>>2328617
>объявлен, без указателя, я и думаю, что это хуйня какая-то.
Ок, как бедт правильно?

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

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) // функция, принимающая строки символа
Аноним 04/04/22 Пнд 11:52:28 2328649 495
>>2328646
>Ок, как бедт правильно?
Все было правильно наверно, просто `const unsgined char` странно выглядит.
Аноним 04/04/22 Пнд 12:07:57 2328659 496
Аноним 04/04/22 Пнд 12:49:42 2328695 497
>>2328659
Да. Проверил на другой функции, которая просто отрисовывает текстовые символы из массива шрифта на матрице. Без сдвигов.
Аноним 04/04/22 Пнд 12:59:45 2328708 498
>>2328695
>getPixelStripPosition(ypos, xpos);
Координаты не перепутал?
Аноним 04/04/22 Пнд 13:04:44 2328712 499
>>2328708
У меня матрица повёрнута на 90 градусов по часов стрелке.

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

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

https://godbolt.org/z/sP9dPYj8M
Аноним 04/04/22 Пнд 13:08:07 2328713 500
>>2328708
>Координаты не перепутал?
Функция нужна?
Там описание есть небольшое. Замудрено пиздец с координатами.
Аноним 04/04/22 Пнд 13:13:03 2328715 501
>>2328713
Попробуй без цикла просто вывести 0, потом смести его на пару светодиодов, проверь, как он отображается. И логи по координатам посмотри и проверь.
Аноним 04/04/22 Пнд 13:36:55 2328729 502
>>2328713
И код функции getPixelStripPosition скинь, возможно проблема в ней.
Аноним 04/04/22 Пнд 13:44:27 2328736 503
Аноним 04/04/22 Пнд 14:34:49 2328773 504
NULL.webm 10393Кб, 2160x3840, 00:00:15
2160x3840
586f6863c361882[...].jpg 219Кб, 945x686
945x686
>>2328715
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);
}

Недорисовывает однин столбец.
Аноним 04/04/22 Пнд 15:04:48 2328793 505
Аноним 04/04/22 Пнд 16:14:39 2328827 506
>>2328793
Вот из-за этого пропуск что ли?

FONT_WIDTH = 5
j = 0
FONT_WIDTH - j

offset = 5
if (offset >= 0)
{
// printf("%.*s", _DIGITS_FONT_WIDGTH - offset, line);
xBitsToProcess = FONT_WIDTH - offset;
}
Аноним 04/04/22 Пнд 16:23:42 2328828 507
Аноним 04/04/22 Пнд 18:01:40 2328892 508
Аноним 04/04/22 Пнд 19:21:27 2328968 509
>>2328773
Вот набросал, нолики отрисовывает правильно, твоя функция getPixelStripPosition была заменена на массив, потому что зачем тратить время на вычисления, которые константные. Перепиши, как тебе надо, логи вроде правильные получились.
https://0bin.net/paste/gq6uNOt5#HlGfRWLlaZ7+QwI2CrUqrmjaoIeZLh41auh1dk666b2
Аноним 04/04/22 Пнд 20:15:44 2329006 510
Как учить си начинающему?
Аноним 05/04/22 Втр 06:05:07 2329179 511
Аноним 05/04/22 Втр 09:23:54 2329221 512
>>2328968
Вроде не будет работать: у тебя символ нуля отрисован полу-байтом. Тогда как в моём шрифте ширина символа 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}
Аноним 05/04/22 Втр 09:30:17 2329222 513
>>2329221
Т.е. весь шрифт пяти-битный: 5 на 5 пикселей.
Аноним 05/04/22 Втр 09:40:39 2329230 514
Почему во всяких принтах и прочих подобных функциях для строк используют char вместо unsigned char, в чем преимущество?
Аноним 05/04/22 Втр 10:47:13 2329267 515
>>2329230
Если откроешь стандартную (а не расширенную) ASCII таблицу, то там все умещается в диапазоне 0-127.
Аноним 05/04/22 Втр 10:58:26 2329274 516
>>2329267
Это не отвечает на вопрос в чем преимущество перед unsigned char тем же
Аноним 05/04/22 Втр 11:45:58 2329315 517
ИЩУ УЧЕБНИК
САП! Ищу учебник какого-то Русского препода, вроде в двух томах
Там он обучает программированию на С в Linux
Помогите пожалуйста найти
Аноним 05/04/22 Втр 12:24:03 2329344 518
>>2329315
зачем тебе по С учебник еще и двухтомный, пиши, а если что не знаешь - спрашивай и ищи инфу уже по этому делу
Аноним 05/04/22 Втр 13:17:52 2329394 519
>>2327117
>>2329221
У меня используется 5 бит шрифта, но 5 бит является 0, чтобы было так же, как на видео. Для того, как ты хочешь придется менять логику, поэтому проблема в несовместимости шрифта и алгоритма.
Аноним 05/04/22 Втр 13:41:23 2329411 520
>>2329394
>Для того, как ты хочешь придется менять логику, поэтому проблема в несовместимости шрифта и алгоритма.
Посыпаю голову пеплом
Видео - для демонстрации эффекта. У меня нет 4-ёх битного шрифта, да он мне и не подходит.

Сможешь переделать?
Если я что-то недоописал - спроси. А то опять забредём не в ту степь.
Аноним 05/04/22 Втр 13:44:19 2329412 521
Аноним 05/04/22 Втр 14:01:00 2329429 522
>>2329344
Просто там очень был хороший учебник, да еще и под Linux
А я как раз хотел изучать и С и Linux
Да и тем более, я для интереса ведь занимаюсь этим, как хобби
Мне на 28 лвл без ВО вряд ли удастся вкатиться в разработку на С, но, для себя изучать ОС и системное программирование - это круто
Аноним 05/04/22 Втр 14:38:20 2329454 523
Аноним 05/04/22 Втр 15:02:10 2329475 524
>>2329454
Имею ввиду, что если учить с нуля, по учебникам которые пишутся для изучения основ под винду, то ведь могут быть сложности? Ведь у линух есть своя специфика. Например, отсутствие bat и exe файлов, другие среды разработки, другая файловая система и т.д. и т.п. что не будет приводится в качестве примера в учебниках по С написанных под windows
Аноним 05/04/22 Втр 16:01:22 2329533 525
>>2329475
>русского препода
>С под ЛИнух
Не лучше ли подтянуть англюсик, а там - хоть KR, хоть заграницу (шутка).
Аноним 05/04/22 Втр 16:11:12 2329535 526
>>2329475
>по учебникам которые пишутся для изучения основ
Я просто не понимаю, что люди хотят узнать из книг, что нельзя узнать из документации?
Аноним 05/04/22 Втр 23:32:58 2329893 527
>>2329230
На pdp-11 char был знаковым, так было удобней Ричи. unsigned он добавил не сразу.
Аноним 05/04/22 Втр 23:54:59 2329913 528
>>2297526 (OP)
Жуки-мужики, скажите, в 29-30 лвл можно вкатиться в С без ВО?
Или для системного программирования техническое ВО необходимо?
Аноним 05/04/22 Втр 23:55:26 2329914 529
>>2329535
На Русском и адаптировано под Linux
06/04/22 Срд 07:54:04 2330014 530
>>2329475
Зачем тебе на этапе обучения такие детали? Ты же будешь использовать именно С и стандартную библиотеку. Избегай системные вызовы напрямую. А компилятор скроет от тебя детали реализации. Потом когда разберешь чуть можно смотреть книги по API и ABI Linux. Про формат elf/static/shared objects в инете статьи.
Аноним 06/04/22 Срд 08:36:06 2330027 531
>>2329429
Canonical (разработчик Linux-дистрибутива Ubuntu) выступил против войны в Украине и приостановил работу с российскими компаниями
Red hat так же объявили о полном прекращении работы в РФ.
Популярный open-source пакет начал заменять данные российских пользователей по IP на сердечки.
Один за другим Linux проекты уходят из РФ, open-source себя дискредитировал. Больше нельзя быть уверенным, что твои данные в безопасности. Нельзя быть уверенным, что твой любимый дистрибутив, которым ты пользуешься вскоре не прекратит поддержку пользователей из РФ и вовсе не остановит работу в РФ с закрытием репозиториев, поддержкой языка и т.д.
Вся эта философия open-source, свобода и т.д. оказались просто словами и враньем.
Что делать в такой ситуации? Какие искать альтернативы и остался ли безопасный дистрибутив в котором можно быть уверенным?
Аноним 06/04/22 Срд 08:38:34 2330028 532
>>2329913
Если ты до этого не вкатился, это не твое.
>ВО
Не самое важное.
Аноним 06/04/22 Срд 14:14:41 2330242 533
>>2330027
>Вся эта философия open-source, свобода и т.д. оказались просто словами и враньем.
Любая религия - враньё, однако религии не исчезают и всегда востребовваны. Подумай почему.
Аноним 06/04/22 Срд 14:28:51 2330249 534
>>2329475
>Ведь у линух есть своя специфика.
Да, и что?

>ведь могут быть сложности?
Нет. Ты должен уже понимать особенности ОС, иначе ты даже даже не пользователь компьютера, а - чайник. Такому в программировании делать нечего. Сначала нужно знать основы компьютера, и только потом заниматься его программированием. Если же ты хочешь писать универсальные мультиплатформенные скрипты, то ошмбся языком и тредом.
Аноним 07/04/22 Чтв 01:43:07 2330692 535
>>2329913
> в 29-30 лвл можно вкатиться в С
вообще без проблем, вкатывались и старше
Аноним 07/04/22 Чтв 01:44:54 2330694 536
>>2330027
нашел в каком треде такой вброс делать, тут у многих ядра в исходниках лежат и все нужные проги и либы к ним, ну дискредитирует кто-то себя, просто не собирать последние версии без собственной ревизии кода, что там изменили и просто вырезать все подобные сердечки
Аноним 07/04/22 Чтв 09:07:46 2330756 537
>>2330694
Это нереально. Я просто отложил обновления до лета.
Аноним 07/04/22 Чтв 15:13:32 2331175 538
>>2297526 (OP)
Памахите кто помнит, Прату, 11 глава listing 11.29 sort_str.c
есть константа
#define HALT " " /нулевая строка для прекращения ввода/
в самой программе она не используется, ввод строк не прерывается идёт до 20, как пофиксить?
Аноним 07/04/22 Чтв 16:47:05 2331245 539
>>2331175
>есть константа
>#define HALT " " /нулевая строка для прекращения ввода/ в самой программе она не используется,
Получается неправильный комментарий и неиспользуемый дефайн.
>ввод строк не прерывается идёт до 20, как пофиксить?
Добавить выход из цикла ввода.
Аноним 08/04/22 Птн 09:42:14 2331626 540
Аноним 08/04/22 Птн 15:21:35 2331923 541
2022-04-08 1518[...].png 25Кб, 897x336
897x336
226128107654280[...].jpg 113Кб, 1080x1172
1080x1172
gcc из MinGW на win10 выдает 16битный exe из моего hello world. Как это исправить?
Аноним 08/04/22 Птн 15:25:44 2331935 542
>>2331626
>Это из учебника задача
Значит в примере ошибки.
>>2331923
>Как это исправить?
-march=native
Аноним 08/04/22 Птн 18:27:02 2332056 543
>>2331935
Почему опция так странно называется? march
Аноним 08/04/22 Птн 20:29:09 2332147 544
16487312332110.jpg 16Кб, 360x288
360x288
Аноним 09/04/22 Суб 10:05:52 2332346 545
Как писать чтобы после
gcc program.c
program.exe сразу запускалась в консоли?
Аноним 09/04/22 Суб 11:22:29 2332364 546
>>2331923
>MinGW на win10
Зачем эти кривые мокрописьки когда есть WSL
Аноним 09/04/22 Суб 12:01:22 2332380 547
Аноним 09/04/22 Суб 15:30:12 2332480 548
>>2297526 (OP)
Сап /pr очень нужна ваша помощь
Собираюсь изучать С
Но так вышло, что у меня очень, очень слабенький комп который тянет только Linux (Debian)
Вкатываюсь я с нуля поэтому я бы попросил порекомендовать учебники по С специально под Linux для нулевого Васи.
Т.к. те учебники, что я видел, они все под windows написаны, с софтом и примерами программ для win
Аноним 09/04/22 Суб 16:59:08 2332544 549
image.png 77Кб, 248x352
248x352
>>2332480
Весь код на си и для линукса. Но книга скорее про написание программ специально для линукса и ближе к системному программированию. Базу языка учи по учебникам из шапке треда
Аноним 09/04/22 Суб 17:18:13 2332563 550
>>2332544
Почему он на обложку выбрал это фрактальное растение?
Аноним 09/04/22 Суб 17:21:40 2332566 551
>>2332364
Но это ведь в разы больше будет кушать?
Аноним 09/04/22 Суб 17:42:46 2332583 552
Аноним 09/04/22 Суб 18:48:33 2332619 553
Здрастье
Выучил циклы, символьный ввод вывод, файловый воды, строки, функции, массивы и указатели, структуры связанные списки, немного про препроцессор, битовые операции, интерфейс очереди атд.
Вроде даж получается задачки решать. Что дальше делать?
Аноним 09/04/22 Суб 19:29:49 2332639 554
image.png 3Кб, 604x112
604x112
>>2332566
Было с WSL, потом выключил WSL. Это по-твоему "жрет"?
Аноним 09/04/22 Суб 19:51:01 2332664 555
>>2332619
>Что дальше делать?
Программировать.
Аноним 09/04/22 Суб 22:19:15 2332765 556
>>2332544
Для вкатывальщика сложно будет. Но для освоения posix систем - хороша.
>>2332480
Что вам так неймётся с желанием бросаться неподготовленными на платформонезависимость? Язык программирования, в частности С для того и создавался, чтобы абстрагироваться от деталей. Для 90% задач (а на вкате и 100%) хватит базового языка и glibc.
Аноним 09/04/22 Суб 22:20:19 2332768 557
>>2332765
*платформозависимость
фикс
Аноним 10/04/22 Вск 03:32:41 2332827 558
>>2332765
Программирование не бывает платформонезависимым потому что это процесс программирования платформы. Вопрос только в выборе платформы.
"Платформонезависимость" в просторечном смысле означает виртуальную платформу, которая может работать на нескольких аппаратных. Но Си предназначен не для виртуальных платформ, а для реальных, поэтому не может быть "платформонезависимым".

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

Это что касается программирования. А теперь к тупым свиньям вроде тебя, серущим негативом на реальные платформы как будто это что-то плохое. Ну что тут сказать, из сказанного выше уже можно было догадаться, что такой сброд не программисты, а офисные макаки, еще один синоним для "секретутки" или "программиста 1с". Секретутка - не программист, она работает с документами, которые как раз и есть "платформонезависимы", т.к. работают на витруальной платформе которой является приложение. То, что в документы добавляют скриптинг не делает их программированием в настоящем смысле языка Си, хотя Си конечно позволяет сымитировать и секретутку. Но желают так детать только секретутки, а не программисты, вот где загвоздка. Дело в маркетинге, который напиздел на уши лапшу тупому секретутко-сброду, что они якобы программисты. Ну то же самое как рабам рассказывают что они якобы "сеньёры" (господа). Ну как тупое рабское чмо может быть господином? Самим не смешно? Конечно нет, на то и тупой сброд же, мозгов ноль без палочки.
Аноним 10/04/22 Вск 08:13:07 2332853 559
>>2332827
Знатно тебя порвало, к середине даже правила грамматики перестал соблюдать.
А по твоему высеру, тот же libc писали люди поумнее тебя, и он оптимизирует многие вещи, в которых большинство новичков руками накосячит. Плюс постоянные вызовы ядра (системные вызовы) , явно не добавляет производительности. Тем более задачи начинающего изучать язык сильно отличаются от того что ты упоминал.
Аноним 10/04/22 Вск 13:22:46 2332989 560
Аноним 10/04/22 Вск 15:23:31 2333044 561
>>2332765
>базового языка
Что значит "базового"?
>glibc
Почему именно она?
>>2332827
>Программирование не бывает платформонезависимым
Бывает, Си для этого и создали.
>отказа от зависимых вызовов, но такой огрызок от программы на практике бесполезен.
Замена.
>на реальные платформы
Что значит "реальные платформы"?
>что они якобы программист
Кто в твоем понимании является программистом?
>>2332853
>libc писали
Какую именно?
>люди поумнее тебя
Как ты это определил?
>большинство новичков руками накосячит
О них никто не думал.
Аноним 10/04/22 Вск 16:27:12 2333091 562
>>2332480
Нашёл
Автор Столяров А.В.
Аноним 10/04/22 Вск 16:30:08 2333092 563
Сап, Шайтаны. Вот есть битфилд суммарной шириной в 48 бит.
Нужно написать для этого несложную арифметику. Как лучше (или правильно) передавать и возвращать этот юнион в процедуры?

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

Бтв пока писал, возникла генерализация моего вопроса: как вообще передается-возвращается например uint32_t, int64_t на 16битных машинах?
Аноним 10/04/22 Вск 17:18:32 2333107 564
Аноним 10/04/22 Вск 17:22:46 2333109 565
>>2333092
>Как лучше (или правильно) передавать и возвращать этот юнион в процедуры?
Указатель.
>как вообще передается-возвращается например uint32_t, int64_t на 16битных машинах?
Зависит от реализации и процессора. Их может вообще не быть.
Аноним 10/04/22 Вск 17:52:18 2333120 566
>>2332664
большое спасибо. пошел программировать на питоне
Аноним 10/04/22 Вск 18:41:07 2333170 567
>>2333044
1. Си создан как высокоуровневый ассемблер, самый что ни на есть платформозависисмый язык.
2. Зачем замена? Есть компьютер, но использовать компьютер - плохо? У тебя с башкой плохо, секретутка.
3. Реальные платформы значит аппаратные платформы, а не виртуальные программные. Си транслируется в ассемблер для аппаратного процессора и прочего железа, это реальный язык работающий на реальной платформе. Лепить под него абстрактные мультиплатформенные прослойки = тыквить его, нивелировать достоинства Си, такой язык не нужен.
4. В моем понимании, программист тот, кто программирует, т.е. управляет устройством посредством написания программы. Это значит, устройство должно быть фиксировано и его спецификации открыты и изучены программистом. Только так можно полноценно использовать возможности устройства. А виртуальные мультиплатформенные машины это закрытые черные ящики, значит ими нельзя полноценно управлять. Это не программирование - управление, а скорее мольбы и надежды, гадание на кофейной гуще: "я пишу сам не знаю что, но авось сработает".
Аноним 10/04/22 Вск 20:03:07 2333261 568
>>2333170
>1. Си создан как высокоуровневый ассемблер, самый что ни на есть платформозависисмый язык.
Нет.
>2. Зачем замена?
Замена платформозависимого кода, на другой платформозависимый код.
>2. Есть компьютер, но использовать компьютер - плохо?
Почему ты так решил? Из чего вообще образовалось такое предложение?
>3. Лепить под него абстрактные мультиплатформенные прослойки = тыквить его, нивелировать достоинства Си, такой язык не нужен.
int main(void) { return 1 + 1; }
Удивительно, язык сам позволяет абстрагироваться от машинного кода, получается Си не нужен?
>4. Это значит, устройство должно быть фиксировано и его спецификации открыты и изучены программистом.
В этом треде снова признают всех программистов не программистами, потому что они не подходят под какие-то субъективные определения.
>4. Только так можно полноценно использовать возможности устройства.
Время.
>4. А виртуальные мультиплатформенные машины это закрытые черные ящики, значит ими нельзя полноценно управлять.
В чем отличие операционной системы от виртуальной машины? Получается, снова всех программистов вычеркнул из программистов, даже подходящих под твое описание.
>4. Это не программирование - управление, а скорее мольбы и надежды, гадание на кофейной гуще: "я пишу сам не знаю что, но авось сработает".
Почему ты считаешь виртуальные машины "черным ящиком", но не считаешь аппаратные способы выполнения кода "черным ящиком"?

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

Очень часто слышал/читал подобное мнение, копия, насколько же все люди одинаковые. Даже в этом треде было подобное уже. Вас тут клонируют?
Аноним 11/04/22 Пнд 05:36:10 2333519 569
>>2333261
1. "Врёти". Ну ладно.
2. Враньё. Стремление к универсальности это стремление отказаться от реальной платформы, т.е. отказ от Си.
3. Бессмысленный высер только подтверждающий бесполезность универсального кода.
4.4. Я не считаю, это так и есть. Программирование на Си это техника, как пишешь, так и работает, а на виртуальной хуйне это скриптинг, говношлепство на похуях на авось. Это годится для этого вашего пресловутого "тырпрайза 200к в наносекунду" зашибать бабло, но продукты такого труда конченое говно, не зря же говорят "тяп-ляп и в продакшен". Сама система предназначена и оптимизирована шлепать говно, на которое самим разработчикам похуй. С техникой такой подход не работает, на похуях машина банально не будет работать, тупо заклинит и всё. Этим и заканчиваются потуги макак-секретуток программировать на Си, крашами и бугуртами.
>Очень часто слышал/читал подобное мнение
Враньё. Если такое тут писали, это был я, больше никто такое не напишет, и я пишу редко.
Аноним 11/04/22 Пнд 06:46:48 2333525 570
>>2333519
>1. "Врёти". Ну ладно.
Я не писал, что это ложь, я написал, что твое утверждение неправильное.
>2. Враньё. Стремление к универсальности это стремление отказаться от реальной платформы, т.е. отказ от Си.
>1. "Врёти"
Нет.
>3. Бессмысленный высер только подтверждающий бесполезность универсального кода.
Почему бессмысленный? Каким образом он это подтверждает?
>4. Я не считаю, это так и есть.
Почему ты так решил?
>4. Программирование на Си это техника, как пишешь, так и работает, а на виртуальной хуйне это скриптинг, говношлепство на похуях на авось.
В чем отличие от аппаратной платформы?
>5. Враньё. Если такое тут писали, это был я, больше никто такое не напишет, и я пишу редко.
>1. "Врёти"
Я не уточнял, что именно здесь видел подобное мнение.

Зачем ты строишь поспешные выводы на основе каких-либо данных, если они у тебя ошибочные? Твои сообщения похожи на сообщения сгенерированные нейросетью, вроде логика какая-то должна быть, но на деле ее не существует, достаточно задать пару вопросов, чтобы в этом убедиться.
Аноним 11/04/22 Пнд 16:58:14 2333782 571
Питон лучше чем си
Аноним 11/04/22 Пнд 16:58:37 2333783 572
>>2333782
В питоне все понятнее
Аноним 11/04/22 Пнд 16:59:53 2333784 573
Аноним 12/04/22 Втр 14:37:42 2334415 574
image 9Кб, 595x179
595x179
Всем привет. Поясните пожалуйста, почему вместо символа конца файла выводится стрелочка?
Аноним 12/04/22 Втр 16:54:57 2334520 575
>>2334415
Потому что int getchar();
Аноним 12/04/22 Втр 17:34:56 2334557 576
image 9Кб, 535x192
535x192
>>2334520
И что, он же всё равно -1 возвращать должен
Аноним 12/04/22 Втр 17:44:20 2334568 577
Аноним 12/04/22 Втр 17:50:11 2334580 578
>>2334568
но почему тогда если ввести ctrl+z в начале строки то он завершает ввод в этой программе?
Аноним 12/04/22 Втр 17:57:40 2334588 579
Аноним 12/04/22 Втр 18:21:54 2334604 580
>>2324687
Ладно, извини, ты прав. Это круто. А что еще можно делать с этим типом, кроме как передавать в функции? Я попробовал присваивать ему значение функции напрямую и через разные типы, но, похоже, это так не работает. Разобрался. Если писать название типа со звёздочкой - работает как тип указателя на функцию. Сбивает то, что при передаче в функцию компилируется и со звездочкой и без (по крайней мере в VS). В этом есть какой-то скрытый смысл?
Аноним 12/04/22 Втр 18:27:16 2334608 581
>>2334588
Чет всё равно не понял, там просто написано что в винде это символ конца файла, как я и предполагал.
Аноним 12/04/22 Втр 18:54:14 2334630 582
>>2334608
26 код игнорируй, из-за ее "особенностей" приходится вместо православного getchar() != EOF писать дополнительную проверку, на википедии, в описании EOF последний абзац >>2334568.
Должно сработать, но не уверен.
Аноним 12/04/22 Втр 19:55:51 2334664 583
>>2334630
То есть грубо говоря ничего особенного, просто если это первый символ в строке то она его считает за конец файла, а если нет то за 26?
Аноним 13/04/22 Срд 00:16:53 2334799 584
image.png 204Кб, 1920x1080
1920x1080
аноны помогите, начал немного вкуривать многопотчность на линуксе, проблема с общей памятью, выкидывает 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;
}
Аноним 13/04/22 Срд 05:29:20 2334834 585
>>2333525
Типичный пример универсального кода >>2334630
>ничего не работает, но будем жрать это говно потому что.... православно, вот почему!
Аноним 13/04/22 Срд 06:40:27 2334841 586
>>2334664
>То есть грубо говоря ничего особенного, просто если это первый символ в строке то она его считает за конец файла, а если нет то за 26?
После 26 кода может вернуться EOF, если так, то игнорируй 26 код и выходи из цикла.
>>2334834
Это проблема платформы, которая не в состоянии нормально работать, ты даже оправдаться в своей бездарности не можешь.
Аноним 13/04/22 Срд 06:42:23 2334842 587
>>2334841
>>2334664
Зачем тебе именно EOF? Почему '\n' не устраивает?
Аноним 13/04/22 Срд 13:38:05 2335003 588
image.png 1Кб, 158x44
158x44
>>2334842
Да это клован какой-то. Интересно, какая клавиатура позволяет вводить такие охуительные символы.
Аноним 13/04/22 Срд 13:51:28 2335011 589
Зачем нужен тайпдеф? Все, что он делает можно заменить на дефайны, деды просто так добавили функционал?
Аноним 13/04/22 Срд 22:01:40 2335254 590
Аноним 14/04/22 Чтв 09:47:44 2335447 591
>>2334799
ftruncate, чтобы выставить размер куска.
Аноним 14/04/22 Чтв 09:48:53 2335448 592
>>2335011
typedef float vector[3];

Заменяй.
Аноним 14/04/22 Чтв 10:07:25 2335457 593
>>2335448
#define vector(name) float name[3]
Тайпдефоблядь нечеловек.
Аноним 14/04/22 Чтв 11:21:03 2335482 594
>>2335457
extern float dot(vector, vector);
vector x, y, z, t;

А как тебе такое, скобкодебил?
Аноним 14/04/22 Чтв 12:07:04 2335504 595
>>2335482
>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" преобразует в читаемые. Вместо добавления констекспр, как ключевого слова добавили бесполезный тайпдеф, вместо развития препроцессора добавили бесполезный тайпдеф. Худшее решение, но даже у такого решения есть фанатики (говноедики).
Аноним 14/04/22 Чтв 15:25:33 2335651 596
>>2334842
Ну например если нужно будет вводить что-то в несколько строк, \n не подойдёт
>>2335003
>какая клавиатура позволяет вводить такие охуительные символы
любая, ебанат
Аноним 14/04/22 Чтв 16:40:32 2335708 597
Кто нибудь вкатывался по пРАТЕ?
Страница 466, Листинг 11.30. Программа mod_str. с
Подскажите опять по Прате
/ mod_str.c — модифицирует строку /

.....................................................................
str = toupper((str)) ;
printf("To upper result char= %c\n", toupper((*str)));
......................................................................
почему toupper не изменяет строку?
Аноним 14/04/22 Чтв 17:55:09 2335783 598
>>2335708
>почему toupper не изменяет строку?
Не должен.
Аноним 14/04/22 Чтв 23:02:00 2336023 599
>>2335504
скажи честно, ты долбоеб?
Аноним 15/04/22 Птн 07:31:39 2336140 600
>>2336023
Почему ты так решил? Объективно бесполезная функциональность языка, добавленная просто так.
Или ты сможешь объяснить почему она не бесполезная?
Аноним 15/04/22 Птн 11:05:28 2336226 601
>>2335011
>>2336140
> деды просто так добавили функционал?
> Или ты сможешь объяснить почему она не бесполезная?
деды хотели нормально определять свои типы и использовать их точно также как и используют стандартные. тип имя_переменной = велью; без всяких там скобочек хуебочек и т. д.
твое
> vector(x) = {0};
выглядит как будто ты к вызову функции присваиваешь что-то. Если бы я такое увидел, то сначала охуел бы, что мой редактор не подсвечивает это как ошибку.

да и по тайпдефам грепать удобно, хочешь получить все кастомные типы в проекте - изи.
Аноним 15/04/22 Птн 20:19:42 2336689 602
image 109Кб, 1189x394
1189x394
image 14Кб, 656x200
656x200
Прата пиздит?
Аноним 15/04/22 Птн 20:47:41 2336716 603
>>2336689
Ты уже весь тред засрал своим прата. Там варнинг должен быть, а не ошибка.
Аноним 15/04/22 Птн 20:52:51 2336724 604
>>2336716
>Ты уже весь тред засрал своим прата
А в чём проблема? Я какие-то неправильные вопросы задаю?
>Там варнинг должен быть, а не ошибка
Он написал что ошибка. Впрочем, варнинга тоже нет.
Аноним 16/04/22 Суб 04:35:50 2336931 605
>>2336724
Погугли опции компилятора управления уровнем предупреждения для своего компилятора. Обычно Wall.
gcc -Wall или /Wall для VisualC
Так же можешь добавить интерпретацию предупреждений в ошибку.
gcc -Wall -Wextra или /Wall /WX
Аноним 16/04/22 Суб 04:50:55 2336934 606
>>2336724
>А в чём проблема?
В том, что надо задуматься о качестве этой книги/перевода.
Аноним 16/04/22 Суб 13:48:07 2337156 607
>>2336931
Да не, мне сами предупреждения не нужны, я просто хотел понять действительно ли это ошибка, и если да то почему. Уже разобрался.
>>2336934
Я знал про хуёвый перевод и спрашивал, но мне всё равно рекомендовали именно её. Да даже в шапке треда кроме древней K&R для вкатывания ничего нет, только прата.
Аноним 16/04/22 Суб 16:28:25 2337261 608
Screenshot from[...].png 41Кб, 479x399
479x399
В чем я не прав?
Аноним 16/04/22 Суб 16:33:02 2337267 609
Аноним 16/04/22 Суб 16:33:38 2337268 610
>>2337261
>потокобезопасность
Аноним 16/04/22 Суб 16:45:48 2337272 611
Screenshot from[...].png 62Кб, 489x511
489x511
Аноним 16/04/22 Суб 16:47:57 2337276 612
>>2337272
>почему?
У тебя мютекс не создается и не разрушается.
Аноним 16/04/22 Суб 16:49:32 2337277 613
>>2337272
>почему?
Синхронизация общая для всех объектов, но они могут быть созданы в разных потоках и будут падения на бесполезной синхронизации.
Аноним 16/04/22 Суб 16:49:46 2337278 614
>>2337276
Да, один мьютекс на все шаред поинтеры. Не знаю, что за ебанутое конкарренси должно быть, чтоб операции над разными поинтерами часто блочили друг друга.
Аноним 16/04/22 Суб 16:52:26 2337283 615
>>2337272
>почему?
Не проверяется кратность sizeof(int) при выделении памяти.
Аноним 16/04/22 Суб 16:52:46 2337284 616
>>2337272
>почему?
Не проверяется нулевое значение в 3-ех функциях.
Аноним 17/04/22 Вск 22:45:57 2338256 617
1563455629535.jpg 124Кб, 874x1115
874x1115
Аноним 18/04/22 Пнд 12:11:02 2338418 618
image.png 132Кб, 1920x1080
1920x1080
>>2297526 (OP)
Сап, итгоспода, я зелень, только начал вкатываться, не могу понять, почему у меня получается хуйня и как делать правильно, я долбоёб не судите строго.
Аноним 18/04/22 Пнд 12:29:31 2338426 619
Аноним 18/04/22 Пнд 15:18:18 2338507 620
>>2338426

Как я могу выкатиться, если не вкатился? Как будто сами в первые дни не писали говно. Мне хотя бы понять как гуглить мой вопрос. У меня есть массив 5 значений t, я сделал массив, теперь я хочу подставить эти значения в икс от каждого из этих тэ. Но Xot это не массив, поэтому не канает, как сделать массив в массиве не ебу, была идея сделать двумерный массив, но не понимаю, как подступиться
Аноним 18/04/22 Пнд 16:28:08 2338544 621
>>2338256
О великий си. Все языке ссылаются на него и хотят быть такими же крутыми как он
Аноним 18/04/22 Пнд 16:29:21 2338545 622
Аноним 18/04/22 Пнд 16:48:40 2338552 623
image.png 91Кб, 724x624
724x624
image.png 87Кб, 681x286
681x286
Объясните пожалуйста со связанными списками, не могу понять момент про передачу переопределенных с помощью 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); почему в этом прототипе из книги появился еще один указатель? зачем указатель на указатель? Если в первом примере все работает через один указатель?

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

Что за двойная косвенность? Почему нельзя в списках обойтись без двойного указателя? Я запутался в общем. Помогите плиз
Аноним 18/04/22 Пнд 16:49:20 2338553 624
>>2338552
Совсем забыл что звездочки съело
Аноним 18/04/22 Пнд 16:58:08 2338558 625
>>2338552
>Почему нельзя в списках обойтись без двойного указателя?
Можно.
Аноним 18/04/22 Пнд 17:03:11 2338561 626
>>2338558
Объясни пожалуйста почему там 2 указателя появилось?
Аноним 18/04/22 Пнд 17:10:09 2338566 627
Аноним 18/04/22 Пнд 17:49:46 2338587 628
>>2338566
в 16 и 18 строчке скриншота из книги.
там в одном месте указатель на указетль а в другом просто указатель
Аноним 18/04/22 Пнд 20:00:22 2338667 629
>>2338587
Потому что необходимо менять структуру по исходному адресу, а не переданому на узел?
Аноним 18/04/22 Пнд 21:09:01 2338722 630
>>2338667
Ладно буду разбираться дальше пердеть
Аноним 19/04/22 Втр 15:50:19 2339178 631
Посоны, только не обоссыте, хотел узнать есть лм какой-нибудь SICP на Си?
Или, возможно, есть алтернатива где учишь алгоритмы и язык вместе.
Аноним 19/04/22 Втр 20:30:04 2339433 632
image.png 673Кб, 1280x720
1280x720
>>2338418
еб твою мать, упизди с треда, ебнутый
Аноним 19/04/22 Втр 21:47:58 2339479 633
>>2339178
Ты себя очень сильно ограничиваешь в выборе литературы, выдвигая требование, чтоб интересующий тебя язык программирования и интересующая тебя математическая тема сходились в одной книге. И даже если ты найдешь идеальную книгу, никакого двойного профита не получишь, потому что на освоении сишных приколов и на освоении алгоритмических приколов надо фокусироваться отдельно. Можешь взять K&R и SICP параллельно. MIT Scheme в этом плане ничем не заменить. Получишь массу удовольствия. Но SICP не про алгоритмы есичо, а немножко про другой дзен. Алгоритмическая литература, кстати, в идеале псевдокод должна юзать. Ты должен уметь сам воплощать концепции на своем языке. Это базовая умственная обработка инфы, которую ты сам заинтересован осилить, иначе тебе вообще нахуй ничего не поможет.
Аноним 20/04/22 Срд 10:06:23 2339683 634
16492413925150.jpg 29Кб, 607x341
607x341
Сегодня мне address sanitizer сказал, что не надо было memcmp строки разной длины. А ведь я много лет пишу на этом языке...
Аноним 20/04/22 Срд 10:19:27 2339697 635
>>2298240
Чтобы не превратиться в дикарей, надо писать на ассембли, поссал сиблядка.
Аноним 20/04/22 Срд 10:56:20 2339732 636
Аноним 20/04/22 Срд 13:57:37 2339959 637
>>2338587
Потому что реализация списка без заголовка.
Аноним 20/04/22 Срд 13:59:31 2339964 638
Аноним 20/04/22 Срд 16:06:47 2340091 639
image 162Кб, 1270x297
1270x297
image 10Кб, 462x282
462x282
почему.
Аноним 20/04/22 Срд 16:29:24 2340111 640
>>2340091
Все правильно, у тебя неопределенное поведение.
Аноним 20/04/22 Срд 16:36:49 2340116 641
>>2340091
Почему что? Как написано, так и происходит.
Аноним 20/04/22 Срд 16:46:25 2340119 642
>>2340091
Указатель стека не изменился, 27 никто не переписал.
Аноним 20/04/22 Срд 17:06:03 2340137 643
image 11Кб, 437x266
437x266
>>2340116
Написано что переменная которая объявлена в блоке живёт до конца выполнения блока, но по факту "а" которая объявлена после блока не переписала "i", то есть память не переиспользуется и это значение сохраняется там. Правда я забыл что если в релизе компилить то он может не создавать "a" и просто подставить константы, но на самом деле без констант всё то же самое.
Аноним 20/04/22 Срд 17:20:32 2340153 644
>>2340137
>по факту "а" которая объявлена после блока не переписала "i"
Тебе это никто не обещал.
Аноним 20/04/22 Срд 17:29:31 2340157 645
image 175Кб, 1262x297
1262x297
>>2340153
а в чём тогда заключается временность хранения переменных, если не в том что их потом перезаписать можно?
Аноним 20/04/22 Срд 17:32:41 2340158 646
Screenshot from[...].png 15Кб, 453x157
453x157
Screenshot from[...].png 91Кб, 547x857
547x857
Screenshot from[...].png 66Кб, 373x855
373x855
Screenshot from[...].png 40Кб, 375x499
375x499
ух бля
Аноним 20/04/22 Срд 17:36:52 2340164 647
>>2340157
>а в чём тогда заключается временность хранения переменных, если не в том что их потом перезаписать можно?
В этом, но компилятор это делать не обязан.

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

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

В одном случае инициализирует новую память, в другом использует старую.
Аноним 20/04/22 Срд 17:40:07 2340165 648
Аноним 20/04/22 Срд 17:47:54 2340170 649
>>2340164
То есть компилятор может наплевать на возможности языка и вынести их в оптимизацию, либо вообще не использовать?
Аноним 20/04/22 Срд 17:51:01 2340171 650
>>2340170
Он следует стандарту, а стандарт не запрещает такое поведение.
Аноним 20/04/22 Срд 17:55:57 2340172 651
>>2340171
А, то есть стандарт просто говорит что существование этих переменных потом не гарантируется?
Аноним 20/04/22 Срд 18:16:05 2340191 652
>>2340172
Он говорит, что переменная существует в ее области видимости, а за ее пределами не существует.
Аноним 20/04/22 Срд 19:21:36 2340265 653
>>2340137
>Написано что переменная которая объявлена в блоке живёт до конца выполнения блока, но по факту "а" которая объявлена после блока не переписала "i"
Что за бред? Ты вообще знаешь что такое блок?
Давай, расскажи какие на пике есть блоки и какие переменные объявлены к каком блоке.
Аноним 20/04/22 Срд 19:58:33 2340309 654
>>2340158
не понял, нахер ты это выкидываешь? спросить что-то хочешь?
Аноним 20/04/22 Срд 20:30:14 2340334 655
>>2340309
Просто показываю, какой я умный
Аноним 20/04/22 Срд 20:45:24 2340349 656
Screenshot from[...].png 37Кб, 527x333
527x333
Аноним 20/04/22 Срд 21:37:00 2340381 657
>>2339959
Что значит без заголовка? Типа нет поля head?
Аноним 20/04/22 Срд 22:25:37 2340416 658
>>2340265
>Что за бред? Ты вообще знаешь что такое блок?
Если ты не заметил, я читаю книгу для начинающих, поэтому если я чего-то не знаю, то в этом нет абсолютно ничего удивительного.
В этой же книге я прочитал что блок это часть кода которая окружена фигурными скобками, а ещё я прочитал что в стандарте C99 концепцию блоков расширили и ими стали считать циклы и иф. Книга врёт, или может ты не увидел на скрине цикл for?
Аноним 20/04/22 Срд 22:31:33 2340424 659
>>2340381
Завтра пример набросаю, я спать.
Аноним 20/04/22 Срд 22:47:40 2340438 660
>>2340416
Кстати в этой книге много опечаток. Будь осторожнее. Помню тоже там было написано что блоки это конструкции ограниченные фигурными скобками. Но аноны выше пояснили тебе про неопределенность поведения
Аноним 21/04/22 Чтв 02:31:06 2340526 661
image.png 301Кб, 480x360
480x360
>>2340416
Последний раз посторяю, как написано, так программа и работает.
Ты не ответил на вопрос, не перечислил блоки и объявленные в них переменные, значит не понимаешь что это такое. И книги тут ни при чем, книги не объясняют такую элементарщину уровня пикрил, это должно быть понятно любому здоровому человеку само по себе. Но не тебе, как видно.
Аноним 21/04/22 Чтв 07:05:47 2340540 662
>>2340526
Брат нет плахи книги ест плахи луди брат
В книге у прата написано что блок это то что ограниченно фигурными скобками
Аноним 21/04/22 Чтв 08:11:30 2340546 663
Аноним 21/04/22 Чтв 08:32:39 2340554 664
Могу написать обявление функции signal(), чуть-чуть подглянув в signal.h и используя, как и положено, typedef:
typedef void (*signalhandler)(int); signalhandler signal(int, signalhandler);

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

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

>>2340554
>Могу написать
Зачем?
Аноним 21/04/22 Чтв 11:29:37 2340606 666
Screenshot from[...].png 34Кб, 687x333
687x333
Screenshot from[...].png 23Кб, 643x203
643x203
>>2340554
Собралось без warning-ов, "пук" печатает
Аноним 21/04/22 Чтв 15:03:17 2340820 667
>>2340540
>В книге написано что блок это то что ограниченно фигурными скобками
И? Ответа, что в реальном коде это означает, так и не нет. Написано-то написано, но не понято, читатель не смог прочитать написанное. Вот в чём суть, и книга тут уже бессильна.
Аноним 21/04/22 Чтв 16:31:51 2340913 668
>>2340438
Да, я знаю, там ошибки на каждом шагу, но что поделать, в ориге читать не удобно.
>>2340526
>Ты не ответил на вопрос, не перечислил блоки и объявленные в них переменные, значит не понимаешь что это такое
Нет, это означает что мне лень их перечислять. А нахуя? Я ведь сказал что блок это то что в фигурных скобках, этой информации должно было хватить, а если не хватило, значит видимо это с тобой что-то не так. Но ок, есть блок функции, в нём есть блок цикла, в блоке цикла есть подблок тела цикла. А про переменные я вообще хуй знает что ты хотел услышать, типа проверял на зрение или что? На скрине видно что в каком блоке объявлено.
Аноним 21/04/22 Чтв 19:17:53 2341100 669
>>2340913
>Нет, это означает что мне лень их перечислять.
Уже настрочил пустопожнего пиздежа в 20 раз больше, а ответить напростой пвопрос по тексту "лень"?
>А нахуя?
Чтобы определить, прочитал написанное или не осилил.
Народная мудрость "смотрит в книгу - видит вигу" как никогда актуальна и сегодня.
Аноним 21/04/22 Чтв 19:23:11 2341106 670
Всем доброго здоровья. Будьте добры, подскажите где можно посмотреть учебные или небольшие, но простые проекты для человека, который изучает программирование на языке си?
Аноним 21/04/22 Чтв 19:42:56 2341115 671
Аноним 21/04/22 Чтв 19:44:34 2341116 672
>>2341115
Большое спасибо, добрый человек
Аноним 21/04/22 Чтв 19:45:34 2341118 673
>>2341100
>пустопожнего пиздежа
Ну давай, покажи что у меня тут было не по делу
>прочитал написанное или не осилил
А нахуя мне было задавать вопрос если бы я не прочитал?
Ну вот теперь я тебе ответил, так что там у меня было бредового?
Аноним 21/04/22 Чтв 19:46:59 2341120 674
>>2341115
Ого! Это начинающие прогеры так пишут?
Аноним 21/04/22 Чтв 20:00:06 2341143 675
>>2341120
>Это начинающие прогеры так пишут?
Нет, смотреть код начинающих программистов невозможно.
1) Они редко им делятся.
2) Он плохой.
3) Начинающие кодеры на Си вымирают.

Если хочешь посмотреть неплохой имхо код, то
https://github.com/nginx/nginx
https://cgit.freedesktop.org/xorg/xserver/tree/
Аноним 21/04/22 Чтв 20:49:15 2341183 676
>>2341118
>А нахуя мне было задавать вопрос если бы я не прочитал?
Язык это протокол переджачи информации.
Тект это язык.
Чтение это восприятие читателем информации переданной написавшим.
таким образом, воспроизведение написанных слов это не чтение, чтение это восприятие переданной информации.
Не понят смысла написанного, значит не смог прочитать.
Не ответил на вопрос по тексту, значит не понял смысла написанного - не смог прочитать.
Неграмотный сброд.
Аноним 21/04/22 Чтв 20:57:40 2341187 677
>>2341183
>Не понят смысла написанного, значит не смог прочитать
Не понял смысла написанного, значит не понял смысла написанного. Хватит нести хуйню.
>Не ответил на вопрос по тексту, значит не понял смысла написанного
Не ответил на вопрос по тексту, значит не захотел ответить, но уже захотел и давно ответил. Так что, долго ты будешь увиливать?
Аноним 21/04/22 Чтв 21:18:55 2341194 678
Правда что си прогеры злее и вреднее всех.
Питонисты самые культурные и добрые и толерантные
Аноним 21/04/22 Чтв 22:35:05 2341251 679
Эмм...ну вроде подучил я синтаксис списки структуры. Ну сделал я список свою идею тёлки которых я ебал их рост возраст и размер пизды. С выгрузкой этих данных в файл. Но.... это разве проект? Ну и типа конвертер величин но это вообще хз для чего....Куда применять полученные знания чтобы развивать навык программирования? В компах не шарю паять не умею роботов строить не знаю как. Это что и есть си? Просто списки делать и искать в них данные? Глянул идеи а там про какие-то сети подмаски контроллеры паяльник циферблаты. Я вообще даже близко не представляю что из себя технически представляют они... Крч я вообще растерян. Помогите... Наверное потому и спрашивают прежде чем учить язык должен сказать что ты хочешь. Но я не технарь вообще. Что вы пишите на си, скажите....
Аноним 22/04/22 Птн 07:16:23 2341364 680
>>2341251
Программируй.
>Что вы пишите на си, скажите
Ничего.
Аноним 22/04/22 Птн 07:17:28 2341365 681
>>2341364
Что программировать? Сортировать списки?
Аноним 22/04/22 Птн 07:23:33 2341366 682
>>2341365
Ты освоил базовые основы языка, но не знаешь, как решать целевые задачи, двигайся в сторону системщины.
Аноним 22/04/22 Птн 08:01:50 2341371 683
>>2341366
Что такое системщина? Я не технарь. С чего начинать? Там надо какие-то платы покупать с паяльником?
Аноним 22/04/22 Птн 08:12:57 2341374 684
>>2341251
> Эмм...ну вроде подучил я синтаксис списки структуры.
Зачем.
Аноним 22/04/22 Птн 08:24:58 2341378 685
Аноним 22/04/22 Птн 08:50:10 2341389 686
>>2341378
А по си? Только паяльник и электроника с компами?
Аноним 22/04/22 Птн 08:50:50 2341391 687
>>2341374
В учебнике было
А что надо было учить?
Аноним 22/04/22 Птн 08:55:57 2341393 688
Аноним 22/04/22 Птн 08:59:04 2341394 689
>>2341393
Ты дурачок? Тред не читал сразу отвечал?
Аноним 22/04/22 Птн 09:24:12 2341402 690
>>2341394
>Ты дурачок?
Нет.
>Тред не читал сразу отвечал?
Почему ты так решил?
Аноним 22/04/22 Птн 09:28:34 2341403 691
>>2341402
Там слишком технарски
Аноним 22/04/22 Птн 09:55:50 2341419 692
Аноним 22/04/22 Птн 13:48:55 2341586 693
>>2341251
Если нечего прогать, то дрочи алгоритмы. Попробуй в олимпиадные задания залезть. Этого хватит, чтобы время проебать
Аноним 22/04/22 Птн 14:13:32 2341602 694
>>2341586
Лучше пойти на улицу, на свежем воздухе побухать.
Аноним 22/04/22 Птн 14:30:29 2341616 695
Аноним 22/04/22 Птн 17:15:47 2341761 696
Кекмда сишники учат си просто так
Аноним 22/04/22 Птн 17:54:41 2341792 697
16484957646170.jpg 117Кб, 1225x713
1225x713
https://onlinegdb.com/ujdQy6xONJ

Пытаюсь в трифорс
Надо переложить обратную пирамиду сверху - в низ, по кирпичику; начиная с верхнего слоя.
Кирпичик хотелось бы выбирать рандомно.
Как это можно сделать?
Аноним 22/04/22 Птн 20:43:48 2341985 698
image.png 214Кб, 1920x1080
1920x1080
>>2340349
еба, спс, но я по-другому немного сделал.
Аноним 22/04/22 Птн 20:58:25 2342006 699
image.png 217Кб, 1920x1080
1920x1080
image.png 215Кб, 1920x1080
1920x1080
>>2341985
упс, я даун, хуёво наскринил
Аноним 22/04/22 Птн 23:11:15 2342138 700
Аноним 23/04/22 Суб 18:22:22 2342666 701
16253010047590.jpg 107Кб, 588x624
588x624
>>2341792
Продолжаю свои мытарства: https://onlinegdb.com/kKxBj0YS9

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

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

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

Уползаю на работу.
Аноним 24/04/22 Вск 21:08:47 2343409 702
>>2341183
> Не понят смысла написанного, значит не смог прочитать.
ты что в семье психологов или философов родился?
люто кринжую с твоих сообщений, человек спросить хочет, ты вместо того чтобы объяснить нормально начинаешь ему доказывать, что он какой-то долбаеб. У тебя дефицит внимания? или ПМС?
> Неграмотный сброд.
Мы уже поняли что ты тут самый умный, расслабься
Аноним 24/04/22 Вск 21:41:26 2343433 703
>>2343409
Психология и философия имеют имидж умного, поэтому они раздражают тупых, вот как тебя. Никому не интересно, от чего у тебя бомбит, лучше на вопрос ответь. Перечисли >>2340091 какие есть блоки и какие переменные объявлены в каком.
Аноним 24/04/22 Вск 23:21:39 2343493 704
Как лучше всего символьную таблицу у эльфа прочитать и в массив описывающих каждую запись структур оформить? И как вообще для начала смещение/размер таблицы узнать? В сырцы objdump/readelf неохота лезть пока, может есть какие-либо вызовы в библиотеке для этого.
Аноним 25/04/22 Пнд 08:40:34 2343576 705
Аноним 25/04/22 Пнд 10:25:22 2343591 706
Аноним 25/04/22 Пнд 17:32:06 2343911 707
>>2343409
Спасибо
>>2343433
>Психология и философия имеют имидж умного
Пока что ты сделал себе только имидж чела который старается казаться умным, говоря замысловатыми предложениями. То что ты сказал это хуйня какая-то.
>от чего у тебя бомбит
Так яростно как ты тут ещё никто не кукарекал
>Перечисли 2340091 какие есть блоки и какие переменные объявлены в каком
Уже было достаточно сказано, но ты проигнорировал. Ты так начал разговор, что напрямую отвечать никакого желания нет, так что либо поясни что у меня там было бредового, либо иди нахуй.
Аноним 26/04/22 Втр 09:25:22 2344286 708
Как считаете, "системщику" (осдев, драйверописательство, мк) необходимо знать алгоритмы, структуры данных (в частности CLRS) или лучше скипать?
Аноним 26/04/22 Втр 09:42:12 2344296 709
>>2344286
>Как считаете, "системщику" (осдев, драйверописательство, мк) необходимо знать
Всё.
Аноним 26/04/22 Втр 11:00:04 2344331 710
>>2344286
Хз что там в книге, но мне в системном довелось использовать: хэши и таблицы, списки, разные виды сортировок, деревья (rb, radix), бинарный хип, подсчет ссылок, разные формы распределения памяти и сборки мусора. Это БАЗА.
О сущечтвовании потоковых/приблизительных алгоритмов тоже стоит знать.
Аноним 26/04/22 Втр 11:37:20 2344361 711
Screenshot from[...].png 46Кб, 497x487
497x487
Почему этот ваш Си ебаный такой? Наделал хуйнюшек для платформонезависимого fwrite/fread, а оно разные результаты отрыгаивает с разными флагами оптимизации, и все неправильные. Какие же вы конченные пидарасы все.
Аноним 26/04/22 Втр 11:40:53 2344369 712
>>2344361
Стрикт-алиасинг чтоли ебоманый?
Аноним 26/04/22 Втр 12:12:10 2344388 713
блять, у меня вообще какая-то хуйня непонятная плавающая, при каждом запуске разные числа считываются и конвертируются я ебал какая же хуетища
Аноним 26/04/22 Втр 12:13:29 2344391 714
>>2344331
>хэши и таблицы, списки, разные виды сортировок, деревья (rb, radix), бинарный хип,

Примерно это же в CLRS. Теперь ясно, что алгоритмы пропускать не стоит
Аноним 26/04/22 Втр 12:23:26 2344400 715
Аноним 26/04/22 Втр 12:58:32 2344425 716
>>2344400
Короче, аноны, земля мне пухом. Я просто для чтения uint64 из конца файла делал fseek(file, 8, SEEK_END), а оффсет со знаком минус надо, лол.
Аноним 26/04/22 Втр 13:16:23 2344441 717
image 206Кб, 1552x551
1552x551
Поясните пожалуйста, почему тут написано что принтф записывает в буфер а не сразу выводит? Если что источник - http://all-ht.ru/inf/prog/c/func/fflush.html
Аноним 26/04/22 Втр 13:18:50 2344442 718
>>2344441
>принтф записывает в буфер а не сразу выводит?
Да.
Аноним 26/04/22 Втр 13:23:05 2344445 719
>>2344442
Всмысле да? Я когда принтф вызываю, у меня сразу всё выводится. Понятно что в какой-то буфер для этого строка записывается, только в чём суть очищения буфера если принтф сразу выводит? То есть что в этом коде изменится если убрать ффлэш?
Аноним 26/04/22 Втр 13:24:11 2344446 720
>>2344445
>ффлэш
ой блять, ффлаш
Аноним 26/04/22 Втр 13:29:49 2344449 721
Аноним 26/04/22 Втр 13:42:25 2344457 722
>>2344445
Там после printf сразу стоит sleep, программа падает в ступор, зависая на целую секунду, поэтому нужно форсировать вывод на экран до слипа. Попиши зависающие программы и поймешь зачем.
Аноним 26/04/22 Втр 13:44:40 2344462 723
>>2344449
Да я знаю что такое буферизация, вопрос же не в этом. Я в книге прочитал что запись в любой файл производится после того как буфер который с ним связан до конца заполнится, но при этом я вижу что если просто выводить что-то на экран то всё выводится сразу, это стдаут какой-то особенный или что?
Аноним 26/04/22 Втр 13:46:52 2344466 724
>>2344462
>Я в книге
Задумайся о правильности этой книги, а потом перестань ее читать.
Аноним 26/04/22 Втр 14:00:27 2344475 725
image 13Кб, 562x215
562x215
image 12Кб, 522x214
522x214
Аноним 26/04/22 Втр 14:03:05 2344476 726
>>2344466
Как я могу задуматься о правильности если я не знаю что правильно а что нет? Я поэтому и задаю вопросы. То что я сказал про файлы это неправильно?
Аноним 26/04/22 Втр 14:20:06 2344492 727
>>2344445
У тебя винда, там все через жопу.
Аноним 26/04/22 Втр 14:20:37 2344493 728
>>2344475
Понял, что написал?
>>2344476
>То что я сказал про файлы это неправильно?
Они могут иметь различные буферы. Просто запомни, смывай буфер, только когда тебе нужно обязательно что-то записать. В остальном, реальная точка входа в программу сама смоет stdout, stderr буферы, при корректном завершении программы.
Аноним 26/04/22 Втр 14:30:32 2344508 729
>>2344493
>Понял, что написал?
Я показал что хоть с флашем, хоть без него, строка будет выводится до слипа
>Они могут иметь различные буферы
Там было написано что это относится и к вводу и к выводу. Ну я сомневаюсь что это неправильно, потому что я и раньше слышал что с дисков читают сразу по 512 (или больше) байт в буфер, потому что они медленные. Хз, с стдаутом вопрос всё равно открыт получается.
Аноним 26/04/22 Втр 15:06:07 2344545 730
Аноним 26/04/22 Втр 15:42:25 2344576 731
>>2344545
Бля да че вы все ёрничаете постоянно? Почему нельзя нормально ответить?
Аноним 26/04/22 Втр 15:48:55 2344584 732
>>2344576
>>2344493
>Просто запомни, смывай буфер, только когда тебе нужно обязательно что-то записать. В остальном, реальная точка входа в программу сама смоет stdout, stderr буферы, при корректном завершении программы.
Аноним 26/04/22 Втр 16:09:37 2344611 733
>>2344584
Я конечно ахуенно благодарен, но хотелось бы всё же разобраться а не "просто запомнить"
Аноним 26/04/22 Втр 16:10:24 2344612 734
>>2344611
>разобраться
В чем?
Аноним 26/04/22 Втр 16:18:50 2344624 735
>>2344612
Во-первых в том почему у того чела код написан так как будто принтф не сразу выводит (если он шиз то такой ответ тоже сойдёт), во-вторых почему в стдаут вывод не такой как в случае с другими файлами. Ну то есть понятно что это не диск поэтому там так и должно быть, но ведь и с стдаутом и с другими файлами работают одни и те же функции и они должны делать одно и то же.
Аноним 26/04/22 Втр 16:24:29 2344633 736
>>2344624
>принтф не сразу выводит
Буферизация.
>почему в стдаут вывод не такой как в случае с другими файлами
Точно такой же.

Ты вообще необучаемый.
Аноним 26/04/22 Втр 16:38:59 2344646 737
>>2344633
Походу это у тебя буферизация, временная память какая-то. Что буферизация? Принтф выводит сразу, я это и так знаю, вопрос был в том почему у него написано что строка просто записывается в буфер (и не выводится пока не вызвать ффлаш). На счёт того почему вывод не такой же я тоже написал, на диск вывод идёт когда буфер заполняется до конца.
Аноним 26/04/22 Втр 16:46:31 2344653 738
>>2344646
Ты не понимаешь о чем ты говоришь.
Аноним 26/04/22 Втр 16:51:50 2344660 739
>>2344653
Ну ок, объясни тогда в чём я не прав, или хотя бы скинь что почитать. Только не ту статью из википедии, я там ничего нового не нашёл.
Аноним 26/04/22 Втр 17:02:09 2344666 740
Screenshot from[...].png 284Кб, 1807x1037
1807x1037
Screenshot from[...].png 166Кб, 995x1055
995x1055
Ннагавнякал версталку текстовых файлов воедино спецом чтоб шоб уместить свой охуительный архиватор в два скрина и показать вам. Только заебался utils.h подгонять, две строки на предыдущий скрин все таки попали.
Аноним 26/04/22 Втр 17:16:56 2344677 741
Аноним 26/04/22 Втр 18:24:36 2344735 742
>>2344666
А кто будет ошибки проверять - папа?
Аноним 26/04/22 Втр 19:17:41 2344782 743
Screenshot from[...].png 41Кб, 635x385
635x385
Screenshot from[...].png 11Кб, 355x139
355x139
>>2344735
Как-то так например?
Аноним 26/04/22 Втр 19:24:21 2344786 744
>>2344782
У тебя в determineCommand идет использование нулевого указателя.
Аноним 26/04/22 Втр 19:29:16 2344791 745
Screenshot from[...].png 37Кб, 463x387
463x387
>>2344786
я больше так не буду
Аноним 26/04/22 Втр 19:30:40 2344794 746
>>2344791
У тебя алгоритмическая сложность проверки команды очень высокая, из-за того, что ты используешь строки, а не их хэши.
Аноним 26/04/22 Втр 19:45:17 2344802 747
>>2344660
ОС несколько больше чем Windows. Даже среди nix -подобных куча реализаций с разным поведением. Стандарт С не гарантирует вывод, только наличие буферизации, остальное на усмотрение разработчиков стандартной библиотеки.
Аноним 26/04/22 Втр 19:54:12 2344808 748
16491918392680.jpg 9Кб, 200x200
200x200
>>2344782
Больше вопросов не имею.
Аноним 26/04/22 Втр 21:12:04 2344838 749
Screenshot from[...].png 63Кб, 399x993
399x993
Screenshot from[...].png 7Кб, 535x67
535x67
Аноним 26/04/22 Втр 21:26:27 2344852 750
>>2344838
Только хуже сделал.
Аноним 26/04/22 Втр 22:56:15 2344898 751
>>2344838
> код шизофреника
Давай еще.
Аноним 26/04/22 Втр 23:00:31 2344899 752
IMG0780.JPG 1295Кб, 4032x3024
4032x3024
Screenshot from[...].png 20Кб, 317x331
317x331
>>2344852
Да я рофлю, на кой хуй там хештаблица, тем более такая хардкорная. Это когда-то давно делал для реализации LZW.

Вот вам анончики, лучше, такая задачка. Передать stateful функцию, как аргумент qsort, например. Чтоб код функции мог ссылаться на переменные из локального скоупа. gcc позволяет делать пикрил, а clang не позволяет. Ну и еще это не универсальный вариант, потому что такой коллбек не получится куда-то назначить для позднейшего вызова. Она живет, пока живет скоуп, а с переписывание стеком пойдут по пизде не только используемые переменные, но и сам код функции. Короче, тот же qsort сам должен знать, что ей передать, а он знать не может. Все? Пиздец?
Аноним 26/04/22 Втр 23:37:27 2344912 753
>>2344899
Заведи глобальный указатель на стейт. И заполняй его перед вызовом сортировки. Будет работать пока какой-нибудь мудак не передаст туда функцию сравнения, которая сама вызывает qsort.
Аноним 26/04/22 Втр 23:41:29 2344913 754
>>2344899
Aлсо
>с переписывание стеком пойдут по пизде не только используемые переменные, но и сам код функции
>код функции
чел? думаешь при входе в мейн рантайм компилирует твой callable, а при выходе стирает?
Аноним 26/04/22 Втр 23:43:46 2344915 755
>>2344913
Не, не компилирует, а скомпилированный код вставляет. Или нет?
Аноним 27/04/22 Срд 03:18:03 2344988 756
>>2344646
> Что буферизация? Принтф выводит сразу
Нет, не сразу, он буферизирует.
То, что твоя строка выводится сразу, не значит, что все строки во всех ситуациях на всех платформах выводятся сразу. Вывод у тебя сразу это лишь твоё случайное везение. Код, рассчитаный на везение - ненадежный код.
По спецификации printf буферизирует, значит когда нужен незамедлительный вывод, нужно сбрасывать буфер, иначе у тебя говнокод.
Аноним 27/04/22 Срд 05:10:57 2344997 757
Есть у кого ссылка на учебник с нормальным переводом без очепяток в коде ?
Аноним 27/04/22 Срд 05:28:28 2344998 758
>>2344997
С ошибками в коде это и есть правильные учебники. Ты должен понимать что там написано, а значит сам находить ошибки. Тупо же копипастя, ничему не научишься.
Аноним 27/04/22 Срд 12:16:30 2345116 759
>>2344441
Если не оишабюсь, то буфыеризация происодит до тех пор, пока не встретится перенос на новую строку "\n". Можешь написать заведомо неправильный код и поиграть так с stderr, и увидеть, что если не выводить в конце '\n', то во время segfault сообщение не будет выводиться, а если добавить - будет.
Аноним 27/04/22 Срд 20:46:35 2345515 760
>>2344988
понял, спасибо
>>2345116
да я уже разобрался, оказалось что на винде стдаут вообще не буферизированный
Аноним 28/04/22 Чтв 11:27:33 2345797 761
image 78Кб, 946x481
946x481
Аноним 28/04/22 Чтв 11:40:59 2345807 762
>>2345797
Зачем ты говно мамонта принес?
Аноним 28/04/22 Чтв 11:42:47 2345808 763
>>2345515
>да я уже разобрался, оказалось что на винде стдаут вообще не буферизированный
Разбирайся снова.
Аноним 28/04/22 Чтв 13:40:39 2345907 764
Аноним 28/04/22 Чтв 14:08:09 2345928 765
12922600157672.jpg 52Кб, 805x805
805x805
Сап, котятки. Откопал свой первый комп и решил что хочу в качестве хобби раскурить графику под дос, ну и соответственно что-то поближе к земле железу. Не то чтобы игори сразу кодить, для начала пару софтин с графеном под собственные нужды. Учил Си в универе двадцать лет назад, лол, не то чтобы его там давали на уровне выше школьного паскаля, но нравился мне он своей прямотой уже тогда. Короче анончики, нужна литература для долбоёба из середины девяностых про Си по полной программе. Желательно на русском, а то туповат одновременно с ангельского переводить и эти ваши указальники понимать. Насоветуйте книг, добрые аноны, а с меня как всегда.
Аноним 28/04/22 Чтв 14:12:01 2345936 766
>>2345808
так, ты вообще иди нахуй, мне той твоей шизы хватило
>>2345907
>The stdout and stderr functions are flushed whenever they are full or, if you are writing to a character device, after each library call
Аноним 28/04/22 Чтв 14:14:14 2345939 767
>>2345936
Собсна, какого хуя я вообще доказываю, самый простой и эффективный способ - запустить код и посмотреть, тем более что я даже кидал скрины с пруфами.
Аноним 28/04/22 Чтв 14:23:55 2345945 768
>>2345936
>мне той твоей шизы хватило
Какой?

Ты не разобрался в ситуации, но думаешь, что разобрался, почему ты по 1 реализации либси решил, что под окнами нет буферизации?
Аноним 28/04/22 Чтв 14:48:41 2345963 769
>>2345945
>Какой?
ну это же ты мне тогда про буферизацию говорил? если нет значит не тебе
>Ты не разобрался в ситуации, но думаешь, что разобрался
в этом нет никакой информации, если я в чём-то не прав то лучше скажи в чём конкретно
>почему ты по 1 реализации либси решил, что под окнами нет буферизации?
Ну в идеале да, лучше сказать что в msvc это так работает, но я и в других местах видел такую формулировку, подумал, может есть какая-то зависимость от платформы и это в любых реализациях под винду так работает
Аноним 29/04/22 Птн 01:56:55 2346362 770
>>2345963
Если пишешь под винду, так и пиши под винду, виндовыми вызовами. Свою строку форматируй в память по указателю, а готовую хоть прямо в видеопамять записывай. И не будет никаких гаданий по кофейной гуще мультимочи, буферы-хуюферы.
Аноним 29/04/22 Птн 10:46:48 2346486 771
>>2345936
А я напоню, что в стандартном си стдерр всегда не буферизован, стдаут буферизован на терминал - построчно, иначе полностью.
Аноним 29/04/22 Птн 14:42:16 2346641 772
>>2346362
Мне не нужно было ничего писать, я просто хотел узнать как это работает
>>2346486
Ну это явно не требование стандарта, потому что в реализации микрософта работает не так
Аноним 29/04/22 Птн 15:26:39 2346684 773
>>2346641
>в реализации микрософта
Ты бы еще турбо си.
Аноним 29/04/22 Птн 17:00:04 2346742 774
>>2346684
всмысле, она самая популярная
Аноним 29/04/22 Птн 18:54:22 2346859 775
Аноним 29/04/22 Птн 20:55:15 2346989 776
>>2346742
Ну и что. У них С++ тащемто.
Аноним 30/04/22 Суб 01:54:15 2347148 777
>>2346641
>Мне не нужно было ничего писать
Суть программирования 2022, одни пиздаболы из социалочек, всё превращают в говночатик ради попиздеть.
Аноним 30/04/22 Суб 11:12:33 2347196 778
>>2347148
>Суть программирования 2022
>всё превращают в говночатик ради попиздеть
Недавно открыл для себя форумы?
Аноним 30/04/22 Суб 14:04:55 2347290 779
Какие есть перспективы в ембеддед разработке ныне? Есть смысл перекатываться из стагнирующего и жутко перегретого рынка веба в ембеддед?
Я вкатун, если что. Вышку почти закончил, информатика и вычислительная техника, что-то знаю про всякие триггеры, транзисторы, сумматоры, закон ома помню, но все очень поверхностно, так как никогда должного внимания электронике и схемотехнике не уделял - думал что буду веб манькой.
Си знаю, многократно писал всякие лабы, в том числе под posix, с++ довольно поверхностно. Микроконтроллеры в руках ни разу не держал, паять не умею, с ардуиной и STM никогда не работал. Пользовался микрокапом и мультисимом в универе, хз, нужно ли это в ембеддеде.
Аноним 30/04/22 Суб 14:14:27 2347296 780
>>2347290
>Какие есть перспективы в ембеддед разработке ныне?
Никаких.
Аноним 30/04/22 Суб 20:13:54 2347560 781
>>2346989
Си тоже есть
>>2347148
А как мне ещё задавать вопросы если их дохуя, еблан? Я тут предлагал с кем-нибудь перекатиться в тг например, под предлогом что тред засрется - мне сказали спрашивать здесь.
Аноним 01/05/22 Вск 02:04:24 2347790 782
>>2347560
>А как мне ещё задавать вопросы
в /b/
Аноним 01/05/22 Вск 16:59:14 2348081 783
Я вкатун, прошу отнестись с пониманием к моему вопросу. Прочитал книгу и задался вопросом, а что дальше ? Ну я получил представление о языке, его синтаксисе, командах и т.д. А дальше что ? Просто открывая какой-то рандомный код, я нихуя не могу понять что в нем написано, не в плане команд операторов, а в плане указанных переменных и прочей хуеты. Или это значит, что я хуево все понял ?
Аноним 01/05/22 Вск 20:17:58 2348185 784
>>2347790
У меня всё по теме. Сам-то ты тут что-то делаешь, кроме того что критикуешь? Можешь идти нахуй кароче.
Аноним 01/05/22 Вск 20:21:35 2348186 785
>>2348081
>А дальше что ?
А зачем ты учил язык?
>Просто открывая какой-то рандомный код, я нихуя не могу понять что в нем написано
Если это какой-то специфичный код, тем более без пояснений, ты не обязан понимать что он делает. А если это простой код, значит ты как-то не так учил.
Аноним 02/05/22 Пнд 04:07:40 2348362 786
>>2348186
> А зачем ты учил язык?
Хотел разобраться в том, как малварь создают.
> Если это какой-то специфичный код, тем более без пояснений, ты не обязан понимать что он делает. А если это простой код, значит ты как-то не так учил.
Да, именно специфичный, там какой-то сервер был, нихуя не понял, куча каких то незнакомых библиотек и т.д.
Аноним 02/05/22 Пнд 08:06:32 2348379 787
>>2348362
>малварь создают
Разобрался? Теперь пиздуй в асм и не забудь mov bp, sp
Аноним 03/05/22 Втр 12:14:29 2349193 788
>>2348379
> Разобрался?
Нет
>Теперь пиздуй в асм и не забудь mov bp, sp
Зачем ?
Аноним 04/05/22 Срд 14:47:30 2349983 789
image 39Кб, 1245x433
1245x433
image 8Кб, 434x169
434x169
Почему.
Аноним 04/05/22 Срд 14:49:45 2349986 790
Аноним 04/05/22 Срд 15:53:15 2350042 791
>>2349986
Везде читаю что если переменная перечисляемого типа, то она может принимать только значения которые перечислены в определении enum, иначе выдаст ошибку. По факту присваиваю ей другое значение и никакой ошибки нет.
Аноним 04/05/22 Срд 16:10:37 2350064 792
>>2350042
>Везде читаю что если переменная перечисляемого типа, то она может принимать только значения которые перечислены в определении enum, иначе выдаст ошибку
Си и кресты не перепутал?
Аноним 04/05/22 Срд 16:14:33 2350068 793
Аноним 04/05/22 Срд 16:22:12 2350072 794
>>2350068
В Си слабая типизация, такое поведение не может быть ошибкой.
Аноним 04/05/22 Срд 16:29:57 2350075 795
>>2350072
Ну тут же не приведение, а какой-то конкретный прикол перечисляемых типов. Но кажется я немного понял, там не ошибка должна быть а варн, но у меня нужные флаги не включены походу. Просто странно, зачем этот тип вообще нужен без варнов, можно же было просто сделать enum без всяких дескрипторов, чтоб обычные символические константы создавать и использовать их везде безотносительно типов.
Аноним 04/05/22 Срд 16:36:18 2350080 796
>>2350075
>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
Аноним 04/05/22 Срд 17:16:53 2350107 797
>>2350080
Да я не про это говорю, а про то что без предупреждений перечисляемые типы не нужны, они ничем не отличаются от обычных целочисленных вроде int.
Аноним 05/05/22 Чтв 07:56:33 2350455 798
>>2350107
Предупреждение это не язык, а лишь помощь программисту избегать ошибок. Чем тупее программист, тем больше ему нужно помощи чтобы не обосраться. Вот так, со временем количество предупреждений и увеличивается. Раньше предупреждений было мало, теперь стало много. Дрошло и до того, что некоторым без предупреждений вообще никак, не нужно. Достигли дна, наконец-то.
Аноним 05/05/22 Чтв 14:44:06 2350644 799
>>2350455
Да мне лично вообще похуй на предупреждения, просто подметил странность.
Аноним 07/05/22 Суб 15:53:57 2351896 800
аноны, помогите. нужна библиотека для с. которая работает непосредственно с партишнами ext234, а конкретно например позволяет получать например незанятые или наоборот занятые блоки а так же мб записывать\считывать информацию из них. есть вообще что-то похожее?
Аноним 07/05/22 Суб 16:26:48 2351909 801
Аноним 08/05/22 Вск 09:29:39 2352253 802
>>2297526 (OP)
Как сделать простое виндусятное окно для программы си? Можно ли совместить её с какой нибудь HiAsm? Они смогут обмениваться переменными?
Аноним 08/05/22 Вск 09:38:46 2352257 803
>>2352253
>Как сделать простое виндусятное окно для программы си?
Зависит от платформы.
Аноним 08/05/22 Вск 09:45:46 2352260 804
>>2345928
Спроси на форуме даунгрейдеров
Аноним 08/05/22 Вск 13:05:01 2352429 805
>>2352260
>Спроси на форуме даунов
Так будет вернее.
Аноним 08/05/22 Вск 15:16:02 2352567 806
Аноним 08/05/22 Вск 15:34:15 2352580 807
>>2352567
Как успехи в программировании, недаун? Или можешь только хрюкать на форуме даунов?
Аноним 08/05/22 Вск 19:59:34 2352879 808
image 11Кб, 394x345
394x345
почему.
Аноним 08/05/22 Вск 20:13:19 2352899 809
image.png 0Кб, 48x54
48x54
Аноним 08/05/22 Вск 20:14:39 2352901 810
Аноним 08/05/22 Вск 20:36:55 2352918 811
>>2352879
2 бита значения и 1 бит знаковый, у тебя переполнение знакового происходит.
Аноним 08/05/22 Вск 20:39:21 2352919 812
Аноним 08/05/22 Вск 22:16:24 2352962 813
>>2352879
Попробуй "unsigned int b : 3"
Аноним 12/05/22 Чтв 17:05:04 2355294 814
Аноны, написал обработчик для файла .bin, все норм работает. Но у меня таких бинарных файлов 6,5 тысяч. Названия файлов просто пронумерованы 1.bin - 6573.bin.
Как мне по очереди их обрабатывать, инкрементируя название файла?
Надо ведь как-то в fopen() это делать?
Аноним 12/05/22 Чтв 17:10:58 2355300 815
>>2355294
>Как мне по очереди их обрабатывать, инкрементируя название файла?
Преобразовывать числа в строки.
Аноним 12/05/22 Чтв 17:51:22 2355317 816
Аноним 12/05/22 Чтв 18:02:43 2355326 817
Аноним 12/05/22 Чтв 20:55:33 2355412 818
>>2355326
Я бы мб хотел, еслиб знал какие еще варианты есть.
Как это сделать грамотнее?
Аноним 13/05/22 Птн 18:05:35 2355889 819
>>2352253
Шереметьев, "программирование на си" torrent
Аноним 14/05/22 Суб 08:41:41 2356114 820
image.png 348Кб, 570x590
570x590
>>2355889
>Содержание курса:
>Введение
>Блок 1. Основы языка Си
>1.1 Установка CodeBlocks
КО
>1.2 Минимальная программа на языке Си
>1.3 Русификация консоли
КО
>1.4 Компиляция программы
КО
>1.5 Суть работы программиста
КО-КО-КО ))))
Аноним 15/05/22 Вск 15:21:43 2356866 821
Добавьте в шапку курс по программированию на Си в Линукс.
https://www.edx.org/professional-certificate/dartmouth-imtx-c-programming-with-linux
Сам по себе сертификат платный, но можно просто смотреть курсы и решать задачки бесплатно без сертификата. Если кто-то беспокоится, что его там вместо программирования будут учить Линуксу или башу или еще какой-то хуете, то там первые 5 курсов вообще не затрагивают ни операционные системы, ни даже заставляют устанавливать компилятор. Компилятор на одной и той же страничке. Все лекции с субтитрами. Объясняются принципы хранения данных в памяти. После них в голове все встало на места и наконец-то открылось понимание указателей, маллока, массивов, передача параметров по ссылке и все такое.

Однозначная годнота для тех, кто не может осилить К&R.
Аноним 15/05/22 Вск 22:54:32 2357131 822
image 5Кб, 264x179
264x179
Кто-нибудь знает в каком порядке тут производится замена?
Аноним 16/05/22 Пнд 03:20:49 2357219 823
image.png 44Кб, 172x135
172x135
>>2357131
На что я, блять, смотрю?
Аноним 16/05/22 Пнд 14:02:59 2357373 824
>>2357219
Да просто задумался, а что если сделать так, и в итоге возник такой вопрос. Например ясно что он точно не по очереди их заменяет, потому что иначе всё заменилось бы на A и была бы ошибка (переопределение переменной). Интересно как он парсит.
Аноним 16/05/22 Пнд 14:06:53 2357375 825
Аноним 16/05/22 Пнд 14:13:51 2357379 826
>>2357375
>Гуглить не пробовал?
Прочесть мой вопрос не пробовал?
Аноним 16/05/22 Пнд 14:15:17 2357380 827
Аноним 16/05/22 Пнд 14:16:32 2357382 828
Аноним 16/05/22 Пнд 22:01:14 2357579 829
>>2357379
ты сам-то читать умеешь?

по ссылке блять твой ответ, тебе даже гуглить не понадобилось
Аноним 17/05/22 Втр 00:01:02 2357641 830
>>2357579
Ну давай, ткни носом, где там ответ на "в каком порядке производится замена" или "как он парсит"? Я бы ничего не сказал если бы не это "гуглить не пробовал". Естественно блять пробовал, иначе не спрашивал бы.
Аноним 17/05/22 Втр 17:17:36 2358105 831
>>2357641
прокати файл через препроцессор и посмотри сам, клоун.
Аноним 17/05/22 Втр 17:20:38 2358111 832
>>2357641
>>2358105
А ещё я только что нашёл ответ на стаковерфлове, который это, сука, объясняет.
>Естественно блять пробовал
нихуя ты не пробовал.
Аноним 17/05/22 Втр 23:25:24 2358272 833
>>2358105
Ебнутый? Предлагаешь мне реверсить препроцессор?
>>2358111
>нихуя ты не пробовал.
иди нахуй.
Аноним 18/05/22 Срд 02:38:00 2358322 834
1617268799521.png 66Кб, 352x264
352x264
>>2358272
боже блять какой же ты тупой
>>2357375
мало того, что ты нихуя не гуглил, так ещё ссылку кинули и ты её даже сука не открывал, зато сидит самый умный, без ответа мля

Аноним 18/05/22 Срд 13:38:53 2358472 835
1380293363371.jpg 22Кб, 400x300
400x300
>>2352260
Спасибо за мысль, не знал по какому запросу искать клуб таких некрофилов как я, лол!

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

typedef struct tagBITMAP / the structure for a bitmap. /
{
тут всякие кишки
} BITMAP;

и потом объявляет переменные везде по коду через BITMAP, а tagBITMAP вообще нигде не использует. Почему не второй? Гайды говорят что после объявления структуры пишутся имена переменных жы? Зойчем тогда вообще первое имя?
Аноним 18/05/22 Срд 18:56:56 2358693 836
>>2358322
нет это ты тупой, сколько мы уже пиздим а ты до сих пор не понял в чём мой вопрос, хотя он простейший
Аноним 18/05/22 Срд 20:01:32 2358733 837
16143641827210.mp4 169Кб, 480x270, 00:00:02
480x270
>>2358472
http://www.c-cpp.ru/books/typedef
Вроде достаточно подробно расписано, хотя хз, не трогал тайпдефы особо

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

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

Для совсем дегенератов ебаных: у тебя "А" превращается в "А", а "B" - в "B". порядок выполнения подстановок тут оказывает серьёзное влияние на целое нихуя
Аноним 18/05/22 Срд 21:59:12 2358795 838
>>2358733
Ты тупой еблан и продолжаешь это доказывать, потому что ВСЁ ЕЩЁ не понимаешь.
>чё останется- то и заменяется последним
Меня ебёт что заменяется последним? Кто вообще про это спрашивал? Что останется я и так могу понять, просто принтанув A или B.
>гугли инфу
Точно, именно это мне и было нужно если я сюда написал, без тебя бы не догадался никак
>порядок выполнения подстановок тут оказывает серьёзное влияние на целое нихуя
Опять же, кто про это спрашивал? Меня это абсолютно не ебёт.
Можешь больше не отвечать, помочь ты не можешь всё равно, хотя помощь от такой гниды как ты мне в любом случае не нужна
Аноним 18/05/22 Срд 22:08:42 2358808 839
Привет аноны, я нюфаг, взялся написать свою первую змейку, сижу на линуксе и не могу найти нормальный способ описать код так, чтобы змейка продолжала движение пока не нажата снова клавиша какая-нибудь. По гуглу будто одни костыли через termios.h, в под винду всего лишь одной функцией khbib() решается. Неужели ничего нового не придумали под линукс?
Аноним 18/05/22 Срд 23:58:20 2358875 840
>>2358795
Бля это не ты на днях в цпп треде 50 постов на оператор += наматывался? Тот так же крыл всех хуями требуя все более детальных инструкций.
Аноним 19/05/22 Чтв 01:11:35 2358904 841
image.png 154Кб, 1850x684
1850x684
>>2356866
>кто не может осилить К&R.
Так может ну его нахуй тогда этот Си?
Аноним 19/05/22 Чтв 13:15:15 2359111 842
>>2358875
>Бля это не ты на днях в цпп треде 50 постов на оператор += наматывался?
Нет, хз о чём ты
>крыл всех хуями
Я не крыл до определённого момента, когда чел начал попусту выёбываться
И конечно я ничего не требовал, просто спросил
Аноним 19/05/22 Чтв 13:17:58 2359113 843
12877342593692.jpg 61Кб, 500x503
500x503
>>2358733
> Вроде достаточно подробно расписано
Я на ту же статью вчера в гугле наткнулся, лол, и она не объясняет. Но уже в следующем листинге тот чувак пишет без первого имени вообще, так что думаю это чисто косметическая поебень и всё работает и так. Спасибо, анон.
Аноним 19/05/22 Чтв 13:18:31 2359115 844
12877342593692.jpg 61Кб, 500x503
500x503
>>2358733
> Вроде достаточно подробно расписано
Я на ту же статью вчера в гугле наткнулся, лол, и она не объясняет. Но уже в следующем листинге тот чувак пишет без первого имени вообще, так что думаю это чисто косметическая поебень и всё работает и так. Спасибо, анон.
Аноним 19/05/22 Чтв 14:38:04 2359164 845
>>2358904
Долбоеб не тот, кто не пока что не может осилить, а кто решил, что раз не осилил, то ну его нахуй.
Аноним 19/05/22 Чтв 15:09:03 2359185 846
>>2358904
Да и вообще, обычно K&R советуют тем, кто вообще лыка не вяжет в программировании, типа меня. А он так-то сложный.
Аноним 19/05/22 Чтв 15:30:31 2359197 847
Кто сталкивался со Столяровым? Нормальный у него учебник?
цитата например

К сожалению, я вынужден сейчас сказать вам ещё одну не очень приятную вещь.
Далеко не каждый человек может стать программистом, и дело здесь не в уровне интеллекта или каких-то там «способностях», а в том, каковы ваши индивидуальные склонности. Программирование — это очень тяжёлая работа, требующая предельного интеллектуального напряжения, и выдержать эту пытку могут лишь те сравнительно
редкие извращенцы, которые способны от процесса создания компьютерных
программ получать удовольствие. Вполне возможно, что в ходе изучения этой книги вы поймёте, что программирование — это «не ваше»; ничего страшного, в мире есть много других хороших профессий. Если моя книга «всего лишь» позволит вам вовремя понять, что это не ваш путь, и не тратить лучшие годы жизни на бесплодные попытки учиться
в ВУЗе по какой-нибудь программистской специальности — что же, это само по себе немало: лучшие годы, потраченные впустую, вам потом никто не вернёт, и чем раньше вы поймёте, что вам нужно (точнее, не нужно), тем лучше.
Аноним 19/05/22 Чтв 15:32:49 2359200 848
>>2359197
И ещё

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

Итак, если иметь в виду в будущем изучение Си, то предварительно нужно освоить какой-то язык, в котором а) есть указателиь причём в полный рост, без всякой сборки мусора; б) без указателей можно обходиться, пока обучаемый не окажется более-менее готов к их восприятию; и в) начав использовать указателиь обучаемый расширит свои возможностиь то есть в указателях должна быть реальная потребность.
Аноним 19/05/22 Чтв 15:36:11 2359201 849
Аноним 19/05/22 Чтв 22:09:15 2359472 850
>>2358795
>Меня ебёт что заменяется последним? Кто вообще про это спрашивал?
Ты.
>>2357131
>Кто-нибудь знает в каком порядке тут производится замена?
Аноним 20/05/22 Птн 09:33:12 2359647 851
>>2357131
<iframe width="800" height="500" frameborder="0" src="https://pythontutor.com/iframe-embed.html#code=%23include%20%3Cstdio.h%3E%0A%23include%20%3Cstdlib.h%3E%0A%0A%23define%20A%20B%0A%23define%20B%20A%0A%0Aint%20main%28%29%20%7B%0A%20%20int%20A%20%3D%201,%20B%20%3D%202%3B%0A%20%20printf%28%22B%3D%20%25d%22,%20B%29%3B%0A%20%20return%200%3B%0A%7D&codeDivHeight=400&codeDivWidth=350&curInstr=1&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D"> </iframe>

https://pythontutor.com/c.html#code=%23include%20%3Cstdio.h%3E%0A%23include%20%3Cstdlib.h%3E%0A%0A%23define%20A%20B%0A%23define%20B%20A%0A%0Aint%20main%28%29%20%7B%0A%20%20int%20A%20%3D%201,%20B%20%3D%202%3B%0A%20%20printf%28%22B%3D%20%25d%22,%20B%29%3B%0A%20%20return%200%3B%0A%7D&curInstr=1&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D
Аноним 20/05/22 Птн 16:25:24 2360025 852
>>2359472
Там ничто не заменяется последним, и вот тут >>2357373 я объяснил почему
Аноним 20/05/22 Птн 16:28:15 2360032 853
>>2360025
Ты котов бездомных тоже подкармливаешь?
Аноним 20/05/22 Птн 17:19:55 2360079 854
>>2360025
>>2357373
#define ass(blast) ( blast+ass(blast) )
посмотри, во что это резолвит препроцессор, и да будет тебе счастье.
Аноним 20/05/22 Птн 17:22:06 2360081 855
>>2360079
тьфу, хуйню сказал

#define ass(blast) (blast + usa(blast))
#define usa(blast) (blast + ass(blast))
Аноним 20/05/22 Птн 19:15:46 2360172 856
>>2360032
Да я думаю он реально не понимает

>>2360081
Сейчас не могу проверить, но если просто рассуждать, разве это не то же самое что я показал?
Аноним 20/05/22 Птн 19:29:11 2360189 857
image 7Кб, 383x177
383x177
>>2360081
Хотя не, понял к чему это. То есть получается что там рекурсивная замена с каким-то лимитом?
Аноним 21/05/22 Суб 00:26:40 2360360 858
>>2360189
#define A B
#define B A

согласно второму дефайну
#define A B превращается в #define A A, который дальше уже не обрабатывается во избежание рекурсии
аналогично со вторым дефайном
Аноним 21/05/22 Суб 13:29:28 2360560 859
>>2360360
Не, дефайны вроде начинают дейстовать от того места где объявлены
Аноним 21/05/22 Суб 14:55:55 2360626 860
>>2297526 (OP)
В некоторых программах, таких как ffmpeg или ядро линукса, можно включать/отключать функционал на этапе компиляции. Как это работает?
Аноним 21/05/22 Суб 15:29:37 2360639 861
>>2360626
>Как это работает?
Сборка\препроцессор\скрипты.
Аноним 22/05/22 Вск 17:25:08 2361254 862
>>2360639
В общих чертах процесс понятен, но как такое реализовать на практике? Я не хардкорный погромист, а сисадмин локалхоста.
Аноним 22/05/22 Вск 19:04:30 2361309 863
>>2360032
Что за мемес с котами?
Аноним 23/05/22 Пнд 04:36:20 2361543 864
Аноним 23/05/22 Пнд 10:21:22 2361603 865
>>2359201
Почему? Знаком с ним? Не стоит время тратить на его учебник?
Аноним 23/05/22 Пнд 16:54:56 2361850 866
>>2361543
С этим проблем нет, я про это
>>2360360
>согласно второму дефайну #define A B превращается в #define A A
Аноним 23/05/22 Пнд 19:59:05 2362026 867
image.png 4Кб, 255x61
255x61
image.png 5Кб, 255x70
255x70
>>2361850
1)B это A
2)#define A B, где B это A
3)#define A A
?)???
4)вы восхитительны
Аноним 23/05/22 Пнд 21:16:22 2362066 868
>>2362026
1) дефайны не заменяют друг друга
2) ???
3) ¯ \ _ (ツ) _ / ¯
гы 24/05/22 Втр 17:34:43 2362447 869
image 56Кб, 958x366
958x366
Аноним 24/05/22 Втр 20:58:54 2362605 870
>>2361603
Ну чел, он действующий препод в мгу. Как ты думаешь сам?
Конечно стоит время потратить, тем более что если в инглиш не можешь, переводы читать - с ума сойти можно. А тут максимально локализировано всё.
p.s. видосы на ютубе у него шиза полная
Аноним 25/05/22 Срд 11:41:54 2362920 871
Всем сап, вопрос от неуча.
Недавно для себя открыл тот факт, что вышла Raspbian OS 64-bit.
Если я установлю на малинку 64-битную ос, то сишные библиотеки для доступа к GPIO, по типу WiringPi и BCM2835 будут работать?
Они ведь создавались еще на 32-битных осях и создатели. В инете годной инфы нема, видимо, потому что новая ОС вышла не так давно, а я не тру хацкер чтобы самому допереть до этого.
Аноним 25/05/22 Срд 14:33:29 2363019 872
А где мне блять читать что входит в конретную библиотеку и описание каждой функции?
Аноним 25/05/22 Срд 15:51:40 2363074 873
Аноним 25/05/22 Срд 20:53:24 2363382 874
!!569903615.jpg 114Кб, 464x450
464x450
>>2363074
Братишка, ты не понимаешь сути си-тредов. Приходи поливать других гавном а не это своё погромирование.
Аноним 26/05/22 Чтв 07:22:47 2363582 875
>>2363019
>в конретную библиотеку
В исходниках.
>описание каждой функции
В документации.
Аноним 26/05/22 Чтв 08:47:41 2363621 876
>>2363382
Можно ведь тоньше. Например, "хочешь получить идеальный язык без сишных ошибок, но очень быстрый? Голубая ласка vlang.io уже идёт за тобой".
Аноним 26/05/22 Чтв 17:33:07 2364079 877
>>2297526 (OP)
Хз куда спросить, с радача с таким вопросом прогнали.
В общем, учу FreeRTOS.

структура моей программы такова:

main.c:
LED_Task
TimerTask
CanTask

Ну и несколько файлов в которых Init, которые вызываются из main() и IRQ, в лучших традициях bare-metal:
timer.c
uart.c
can.c
и прочее...

Есть несколько вопросов:
1. Правильно ли так закладывать структуру?
2. Стоит ли делать Семафоры\Мьютексы и прочие примитивы глобальными, чтобы каждое прерывание могло им спокойно пользоваться, если оно нужно в другом файле?
Аноним 26/05/22 Чтв 20:41:50 2364217 878
>>2357131
Один из самых заебатых вопросов на собеседовании, которым тимлид тешит свое раздутое ЧСВ.

Еще не хватает:

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. Найдите все ошибки в данном коде на этой распечатке.
-Какого плана? Синтаксические тоже? Или только алгоритмичексие?
-Да тут и синтаксические и алгоритмические, долбоебические (кхе-хе) Еще никто все не нашел, насколько помним.
Аноним 26/05/22 Чтв 20:46:57 2364221 879
>>2364217

>>2364217
>e = a b ^ c+++ / d;
e = a ✱ b ^ c+++ / d;
>(int ✱ const)(0x1234) = 0xcaba;
✱(int ✱ const)(0x1234) = 0xcaba;

звездочки сожрались

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

фикс.
Аноним 27/05/22 Птн 15:03:54 2364712 880
>>2364217
>foo = foo++ + ++foo;
>printf("%d %d", foo++, foo++);
>Я проверял 1-й и 2-й на 3-х компиляторах и получил 2 разных ответа.
Неопределенное.
божественно Аноним 27/05/22 Птн 15:17:18 2364734 881

#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));
}
Аноним 27/05/22 Птн 20:37:28 2365053 882
>>2364712
Да. Тем не менее это спрашивали, как-то. Сейчас я уже понял как отвечать на подобного рода хуйню.

Аноним 28/05/22 Суб 02:50:01 2365202 883
>>2362066
Что у меня на скринах, каша ты манная?
Аноним 28/05/22 Суб 07:29:05 2365222 884
Есть структура, инициализирующая поля экземпляров исходя из наборов разных констант. Первое, что пришло в голову, это задать для каждого набора констант по массиву, в каждом из которых индексом будет номер конкретного профиля структуры, т.е.

Имя: Вася, Петя, Коля, Саша
Возраст: 21, 64, 7, 15
Температура: 36.4, 17.2, 37.0, 36.9

Не нравится, что в таком объявлении нет связей кроме индекса, что может быть неочевидно. Насколько это уродско, или как вы делаете это на си?
Аноним 28/05/22 Суб 11:03:37 2365280 885
>>2365222
Что тебе мешает создать массив структур?
Аноним 28/05/22 Суб 11:05:08 2365283 886
>>2365202
У тебя на скринах результат замены макроса.
Аноним 28/05/22 Суб 11:06:17 2365284 887
>>2365222
Базы данных для кого придумали, дятел.
Аноним 28/05/22 Суб 11:07:16 2365286 888
Аноним 28/05/22 Суб 11:10:44 2365290 889
>>2365286
>хранить пациентов в сишных массивах
Чтобы тебя так в больнице лечили.
Аноним 28/05/22 Суб 11:16:00 2365292 890
>>2365290
>хранить
Зачем тратить время на обращения к базам, когда данные константные?
>пациентов
Он ничего не говорил про пациентов и реальный проект.
>в сишных массивах
Что плохого?
>Чтобы тебя так в больнице лечили.
Это проклятие?
Аноним 28/05/22 Суб 16:51:39 2365573 891
image 16Кб, 439x196
439x196
Аноним 29/05/22 Вск 03:53:00 2366012 892
>>2365290
Кажется, я только что хэш таблицы
Аноним 29/05/22 Вск 13:49:01 2366313 893
>>2297526 (OP)
Есть какой нибудь годный учебник по основам программирования на С? В университет надо для поступления
Аноним 29/05/22 Вск 19:31:21 2366597 894
>>2297526 (OP)
Go
Objective-C

Да, да многие сейчас скажут, что это нужна потому что потому на этом легче разрабатывать хуйню для Гугл и Эпол. Но в этом и проблема. Что это было сделано не как дополнение, а как замещение, чтобы позаниматься саморекламой. Это не C++ над C.

То же самое сделали Apple с Flash`ем, чтобы поаутофеллировать.
Аноним 29/05/22 Вск 20:08:56 2366621 895
Аноним 30/05/22 Пнд 01:38:30 2366790 896
>>2366621

>Go
>Objective-C
Это было не в тот тред.
Аноним 30/05/22 Пнд 09:05:25 2366851 897
>>2366790
Это ты не в тот тред, макака.
Но я понимаю, трудно бороться с тягой залезть в ситред, даже если он тебя не касается. Тяга грязных чуханов к свету так же естественна как мухота собирается вокруг лампочки. Вот и вылязят из своих помоев и ползут, сползаются к настоящему языку настоящего программирования. И сколько ни отрицай на словах, в душе истина неизменна, ведь истина это сама реальность которую не слепишь из слов, только ложь.
Аноним 30/05/22 Пнд 09:41:07 2366871 898
>>2366851
Ладно, если дохуя умный, тогда мне на вопрос ответь, который я тут оставил неделю назад:
>>2364079

Только ответ не "Да\Нет", а весомый какой-нибудь.
Аноним 30/05/22 Пнд 11:16:00 2366932 899
Аноним 30/05/22 Пнд 11:17:11 2366935 900
>>2366871
>а весомый какой-нибудь.
Забей хуй на структуру, всем похуй и формируют так, как им удобнее, язык не задает ее явно, значит любая правильная.
Аноним 30/05/22 Пнд 11:27:17 2366961 901
>>2364079
>2. Стоит ли делать Семафоры\Мьютексы и прочие примитивы глобальными, чтобы каждое прерывание могло им спокойно пользоваться, если оно нужно в другом файле?
Чел. Мутекс защищает определенный ресурс. Если этот ресурс нужен прям всем, лучше экспортируй функции, которые берут мутекс и работают с ресурсом.
Аноним 30/05/22 Пнд 16:42:01 2367186 902
Если я не хочу пользоваться sql, xml или другой сторонней разметкой, нормально ли хранить табличные данные в файлах вида "один файл - один столбец"? Что нужно знать при этом про кодировку и разделители?
Аноним 30/05/22 Пнд 19:13:19 2367357 903
>>2367186
Нит. Используй хотя бы csv, так не потеряется реляция. Кодировка только utf-8. Разделитель тот, которого нет в полях, зумерище.
Аноним 31/05/22 Втр 03:43:27 2367659 904
>>2367186
>я не хочу
Здесь сайт 18+

>>2367357
>Кодировка только utf-8
Тыскозал? Еще в zip запакуй, дятел, больше кодировок богу кодировок.
utf16 - вперед, как загрузил, так и пользуешься, так же и записал, никаких говнобиблиотек и говноконверсий.
Аноним 31/05/22 Втр 07:51:48 2367691 905
>>2367659
Привет, токсик, я узнал тебя по твоим сварливым высерам.
Аноним 31/05/22 Втр 08:41:04 2367722 906
>>2367659
>никаких говнобиблиотек и говноконверсий.
Ебалай, без конверсий это останется массивом uint16_t.
Аноним 31/05/22 Втр 13:17:02 2367894 907
Кто-нить юзал для Си либу pxlib для того чтобы вытаскивать данные из файлика paradox? как включить эту ебучую декодировку при установке
Аноним 31/05/22 Втр 13:27:35 2367907 908
>>2366935
>>2366961
Спасибо, примерно, значит, двигаюсь в правильном направлении.

С глобальными переменными лучше не играться?
Аноним 31/05/22 Втр 17:46:56 2368119 909
>>2367722
wchar_t, или, для тупых ебалаев, wide char, юникодные символы нативные для системы, а значит не требующие ничего, бери и пользуйся, а не лепи макакины говнопрокладки на пустом месте.
Аноним 31/05/22 Втр 22:37:44 2368310 910
>>2368119
>wide char, юникодные символы нативные для системы
Худшее решение стандарта.
пофиксил
Аноним 01/06/22 Срд 03:00:14 2368428 911
>>2368310
>пук
Настоящее лицо прокладочной макаки. Пара простых ответов и попытки косплеить человека испарились без следа уступив законное место нативному хрюканью.
Аноним 01/06/22 Срд 04:28:11 2368438 912
>>2368428
Толсто.
Сможешь объяснить зачем существуют широкие символы?
Аноним 01/06/22 Срд 08:09:20 2368482 913
Аноним 01/06/22 Срд 20:19:53 2369028 914
Привет, бородатые.
Тяжело ли вкатиться в коммерческую разработку на Си без ВО? Уже 2 года работаю java макакой, но, сука, тянет на самые низкие уровни. Где в РФ сейчас пишут на Си?
Аноним 02/06/22 Чтв 13:21:52 2369557 915
1261897144924.jpg 50Кб, 699x629
699x629
Сап, ананасы, некрофил-нубас на проводе. Продолжаю ковыряться в коде под досом, точнее Borland C 3.1. Поясните как прицепить внешний obj.

Книга, по которой я пытаюсь ебаться с ассемблером/сёй не считает нужным разжёвывать такие нубские вопросы. Вот листинг процедуры хелловорлда на MASM, вот сишный листинг — дальше сами. В asm лежит процедура, которая должна вызываться из сишного кода. Из асма я хуярю обж, но ся при компилировании матерится что линкер не нашёл эту самую процедуру. Куда читать, что делать, ананасы? Выручайте.
Аноним 02/06/22 Чтв 20:20:09 2369985 916
>>2369557
>Куда читать, что делать, ананасы?
Объявить функции в сикоде не забыл?
Аноним 02/06/22 Чтв 21:00:42 2370026 917
Clipboard01.jpg 145Кб, 1296x839
1296x839
>>2369985
Объявлено, я запускаю исходники что с книгой шли, разве что conio добавил, которой не хватало для kbhit.
Аноним 03/06/22 Птн 01:44:50 2370208 918
>>2369028
Как и везде думаю - разработка драйверов/ядра/прочего говна для ОС. Вакансий сравнительно мало, но и поток людей туда не очень большой, так что устроиться можно.

Правда вместе с С придется учить ассемблер и как работает ОС "под капотом". За месяц-два можно спокойно вкатиться
Аноним 03/06/22 Птн 17:38:12 2370870 919
Дайте пиздатое руководство по именованию переменных, чтобы они не выглядели как сороконожка.
Аноним 03/06/22 Птн 19:18:49 2370930 920
>>2370870
Посмотри на код любого крупного проекта. Например, ядро линукс, nginx, ffmpeg,...
Аноним 05/06/22 Вск 21:53:26 2372431 921
>>2370208
>За месяц-два
маловато для нормального вкатывания
Аноним 06/06/22 Пнд 12:59:31 2372734 922
>>2372431
Ну я лично столько учил. Правда я учил конкретно архитектуру ОС (свое ядро делал), а С и ассемблер уже знал.

Спустя 2 месяца после того как закончил в Газпром устроился. Правда переучиваться с x86 на arm пришлось.
Аноним 07/06/22 Втр 12:12:12 2373602 923
>>2372734
>учил конкретно архитектуру ОС
Не подскажешь материалы для изучения?
Аноним 07/06/22 Втр 21:34:12 2374226 924
а что на русском почитать про библиотеки часто используемые?
Аноним 07/06/22 Втр 23:31:58 2374365 925
Аноним 08/06/22 Срд 00:50:01 2374466 926
Почему про указатели рассказывают на примере переменных, а не структур? Для переменных они же лишены смысла
Аноним 08/06/22 Срд 09:52:19 2374587 927
Аноним 08/06/22 Срд 09:54:14 2374589 928
>>2374466
С учётом сказанного выстраивается довольно однозначная цепочка языков для начального обучения: Паскаль, язык ассемблера, Си. В эту
цепочку практически в любом месте можно что-нибудь добавитьь но ни убирать из неё элементы, ни переставлять их местамиь судя по всему, нельзя. Зная Си, можно вернуться к изучению явления, именуемого операционной системой, и её возможностей с точки зрения программиста

Итак, если иметь в виду в будущем изучение Си, то предварительно нужно освоить какой-то язык, в котором а) есть указателиь причём в полный рост, без всякой сборки мусора; б) без указателей можно обходиться, пока обучаемый не окажется более-менее готов к их восприятию; и в) начав использовать указателиь обучаемый расширит свои возможностиь то есть в указателях должна быть реальная потребность.
Аноним 08/06/22 Срд 16:47:06 2374926 929
>>2373602
osdev, просто весь читать

Robert love, Linux kernel что-то там
Просто гайд по пониманию что в линуксе происходит и как

И двачую вот этого
>>2374365
На Ютубе круче не найти

Также на udemy
"Developing multithreaded kernel from scratch"

Ну а по не читать, просто берёшь исходники ядра Линукс или его модули/драйвера и разбираешься
Аноним 09/06/22 Чтв 09:55:15 2375507 930
>>2374926
>просто берёшь исходники ядра Линукс или его модули/драйвера и разбираешься
Можно какой нибудь пример.
Аноним 09/06/22 Чтв 11:27:46 2375558 931
>>2374226
>библиотеки часто используемые
Какие?
Аноним 09/06/22 Чтв 14:00:54 2375685 932
>>2358808
Тебе для начала необходимо понять саму концепцию движения. Все этот работает в бесконечном цикле, условно while(1), потом ты должен это выполнение как-либо задерживать, либо через for(что реалтно только для мк), либо как человек через sleep и отлавливать либо нажатие кнопки, либо сделать такой слип, который сам постоянно проверяет нажатие кнопки. Я просто как делал так и обьяснил сейчас.
Аноним 09/06/22 Чтв 14:34:37 2375698 933
>>2375507
https://git.kernel.org/

Там много всякого, ядро Линуса возьми и посмотри, поменяй там шо нить, сделай свою еба фичу например. Гайдик как компилить и запускать в гуглах поищи
Аноним 10/06/22 Птн 03:38:56 2376125 934
>>2375685
Привет. С этим разобрался) Теперь непонятки с тем, как программа должна запоминать предыдущие координаты змейки, чтобы если змея свой хвост укусит, то игра закончилась
Аноним 12/06/22 Вск 13:30:47 2377743 935
>>2376125
Смотри, я делал через миссив структуры координат x,y,prevx,prevy. У меня сначала смещалась голова, а потом я записывал данные в prevx,prevy и изменял x,y относительно смещения гловы. Те примерно так: записываем x,y в prevx,prevy головы и потом по каждой другой части тела повторяем тоже самое, записываем x,y в prevx,prevy и меняем x,y на prevx,prevy предка, те по факту i-1, где i индекс части тела
Аноним 12/06/22 Вск 14:05:17 2377776 936
>>2374365
Спасибо, чекну. Я до этого Кринкина смотрел, ты не знаешь его случайно? Как в сравнении с ним то что ты скинул
Аноним 13/06/22 Пнд 15:50:22 2378702 937
>>2376125
Может всё игровое поле сделать массивом и координаты туловища из него брать,и проверять вхождение головы.
Аноним 13/06/22 Пнд 16:14:51 2378721 938
Аноним 13/06/22 Пнд 16:41:26 2378737 939
>>2378721
>змейка
>"out of memory"
Смишно.

>curses
Фреймворко-макака. Хрр, тьфу.

> / Loop and get user input /
> w a s d
И не стыдно? Стрелочки не осилил?

> for (;;) {
> switch (getch()) {
Судя по докам, getch() останавливает программу ожидая нажатия клавиши. Твой говнокод не работает.
Аноним 14/06/22 Втр 10:10:19 2379301 940
IMG202206140709[...].jpg 113Кб, 1080x571
1080x571
>>2378737
>>2378721
>> for (;;) {
>> switch (getch()) {
>Судя по докам, getch() останавливает программу ожидая нажатия клавиши. Твой говнокод не работает.
?
Аноним 14/06/22 Втр 15:04:34 2379492 941
>>2378737
>не проверять malloc на возврат NULL

>curses
>фреймворк
>ебаться вручную с tty/termios/ioctl и читать клавиатуру/мышь из /dev/input/event (или делать что-то наверняка ещё более ебанутое на винде) вместо использования удобного решения, дарованного нам дедами

>getch блокирующий, говнокод не работает!!!
>nodelay(stdscr, 1)

Но стрелочки он правда не осилил. Ну или ему так просто привычнее.
Аноним 14/06/22 Втр 15:08:02 2379495 942
>>2379492
Это оптимизация памяти и времени, на обработку стрелочек уходит больше, чем на wasd. Ситред 2022 итоги.
Аноним 14/06/22 Втр 15:19:32 2379504 943
>>2379492
>>2379492
>>не проверять malloc на возврат NULL
Вот кстати поясните плес. Допустим, я смотрю ютуб, слушаю музыку, открыл 100 вкладок в хроме и одновременно запускаю свой хеловорд на 1 кб динамической памяти, в котором нет такой проверки. Какова вероятность, что система мне не даст одного килобайта?
Аноним 14/06/22 Втр 16:05:47 2379548 944
>>2379504
Почему ты решил, что твоей программе вообще должны выделить память?
Аноним 14/06/22 Втр 20:48:51 2379831 945
>>2379504
Лол, читай про процессы и виртуальную память.
Аноним 15/06/22 Срд 19:05:22 2380597 946
Как отключить у gcc препроцессор? Я хочу использовать сторонний, а на gcc будет приходить уже голый си.
Аноним 15/06/22 Срд 19:10:09 2380599 947
>>2380597
Хотя ладно, не столь существенно для быстродействия, думаю.
Аноним 15/06/22 Срд 19:31:50 2380620 948
16386556370040.png 1054Кб, 959x890
959x890
>>2379492
>>ебаться вручную с tty/termios/ioctl и читать клавиатуру/мышь из /dev/input/event (или делать что-то наверняка ещё более ебанутое на винде) вместо использования удобного решения, дарованного нам дедами
Ситред 2022 итоги, пикрил.

С графикой ебаться неохота, с управлением неохота. Установи Юнити, нарисуй свою змейку мышкой и не еби мозг. Зачем в данный тред пришел?
Аноним 15/06/22 Срд 23:37:27 2380737 949
>>2380620
это не я пишу всю эту хуйню

(мимо анон который изначально за змейку спрашивал)
Аноним 16/06/22 Чтв 11:17:50 2380911 950
Посоветуйте годных каналов на реддите по си и линух. Чтобы в постах каждый день было интересное, а не "я нихуя не понял, вот мой говнокод".
Аноним 16/06/22 Чтв 13:18:18 2381050 951
Аноним 16/06/22 Чтв 13:35:58 2381063 952
>>2381050
Не толсто, я ньюфаг. Скачал швитую приложуху для новостей и мемов, чтобы следить за мировой культурой, а там одно говно. Я думал это что то хотя бы типа хабра. Впрочем нашел пару интересных каналов, но они не про си.
Аноним 16/06/22 Чтв 13:46:23 2381065 953
>>2381063
Ты решил тут лишний вес сбросить?
Аноним 16/06/22 Чтв 22:22:17 2381430 954
>>2380620
Я-то лично согласен с тобой, сам пытался писать tui-либу типа curses, правда на Go, просто здесь мотивация писавшего код тоже имеет значение. Может он либу саму хочет освоить, а как это работает под капотом ему неинтересно.
Аноним 17/06/22 Птн 11:01:36 2381700 955
>>2381430
Лезть в Си, но игнорировать что под капотом это бессмыслица. Си это не алгоритмический язык, в мысле, если писать аогоримы, не отличается от любого другого языка, и даже хуже их, ибо мешает своими низкоуровневыми подставами. Ведь для тебя подставы, раз не хочешь этим заниматься. Ты пришел не по адресу, иди в тот же шарп, выглядит похоже, но меньше мешающей хуйниб отвлекающей от твоих алгоритмов. Циклы, условия, массивы, списки, функции, вот всё это в шарпе куда логичнее и удобнее Си, у которого лишь кривой сахарок над низкоуровневостью который поломать раз плюнуть, у тебя только жопа будет гореть.
Аноним 17/06/22 Птн 17:10:34 2382039 956
>>2381700
Я не очень понимаю, почему ты приписываешь мне такие странные мотивации и обращаешься ко мне, будто я являюсь автором поста со змейкой, пишу на Си в описываемой тобой манере и в чём-то с тобой не согласен. Внимательнее перечитай сообщения.
Аноним 17/06/22 Птн 17:55:07 2382075 957
>>2382039
Я не понимаю зачем идентифицировать пользователей анонимного форума, который специально сделан анонимным чтобы этой хуетой не страдали, а общались по сути вопроса.

Какая разница, кто там со змейкой пришел или ушел, если конкретно ты, к кому я обращаюсь, такая же макака которой Си не нужен, а нужно лишь бы попроще на готовом. Ты не туда зашел, популярно же объяснил >>2381700 Что неясно?

Это кретинское лицемерие залезть в Си, но отвергать то чем является Си, пытаясь его использовать как алгоритмический скрипт, для которых есть языки специальные, куда лучше чем Си, которые не для этого предназначен, тупо алгоритмы на готовом шлепать. Си это лоулевел, кишки, железо, а не абстрактные скрипты в сферическом вакууме чистой логики, обмазанные черными ящиками фреймворков которые сами делают "заебись", а кодеру похуй.
Аноним 18/06/22 Суб 00:24:49 2382357 958
>>2382075
Чувак, успокойся. Иди проспись, выпей свои таблетки или просто забей на эту дискуссию, потому что те рвение и агрессия, с которыми ты пытаешься приписать мне качества и мотивации, которых у меня нет, и дать мне объяснения, в которых я не нуждаюсь, выглядят уже совсем ненормально.
Аноним 18/06/22 Суб 02:25:56 2382395 959
>>2382357
>>тред языка программирования Си
>"чувак, ты, ты"
>"мне, я"
>ни слова о языке и программировании
Сброду дали доступ к интернету. Итоги.
Аноним 18/06/22 Суб 11:15:03 2382600 960
Анон со змейкой сообщает, что змейкой я тестировал старые bsd curses. Стрелочки там не поддерживаются, да и не нужно.
Аноним 18/06/22 Суб 15:23:23 2382849 961
>>2382395
Дружно сделаем вид, что ты сам написал что-то более осмысленное и по сути треда. Преисполнись уже до конца своей борьбой с абстракциями и начни писать на машинном коде.

>>2382600
Я подозревал, что у кого-то могут быть интенции, отличные от бесполезного пердолинга. Но долбоёб выше сказал, что абстракции и "фреймворки" не нужны, а значит каждый должен написать свою библиотеку для решения стандартной задачи.
Аноним 21/06/22 Втр 05:37:58 2384952 962
Выше и ниже долбоебы.
Аноним 21/06/22 Втр 19:56:06 2385693 963
Как вы работу на Си находите, маги?
Аноним 21/06/22 Втр 20:27:30 2385730 964
>>2385693
Никак, на Си уже давно ничего не разрабатывают, почти везде используют, как прикладной язык.
Аноним 21/06/22 Втр 21:00:31 2385768 965
>>2385730
Да, ладно, не поверю. Всякие МК, ядра, антивирусы, хайлоды разве не на си пишут?
Аноним 21/06/22 Втр 21:11:17 2385779 966
>>2385768
>МК, ядра
Прикладной язык.
>антивирусы
Кресты.
>хайлоды
Кресты, го.
Аноним 21/06/22 Втр 21:54:50 2385816 967
>>2297526 (OP)
Приветствую всех в этом чатике. Надеюсь у вас здесь достаточно лампово. Не против, если здесь немного посижу с вами?
Тред пока не читал, планирую откиснуть в АСМе на какое-то время, потом сюда, забронирую пока здесь местечко.

Аноним 21/06/22 Втр 23:48:52 2385875 968
>>2385768
>>2385779
Только сегодня видел вакансий 4-5 из около 400 только по СПб. Одни СУБД разрабатывают, другие какое-то сетевое ПО, третьи игровой движок. Кидать ссылки я, конечно, не буду.
Аноним 21/06/22 Втр 23:50:53 2385876 969
>>2385875
(не потому что я такой вредный, просто не хочу аффилироваться как-то, да и найти их самим несложно)
Аноним 22/06/22 Срд 12:48:57 2386166 970
На проходящей в эти дни конференции Open-Source Summit 2022 в секции ответов на вопросы Линус Торвальдс упомянул о возможности скорой интеграции в ядро Linux компонентов для разработки драйверов устройств на языке Rust. Не исключается, что патчи с поддержкой Rust будут приняты в ближайшем окне приёма изменений, формирующем состав ядра 5.20, намеченного на конец сентября.
Запрос на включение изменений в ядро ещё не был отправлен Торвальдсу, но набор патчей прошёл дополнительное рецензирование, избавлен от основных замечаний, уже достаточно давно тестируется в ветке linux-next и доведён до состояния, пригодного для создания слоёв абстракции над подсистемами ядра, написания драйверов и модулей.

Мой вопрос: стоит ли теперь вкатываться в embedded c в linux?
Аноним 22/06/22 Срд 13:33:14 2386203 971
>>2386166
Да.
Даже если Раст окажется полной заменой С (что вряд-ли), то на это уйдет много времени. Тем более что зная embedded C, можно будет если что легко пересесть на такой же Раст.

Если жепа паникует, никто не мешает учить и то и то
Аноним 22/06/22 Срд 14:27:49 2386252 972
>>2386166
>интеграции в ядро Linux компонентов для разработки драйверов устройств на языке Rust
Интересно, когда появится первый, не переписанный на раст, драйвер?
Аноним 22/06/22 Срд 16:10:15 2386388 973
Если переменная = sizeof(void ), это мне гарантирует свободную адресную арифметику по ней? Допустим, беру size_t и кручу-верчу его. Потом загоняю обратно в void . Всё будет в порядке? Нету там каких-нибудь скрытых сегментов за пределом 4...8 байт?
Аноним 22/06/22 Срд 16:11:20 2386391 974
sizeof(void [звёздочка]), да или просто char var[8], к примеру;
Аноним 22/06/22 Срд 19:21:33 2386527 975
9785041056902-2[...].jpg 89Кб, 500x500
500x500
>>2297526 (OP)
>Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
>"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Дайте список подобной литературы, также особенно дайте годных мемуаров, документальных драм, бородатых баек и т.п. необязательно про Си
Аноним 22/06/22 Срд 19:39:25 2386533 976
>>2386388
>Допустим, беру size_t и кручу-верчу его.
Если размера хватит, то все будет хорошо.
>Нету там каких-нибудь скрытых сегментов за пределом 4...8 байт?
Диапазон стандартом не установлен.
Аноним 22/06/22 Срд 22:21:27 2386675 977
16492686037270.jpg 53Кб, 597x473
597x473
>>2386388
На всех вменяемых архитектурах - да.
По стандарту - нет.
Аноним 23/06/22 Чтв 04:43:52 2386816 978
image.png 18Кб, 427x307
427x307
Есть массив mask, это просто массив данных карты, который не хочется выносить из структуры. Как-то не то выйдет, если сначала создать объект map со всеми характеристиками, обращаться к ним как map.lenght и одновременно иметь отдельный массив с данными этой карты, инициализированный где-то в main. Что можно сделать?
Аноним 23/06/22 Чтв 08:52:51 2386857 979

lengTH, а можно просто len
Аноним 23/06/22 Чтв 09:17:28 2386866 980
>>2386816
>Что можно сделать?
Что ты хочешь сделать?
Аноним 23/06/22 Чтв 09:44:36 2386884 981
>>2386866
Я хочу чтобы у меня был объект map структуры maps, к которому я бы смог обращаться как map.mask[4][12]. Как так сделать? Создавать в мейне отдельный массив char mask[][] не хочется, потому что он будет отделен от объекта map.
Аноним 23/06/22 Чтв 09:47:38 2386888 982
>>2386884
>Как так сделать?
Так
>map.mask[4][12]
Аноним 23/06/22 Чтв 10:01:13 2386894 983
>>2386888
Я хочу перед запуском игры в настройках менять размер карты и поэтому там придется ставить переменные. Но это запрещено. Как это исправить? Это же не должно ничего ломать, если объект структуры maps создавать после инициализации всех нужных переменных?
Аноним 23/06/22 Чтв 10:02:46 2386895 984
>>2386894
Тебе нужна динамическая память?
Аноним 23/06/22 Чтв 10:07:44 2386896 985
>>2386895
Наверное с её помощью можно сделать, но нет способа попроще? Мне же не нужно менять размер карты в ходе игры. Нужно менять только 1 раз до старта в настройках. Всё равно что define перед запуском поменять.
Аноним 23/06/22 Чтв 10:12:05 2386902 986
>>2386896
>нет способа попроще?
Это самый простой.
>1 раз до старта в настройках
В каких настройках?
>define
Это константы, которые Си-код не может менять.
Аноним 23/06/22 Чтв 10:21:39 2386917 987
>>2386902
>В каких настройках?
Которые я потом сделаю. Сейчас там просто значения переменной.
>Это константы, которые Си-код не может менять.
Я просто привел пример. Я хочу не залазить постоянно в код, чтобы #define lenght 30 поменять на #define lenght 50 , а хочу в красивом меню написать цифру 50.
>Это самый простой.
Почему нельзя в момент создания объекта структуры задать размер массива mask? Память же выделяется, когда ты пишешь struct maps map, а не когда просто объявляешь структуру. Это должен быть самый простой способ
Аноним 23/06/22 Чтв 10:36:28 2386931 988
>>2386917
>создания объекта
>struct maps map
Это не создание объекта.
>Память же выделяется, когда ты пишешь
Она может выделиться когда угодно, главное, чтобы в момент выполнения этого кода она была.
Аноним 23/06/22 Чтв 15:23:00 2387159 989
>>2386917
>Я хочу не залазить постоянно в код, чтобы #define lenght 30 поменять на #define lenght 50 , а хочу в красивом меню написать цифру 50.
#define maxlength 10000, а пользоваться в пределах значения length структуры.
Аноним 23/06/22 Чтв 21:02:15 2387465 990
>>2386816
Это абсурдный код. Структура определяется объявлением, ты не можешь объявить одну структуру, а потом наплодить из неё разных структур лишь присваивая значения полям.

Думаю, ноги этой шизофазии растут из непонимания что такое компиляция, нативный код, долбоебом привыкшим к скриптовой динамикопараше.
dead 23/06/22 Чтв 23:01:49 2387518 991
16534207889820.jpg 6Кб, 241x209
241x209
>>2386894
#define ref(map,x,y) map->ptr[y@map->ysize + x]

Не блогодари.
Аноним 25/06/22 Суб 09:14:08 2388500 992

Объясните, пожалуйста, почему результат функций и проверок в си выдаёт 1 как удачный, а во взаимодействии между программами и в ос 1 - это наоборот, ошибка? Почему это не унифицировали?

>>2381700
http://cmustdie.com/
Аноним 25/06/22 Суб 11:02:11 2388525 993
image 11Кб, 313x173
313x173
Узнали? Согласны?
dead 25/06/22 Суб 11:12:33 2388528 994
>>2388500
>прочитал хуйню нихуя не понял
Функции в Си здорового человека должны возвращать -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;
}
Аноним 25/06/22 Суб 19:21:45 2388939 995
>>2388525
В чем косметический эффект
Аноним 25/06/22 Суб 22:04:51 2389031 996
>>2388939
Посмотри в ассемблер, там не будет копирования.
Аноним 25/06/22 Суб 23:08:02 2389078 997
>>2388500
Что и кто должен унифицировать? Разработчики компиляторов? Или те, кто стандарт выкатывают? Это вопрос конвенции, принятой в конкретном ПО на любом языке, не обязательно на Си. 228 будут возвращать on success, если захотят, и ничего ты им не скажешь.
Аноним 27/06/22 Пнд 10:25:02 2390196 998
Гарантируется ли, что все поля структуры идут сразу друг за другом, не считая выравнивания, т.е. что в неиспользованные промежутки ничего не запишется? Могут ли в эти промежутки записаться другие данные?
Аноним 27/06/22 Пнд 10:26:58 2390200 999
>>2390196
>Гарантируется ли, что все поля структуры идут сразу друг за другом
Да.
Аноним 27/06/22 Пнд 20:42:13 2390690 1000
А как разрешить клопилятору переупорядочить сруктуру для наименьшего размера? Я часто так делаю вручную.
Аноним 27/06/22 Пнд 21:30:09 2390731 1001
>>2390690
Никак и слава богам блять но можно заставить упаковать без паддинга. Хотя кажется тогда поешь говна с выравниваем.
Аноним 29/06/22 Срд 11:28:34 2391984 1002
image.png 152Кб, 1592x261
1592x261
Анон, что этой хуйне нужно?
Ебаная сишка, ебаная сборочная система, ебаная кросс-конпеляция каменного века
мимо растобог
Аноним 29/06/22 Срд 13:04:23 2392053 1003
>>2391984
>растобог
почему растобоги считают себя растобогами, если они на самом деле залупы?
Аноним 29/06/22 Срд 19:42:34 2392351 1004
image.png 351Кб, 1240x671
1240x671
>>2391984
Сам нашёл. Просто добавь --verbose
Покроссконпелировал, нахуй, ебать, ваш сишный мирок убог, пиздец. Конпелятор решил, что эта инклуда - не инклуда, заебок. Как вы с этим живёте, вообще?
Аноним 29/06/22 Срд 20:40:56 2392407 1005
image.png 400Кб, 1262x740
1262x740
Охх, охх, горячо, ебать.
ПРОГРАММИРОВАНИЕ, блять
Аноним 29/06/22 Срд 21:58:19 2392459 1006
IMG202206292252[...].jpg 1802Кб, 3000x4000
3000x4000
>>2391984
>>2392351
>>2392407
Проблема была в битой симлинке, всем спасибо за внимание.
ещё немного поебаться и, глядишь, будет играбельно
Аноним 30/06/22 Чтв 10:29:56 2392715 1007
>>2391984
>мимо растобог
Напиши на расте, в чем проблема?
Аноним 30/06/22 Чтв 12:24:02 2392785 1008
>>2392715
За ради портирования игрули на арм машинку переписать её на расте получится немного оверкилл.
Аноним 01/07/22 Птн 14:09:36 2393570 1009
Как сделать функцию, возвращающую указатель на массив 16 char?
Агргумент функции так: char (*name)[16]
А возвращаемое значение?
Аноним 01/07/22 Птн 20:31:31 2393900 1010
>>2393570
Это ж ёбаная сишка, будет просто char или ✵✵char
а вот на расте такое запросто
Аноним 04/07/22 Пнд 13:26:57 2395910 1011
>>2393570
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);
05/07/22 Втр 11:24:19 2396667 1012
Аноним 05/07/22 Втр 14:03:48 2396860 1013
Аноним 06/07/22 Срд 13:04:07 2397776 1014
>>2396667
Думаю, он о том, что размер char на всех платформах равен 1 байту, и sizeof здесь просто лишний.
Аноним 06/07/22 Срд 13:34:45 2397810 1015
Чем отличается signed char от unsigned char? Они места одинаково в памяти занимают? Есть какие-нибудь подводные камни применения знаковых чаров?
Аноним 06/07/22 Срд 13:57:14 2397836 1016
>>2397776
Ошибаешься, я о макаке залезшей в си не зная что такое байт, и еще код пишет.

>sizeof здесь просто лишний
Лишнего ничего нет, код полностью функционально полноценен, показывает что этому индусу в си не место. Потому что это не проблема кода, а проблема самого человека, дефективного способа мышления.
Аноним 06/07/22 Срд 14:38:27 2397868 1017
>>2397836
>пуууук
Лучше бы тред перекатили.
Аноним 06/07/22 Срд 15:47:51 2397937 1018
>>2397868
Учителю тоже так говоришь когда получаешь двойку?
Аноним 06/07/22 Срд 17:16:16 2398000 1019
>>2396860
>>2397776


>>2397836
Борцун с библиотеками, ты? Узнал тебя по твоим шизоидным высерам. Дефективность твоего мышления мы ранее уже выяснили, уж не тебе точно об этом судить.
Аноним 07/07/22 Чтв 05:56:28 2398366 1020
>>2397810
>Есть какие-нибудь подводные камни применения знаковых чаров?
UB.
Аноним 07/07/22 Чтв 21:06:15 2399014 1021
Как правильно оформить суперминималистичную документацию для хеловорд библиотэки? Надо определить требования по аргументам, использованию возвращаемых значений, доступу к полям структур и т.д. и собрать где-то в одном месте, чтобы было красивенько, в комментариях не вариант. Как делают такое?
Аноним 07/07/22 Чтв 22:49:51 2399106 1022
>>2399014
>Как делают такое?
doxygen
Аноним 08/07/22 Птн 01:51:24 2399209 1023
Аноним 08/07/22 Птн 12:52:02 2399457 1024
Аноним 09/07/22 Суб 04:57:41 2400306 1025
есть видеокурсы нормальные какие-нибудь? собираюсь на торренте купить, а то из книжек с нуля даже хз что выбрать
Аноним 09/07/22 Суб 16:46:49 2400726 1026
>>2400306
K&R же, куда еще больше с нуля. Собственно с нуля другого выбора и нет.
Аноним 09/07/22 Суб 17:09:02 2400760 1027
>>2399457
Я осел, проебал тег. Перекатите уже кто-нибудь.
Аноним 10/07/22 Вск 02:47:12 2401177 1028
>>2400726
блин просто проблема в том что почему-то именно книги я не очень хорошо воспринимаю, поэтому и думаю может видеокурсы есть хорошие
Аноним 10/07/22 Вск 07:58:57 2401196 1029
Аноним 13/07/22 Срд 04:48:59 2404149 1030
Что правильно (или лучше) делать, когда нужно получить несколько значений (в общем случае - разных типов) от функции? Запаковать в структуру на хипе и через указатель возвращать её с последующим высвобождением памяти в вызывающем коде? Звучит по-уебански, но ничего лучше я не придумол
Аноним 13/07/22 Срд 11:27:48 2404230 1031
>>2404149
можешь через аргументы ебануть.
объявил переменные вне функции, сам решил стек или хип, передал их указатели в функцию, функция по этим указателям все заполнила и вернула какой-то код (ошибка, либо все ок).
Аноним 13/07/22 Срд 15:41:45 2404548 1032
image 58Кб, 704x460
704x460
>>2404149
Структуру размером два слова почти все возвращают эффективно (на регистрах). Если больше, то передай указатель на локальный массив или структуру. Если совсем большая, выделяй в хипе.
Аноним 14/07/22 Чтв 05:01:47 2404934 1033
Тут пока смотрел видео на Ютубе, попался видос про паттерны.
И теперь у меня вопрос - а в любимой сишечке есть какие-то гайды про то как стоит/не стоит строить приложение в целом и почему?
Пока нашел только книжку
Patterns in C adam Thornhill
Но она платная.
Аноним 14/07/22 Чтв 08:26:38 2404954 1034
>>2404934
>как стоит/не стоит строить приложение в целом
Пахнет инфоцыганством.
Исторический принцип - чем меньше делает приложение, тем оно лучше.
Аноним 14/07/22 Чтв 17:07:49 2405352 1035
>>2404934
керниган точно что то писал такое. в названии книги слово "практика" или "практический/ое"
Аноним 15/07/22 Птн 20:14:40 2406406 1036
image.png 19Кб, 645x121
645x121
image.png 26Кб, 507x143
507x143
Хелло байтаны, извините за глупый нубский вопрос, кто из вас знаком с gdb и отладкой в нем кода - каким образом случился переход со строки 2204 (1787 к store_get отношения не имеет, там начало зацикленного блока кода)?
Плюс/минус первый раз взял в руки этот отладчик, прижало вкурить как exim парсит несколько специфических DKIM заголовков и чет приуныл
Аноним 15/07/22 Птн 20:58:49 2406428 1037
>>2392459
Что происходит на пикрил? Это эмулятор?
Аноним 15/07/22 Птн 21:20:02 2406440 1038
274011264681779[...].jpg 320Кб, 1080x1350
1080x1350
>>2332364
WSL же только от 10 и выше?
Аноним 15/07/22 Птн 21:45:56 2406471 1039
>>2406406
Выглядит как то, что исходник поменялся а бинарник остался тем-же. Попробуй там перекомпилить и запустить или lldb или что ещё использовать, если не починится
Аноним 15/07/22 Птн 21:50:41 2406475 1040
image.png 251Кб, 347x364
347x364
>>2406406
На всякий случай пересобрал без оптимизаций, но все равно такой же прыжок там после присвоений/обнулений еще куча if блоков, должны же они были проверится?((
Аноним 15/07/22 Птн 21:55:51 2406482 1041
>>2406471
Возможно это все проделки RHEL-овского rpmbuild..
Покурю немного его SPEC файл и попробую ручную пересборку / LLVM-ный дебагер, спасибо
Аноним 16/07/22 Суб 15:21:19 2406866 1042
++
Аноним 16/07/22 Суб 16:02:58 2406883 1043
>>2406406
>>2406475
>>2406482
В общем отказался от идеи собрать из src.rpm что безусловно было бы удобно - бахнул rpmbuild и вот тебе на выходе и бинарный пакетик, и debuginfo, и всем этим можно жонглировать пакетным менеджером в пользу старого доброго git-а + make + install. Пришлось конечно поприседать с ручной установкой зависимостей, путями/конфигами, но зато удалось добиться нормального поведения в отладчике - на этом все, спасибо помогавшему анону
Аноним 17/07/22 Вск 00:28:04 2407331 1044
>>2386166
Зачем эта параша нужна, когда у тебя системная параша будет вся в unsafe'ах, а пруфать ты нихуя не будешь, история с раст белтом просто охуенно показательна.
Аноним 17/07/22 Вск 13:27:27 2407677 1045
image.png 202Кб, 512x512
512x512
>>2407331
>история с раст белтом
а что за история?
Аноним 17/07/22 Вск 21:15:59 2408226 1046
>>2407677
Ну челики из этого проекта по первой находили баги во всяких мьютексах из стдлиба.
Аноним 17/07/22 Вск 23:55:32 2408397 1047
Заранее прошу прощения, если несу хуйню и путаюсь в терминологии, хотя вроде не должен. Приму конструктивную критику и пойду курить дальше.

Пишу свой двухколёсный дебаггер. Вот есть процесс, ему соответствует программа и слинкованные с ней в рантайме библиотеки (libc, ld и прочее); сегменты программы загружены в выделенную процессу память, библиотеки отображены и я всю эту красоту могу наблюдать в /proc/{pid}/maps.
Всё, что мне нужно сделать, это найти запись в таблице символов файла программы/библиотеки по адресу вызванной функции. Я парсю инфу о сегментах из /proc/{pid}/maps, смотрю, какой сегмент соответствует адресу функции и для соответствующего имени файла с помощью libelf подгружаю нужные мне заголовки.
Дальше это работает так:
https://pastebin.com/0rLUpUWF
(код сырой; на данном этапе нужно было, чтобы это просто работало)
data содержит маппинг файла программы/библиотеки, addr = адрес_функции - адрес_сегмента.
Для самого executable код вроде работает, но не для слинкованных с ним либ. Что я упускаю?
Аноним 17/07/22 Вск 23:57:32 2408399 1048
16272412282490.png 2004Кб, 1000x1777
1000x1777
Мой gcc в составе minGW под винду создает a.exe из любого моего хеллоуворлда. Как сделать чтобы имя эксешника было идентично имени .с файла?
Аноним 18/07/22 Пнд 00:05:27 2408412 1049
Аноним 19/07/22 Втр 16:38:52 2409964 1050
>>2408412
сделал как ты сказал, теперь у меня вместо a.exe файл с названием name
а мне надо чтобы была huita
Аноним 19/07/22 Втр 16:49:41 2409978 1051
Аноним 19/07/22 Втр 17:40:22 2410023 1052
>>2409964
В полноценных ОС это решается makе.

CC=gcc
CFLAGS=-O -Wall

huita: huita.c
Аноним 19/07/22 Втр 23:56:27 2410354 1053
>>2408399
Короче правой кнопкой щелкни получившийся файл, нажми в выпадающем меню кнопку Переименовать. Способ удобен тем что ты можешь назвать файл как ты захочешь и когда захочешь, этих даунов не слушай, они промыты пропагандой командной строки, будущее за графическим интерфейсом.
Аноним 20/07/22 Срд 23:36:15 2411273 1054
>>2297526 (OP)
Какой самый свежий и понятный учебник на русском?
Аноним 21/07/22 Чтв 16:21:56 2411885 1055
>>2411273
BeginEnd. Это канал на ютабе, там Антон всё рассказывает в плейлисте по C.
Аноним 21/07/22 Чтв 18:45:09 2412058 1056
есть ли по си каналы на трубе типа tsoding? Он просто пиздец в эзотерику ударился какую-то.
Аноним 22/07/22 Птн 18:59:40 2413265 1057
Где перекат?
Аноним 22/07/22 Птн 19:49:59 2413350 1058
Аноним 24/07/22 Вск 14:31:01 2414745 1059
>>2412058
А мне нравятся его теперешние стримы, особенно по templeOS, да и сам он чел крутой. Правда в хохлошизу ударился поле 24, но это ничего страшного.
Аноним 24/07/22 Вск 17:12:58 2414972 1060
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;
}

Делал калькулятор, он считает какую-то хуйню, что я там не так написал?
Аноним 24/07/22 Вск 17:26:14 2414995 1061
Аноним 25/07/22 Пнд 14:51:36 2415869 1062
sharedimage.png 177Кб, 750x1334
750x1334
>>2297526 (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..."
Аноним 25/07/22 Пнд 15:07:56 2415891 1063
>>2297526 (OP)
>fatal error: 'stdio.h' file not found
Из-за чего это? Могло или это быть из-за отсутствия gcc?
Вроде я уже устанавливал Cygwin
Аноним 25/07/22 Пнд 20:28:52 2416303 1064
101101110.jpeg 466Кб, 1459x974
1459x974
Аноним 26/07/22 Втр 08:42:21 2416613 1065
>>2416303
Конпелятор ошибок уже не выдает?
Аноним 26/07/22 Втр 16:03:40 2416947 1066
>>2415869
Возьмись лучше за перевод рецептов.
Аноним 27/07/22 Срд 13:52:16 2417684 1067
Привет, Анон.
Мне очень нравится "низкоуровневое" программирование, нравится С, нравится изучать операционки и всё что связано с сетью.

Но я не могу для себя понять, какова область применения у языка в целом и какие существуют вакансии в реальном мире в этой области? Может вы что-то подскажите, отталкиваясь от интересов, которые указал выше, куда мне стоит двигаться и как искать что-то подобное в плане работы? Заранее благодарю.
Аноним 27/07/22 Срд 16:42:14 2417813 1068
>>2417684
>какова область применения у языка в целом и какие существуют вакансии в реальном мире в этой области
Никаких, ты умрешь с голода, если будель писать на Си.
>>2417684
>куда мне стоит двигаться и как искать что-то подобное в плане работы?
Пробовать вкатиться в ОС проекты, а после пилить деньги с пожертвований крупных корпораций.
Аноним 27/07/22 Срд 16:45:05 2417815 1069
>>2416613
А по сути будет что-то? Или сам не знаешь?
Аноним 27/07/22 Срд 23:30:07 2418108 1070
>>2417815
Блин, прошу прощения, промахнулся. Это вот этому джентльмену предназначалось:
>>2416947
Аноним 28/07/22 Чтв 00:17:41 2418128 1071
Хелпаните по сокетам.
Есть несколько адресов и один порт. На все это дело шлется udp инфа с сервера, и есть клиент который читает данные с этих сокетов каждый в отдельном треде
Че я делаю: создаю для каждого треда отдельный сокет, ставлю setsockopt опцию реюза для порта, бинжу адрес INADDR_ANY и моим портом, потом ставлю setsockopt опцию с адресом уже конкретным
Собсно я че то не так делаю или в логике какая то проблема? Потому что у меня каждый тред читает все адреса вместо одного конкретного
Аноним 28/07/22 Чтв 08:14:00 2418211 1072
Анон, вкатился в эмбедед, пытаюсь ковырять байты, вкатываюсь в RTOS потихоньку. Но щас понимаю что вообще почти ничего не знаю о компиляции. Даже простой мейкфайл наверное не смогу сделать, а тут еще и диплом по графам потока управления дали. Где лучше почитать инфу про все это чтоб вкатиться? Есть книги какие или источники мб?
Аноним 28/07/22 Чтв 09:08:44 2418225 1073
>>2418128
>в отдельном треде
Пиши на питоне.
>в логике какая то проблема?
В знаниях.
Аноним 28/07/22 Чтв 10:18:15 2418250 1074
>>2418225
Ну э ты подсказать не можешь?
Аноним 28/07/22 Чтв 12:16:48 2418352 1075
>>2418128
Ничего не понял. Ты клиентский сокет биндишь?
Аноним 28/07/22 Чтв 12:55:22 2418376 1076
>>2418352
Да, с сервер посылает udp на разные адреса с одним и тем же портом
Клиент все это читает и проблема только в нем
Аноним 30/07/22 Суб 15:22:11 2420015 1077
Аноним 31/07/22 Вск 16:01:34 2420827 1078
>>2417684
Драйвера, ОС, ядро.
Вроде еще контролёры бывают, но это не точно
Аноним 01/08/22 Пнд 17:14:46 2421838 1079
Объясните пожалуйста.
Вот есть сортировка слиянием, на этапе когда нужно найти середину массива имеется формула m=l+(r-l)/2.
Но не пойму, почему не просто m=(r-l)/2? Зачем +l еще?
Аноним 01/08/22 Пнд 19:29:02 2421969 1080
>>2421838
затем, что l может быть не равным 0. Какая середина для l = 6, r = 10? посмотри по какой из твоих формул она корректно находится
Аноним 01/08/22 Пнд 19:39:10 2421979 1081
такой вопрос. когда начался курс ооп на плюсах попался не самый требовательный препод (на похуй вела в принципе, но чето рассказывала). но вопрос сишный
короче запомнил от неё, что для размеров массива лучше всегда использовать size_t, звучит разумно.
точно формулировку не помню, но как-то все это перешло в то, что я почти год писал циклы for используя size_t(for (size_t i = 0...blabla)
только сегодня услышал, что не рекомендуется использовать беззнаковый тип в условии цикла фор (при size = 10: size_t i =0; i < size - 11... будет бесконечный цикл из-за переполнения) , но источник тоже так себе(видос на ютубе - отрывок со стрима)

так вот, всё таки че использовать в цикле, тупо int? выгдядит как то хз
для размера массива вроде size_t нигде плохо не влияет
Аноним 01/08/22 Пнд 21:42:20 2422100 1082
>>2415891
добавлю, что пытался запусить код в
codeblocks-20.03
Аноним 01/08/22 Пнд 22:05:08 2422138 1083
>>2421969
А, мысль не туда заворачивалась, теперь увидел,спасибо.
Аноним 02/08/22 Втр 07:00:48 2422365 1084
>>2421979
for (size_t i = 100; i != SIZE_MAX; i--)
Аноним 02/08/22 Втр 08:11:38 2422389 1085
если переменная в функции не меняется, внутри какой нибудь принт или просто обработка значений, то нужно ли явно в сигнатуре прописывать, что переменная const? является ли это хорошим тоном или же загромождает код
Аноним 02/08/22 Втр 08:14:22 2422391 1086
>>2422365
и что это значит? вопрос про любой стандартный обход с нуля до значения какой то переменной, а не вырожденный случай. действительно ли плохо i делать беззнаковым или это сильно редко приводит к ошибкам
Аноним 02/08/22 Втр 12:33:25 2422543 1087
>>2422389
Это не хороший тон. А очень хорошая практика, и её нужно использовать всегда. Во-первых, это обезопасит твой код от случайных и нарочных выстрелов в ногу. Во-вторых, покажет пользователю функции что она никак не изменит переменную, а следовательно безопасна на чтение, ну если у тебя в нескольких потоках идет работа. Ну и в третьих расширит применение твоей функции, ведь её можно будет вызывать как для волатильных переменных так и для константных
Ну и один спецификатор в 5 букв. Как это загромождать что то может
Аноним 02/08/22 Втр 12:58:37 2422568 1088
Учу C, запускаю примеры программ в песочнице Sololearn и как то всрато оно работает и запускается там. Почему? https://www.onlinegdb.com/online_c_compiler - перешел сюда.
Аноним 02/08/22 Втр 13:08:36 2422577 1089
Посоветуйте годные видеоуроки по С. Можно и на англе.
Аноним 02/08/22 Втр 14:33:20 2422638 1090
>>2422577
Читать быстрее же. Но я когда только вкатывался смотрел видосы narodstream т.к. работал тогда за рулем много и не было возможности читать.
Аноним 02/08/22 Втр 20:28:11 2422904 1091
>>2422638
Я наоборот из тех людей, у которых КПД при чтении книг ниже, чем при разборе лекций и видосов.
Аноним 03/08/22 Срд 10:11:56 2423205 1092
>>2422904
Просто чтение книги должно сопровождаться какими-то действиями по теме. Если просто читать то канеш ничего особо не усвоишь.
Аноним 03/08/22 Срд 16:33:17 2423628 1093
>>2422389
Если оно не меняется, это константа.
const можешь навесить, если внутренний голос подсказывает тебе, что какой-нибудь долбоеб, не разрбравшись в 100 строках макарон с goto, рано или поздно присвоет твоему pi новое значение. В остальных случаях это сомнительная практика.
Аноним 03/08/22 Срд 17:35:28 2423734 1094
>>2422391
У тя массив или заведомо маленький (< 30000) или нет.
В первом случае можешь брать инт. Во втором что-то большее, что подходит: for (long l = bigsize; --l >= 0; )
Аноним 03/08/22 Срд 19:14:32 2423823 1095
есть у кого вменяемая реализация map на сях?
Аноним 03/08/22 Срд 21:18:44 2424019 1096
>>2422389
>является ли это хорошим тоном
Только для указателей.
>загромождает код
Для всего, кроме указателей.
Аноним 06/08/22 Суб 00:25:15 2425931 1097
>>2417684
Одна из областей - стык железа и софта.
Например, как уже сказали, драйвера. Сегодня появляется дохрена новых китайских процессоров, дрова к которым пишут китайцы очень плохо, и для использования в реальных проектах их придется переделывать.
Другая облать - программирование микроконтроллеров: IoT, промышленные изделия. Бортовые: автомобильные и не-авто (и тут запросто прилипнешь к воякам, а платят они не оч).
Промка: как умная с современными протоколами по типу iec61850, так и тупая с одним rtu-modbus, например мегаваттные приводы.
Рядом с приводами - контроллеры преобразователей энергии, например контроллеры заряда-разряда батарей мощностью опять же в районе мегаватта.
Аноним 06/08/22 Суб 00:30:34 2425934 1098
>>2415891
>Cygwin
Для начала собери в командной строке и получи a.exe
Аноним 06/08/22 Суб 00:47:52 2425949 1099
>>2421979
Так-то есть ещё и знаковый, ssize_t, но
>i < size - 11
11 - уже волшебное значение, которых лучше вообще не пользовать в коде.

int - самый быстрый тип. Для небольших массивов - самое то.
Или байтоебствуй, используй типы явного размера из <stdint.h> типа int64_t, чтобы не стрельнуть себе в ногу как >>2423734
забыв что на x86_64 sizeof(long)==sizeof(int) и указатель в них не лезет
Аноним 06/08/22 Суб 12:47:17 2426171 1100
>>2425949
>int - самый быстрый тип.
Нет.
>на x86_64 sizeof(long)==sizeof(int) и указатель в них не лезет
Нет.
Аноним 06/08/22 Суб 20:46:05 2426523 1101
>>2425949
>забыв что на x86_64 sizeof(long)==sizeof(int) и указатель в них не лезет
Я линуксоид, у нас сделано правильно. На вин строго посрать, там все и так работает через ж, даже если обмазать int64_t.
Аноним 10/08/22 Срд 19:54:05 2429930 1102
Не смог нагуглить решение проблемы:
Есть некая функция abcdef. Она может быть в зависимости от флагов компиляции как функцией из библиотеки, так и просто макросом, который ничего не вызывает. Собственно, можно как-то определить, чем является abcdef во время компиляции, не имея доступ к флагам компилятора? Зачем это мне - захотел применить указатель на функцию abcdef в моей структуре (когда она определена как функция из библиотеки). Тип в структуре - указатель на void, конечно же.
Аноним 10/08/22 Срд 20:54:43 2430014 1103
Аноним 11/08/22 Чтв 19:27:41 2430850 1104
Аноны, я решил не вкатываться в С, простите меня пожалуйста.
К сожалению так и не смог подыскать для себя подходящий язык. Раст пробовал, карбон можно и не пробовать в 2к22.

Хорошие новости в том, что достаточно много интересных областей, в которых интересно бы покопаться. Поживём увидим. Буду заглядывать к вам иногда, чтобы поглядеть на вырвиглазный синтаксис, но вы всё равно молодцы, важное дело делаете, нет ничего лучше старого, доброго С.
Аноним 12/08/22 Птн 11:02:34 2431356 1105
wchar_t s[] = L"煌";
printf("%ls", s);

Почему это не работает? Нужен обязательно wprintf
И что нужно использовать wchar или uchar?
Аноним 12/08/22 Птн 11:25:23 2431388 1106
>>2431356
>И что нужно использовать wchar или uchar?
char.
Аноним 12/08/22 Птн 11:27:15 2431389 1107
>>2431388
Символы как считать?
Аноним 12/08/22 Птн 12:22:02 2431429 1108
>>2431389
Зависит от кодировки.
Аноним 12/08/22 Птн 13:49:01 2431487 1109
>>2431429
Причем тут кодировка
Аноним 12/08/22 Птн 19:01:17 2431944 1110
Аноним 12/08/22 Птн 19:13:09 2431964 1111
Аноним 12/08/22 Птн 19:32:48 2431979 1112
>>2431964
Алгоритмы подсчета количества символов зависят от типа кодировки, для переменных свои алгоритмы, а для постоянных просто делением размера массива на размер символа.

Про printf %ls, насколько я помню он пребразует широкую в стандартную кодировку и может потерять смысл.
Аноним 12/08/22 Птн 20:50:25 2432058 1113
>>2431979
Круто и где эти алгоритмы?
В libc такого нет
Аноним 13/08/22 Суб 00:12:48 2432233 1114
>>2432058
>В libc такого нет
Почему они должны там быть?
Аноним 14/08/22 Вск 10:43:27 2433284 1115
>>2406428
Это freedink, пытаюсь портировать на myioo mini
Аноним 16/08/22 Втр 11:29:30 2435620 1116
>>2297526 (OP)
Анончики алярм, ахтунг, хата горит. Нужны ваши советы. Работаю перформанс куа макакой.

Вчера написала хр-юша с вакансией embedded разработка на С нахой.

На похуях залетел на собес, директором попиздел. Нужно писать софт для сетевого оборудования. Стек крайне примитивен Linux+C+Git+твой любимый редактор. Позадавал вопросы по теории сетей, по линуху и по Си.

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


Вот вопросы:
1. Что нужно знать для этой работы? Я бля на си пишу скрипты в Loadrunner и то, это примитивные скрипты.

2. Насколько сложная работа?

3. Смогу ли я совмещать две работы? Если и текущая и то что мне предлагают являются удаленками

Анончики помогите плиз!

Я даже тред в /b сделал но там никто не пишет. Решил сюда залететь
Аноним 16/08/22 Втр 20:35:02 2436363 1117
>>2335708
Что за прате? Английский?
Аноним 16/08/22 Втр 21:02:42 2436404 1118
181 926 829 - A[...].png 37Кб, 966x201
966x201
181 926 829 - A[...].png 56Кб, 728x395
728x395
1337627892258.jpg 27Кб, 600x600
600x600
Анон, у меня mingw выдает 16бит эксешники. Как это фиксить? Как ее настроить? Как менять эти флаги на пикрил 1?
Аноним 16/08/22 Втр 21:06:43 2436407 1119
>>2436404
Анон, все норм, я не тот эксешник запускал. Но вопрос про флаги остается.
Аноним 17/08/22 Срд 00:33:58 2436613 1120
Почему все переменные нужно объявлять. Почему они не могут сами создаваться когда вызываются?
Аноним 17/08/22 Срд 03:48:18 2436655 1121
>>2436613
Потому что язык плохо спроектирован.
Аноним 17/08/22 Срд 10:11:46 2436755 1122
>>2436613
Чтобы во время компиляции проверить, что ты нигде не проебался и правильные типы используешь
прикладное vs 49системное программирование Аноним 17/08/22 Срд 15:38:32 2437154 1123
Привет! У меня кризис.

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

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

Но я даже не понимаю как подлезть к системному программированию, мне посоветовали изучить ядро (естественно linux) а потом читать документацию к железу и например писать свои драйвера - у меня интерес к сети и к графике. Я прочитал Тоненбауна и извлек такую вещь как системные вызовы. Pнаю о lfs(linux from scratch) - очень много всего расписано, но к понимаю ядра не приблизился. Еще начал изучать си,как понимаю этот язык более чем полезен.

Как мне дальше быть? Как перейти на следующий уровень? Все слишком сложно и смотрю на весь материал который нахожу(в том числе и на lfs), как баран на новые ворота.
Аноним 17/08/22 Срд 19:40:05 2437524 1124
>>2437154
5/10 продолжай обучать нейронку на нормальных текстах, а не на шизах из /rf.
Аноним 19/08/22 Птн 14:24:27 2439469 1125
Как с этим жить? Какие есть best practice?

In file included from list.c:7:
./kek2.h:1:5: error: redefinition of 'zaloopa'
int zaloopa() {
^
./kek1.h:1:5: note: previous definition is here
int zaloopa() {
^
1 error generated.
Аноним 19/08/22 Птн 15:07:54 2439534 1126
>>2439469
У тебя определение в заголовке и нет протекта от мульти инклуда.
Аноним 19/08/22 Птн 16:33:52 2439668 1127
>>2439534

Ясно понятно, начинаю вспоминать лучшие годы в университете
Аноним 20/08/22 Суб 12:10:17 2440437 1128
>>2431356
wchar_t и wstring для винды, и char и string для линукса.
В линуксе string поддерживает юникод, а в винде эта ебучая однобайтовая кодировка. Алсо, есть галочка в региональных стандартах винды, использовать юникод для поддержки языков во всем мире(UTF-8), если ее включить то можно будет в принципе и string с char использовать в винде. Только вот потом не удивляйся что у тебя во многих приложениях будет хуйня вместо русских букв.
Аноним 23/08/22 Втр 09:28:25 2443418 1129
1661236104901.png 85Кб, 1080x616
1080x616
Копаюсь в реализациях протоколов TCP/IP, и тут есть такой код, как на пике. Зачем так написано, я нюфак и у меня глаза ломаются от такой записи?
Мб я вообще не так понимаю эту запись?
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов