C язык программирования #777 clang /clang/ 3430902 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

- Stephen Prata "C Primer Plus, 6th Edition" (2014) (в русском переводе: Стивен Прата "Язык программирования C. Лекции и упражнения (6-е издание)" ): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Идеально для начинающих.
- Brian Kernighan, Dennis Ritchie "The C Programming Language".
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль, с диффами)
- Последний черновик ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2583.pdf (октябрь)

Прошлый тред: https://2ch.hk/pr/res/3386488.html (М)
2 3431159
Попалось такое:

typedef struct foo {
int bar;
int baz;
} foo_t, ⚹pfoo_t;

Если надо обозначить указатель на структуру, то нахуя перед этим писать foo_t?
3 3431175
>>1159
Ну типо, тут две дефениции:
foo_t обозначает псевдоним для struct foo
А pfoo_t означает псевдоним для struct foo⚹ т.е. тип указатель на эту структуру.
Зачем нужен указатель на структуру? Хз, наверное чтобы компилятор не ругался, и чтобы лишний раз преобразования типов не делать. Ясно что все указатели хранят адрес, т.е. один и тот же тип, поэтому никаких проблем нет чтобы присвоить к обычному void ⚹ наш struct foo⚹. Однако после такого присвоения мы уже не можем корректно обратиться к значению по адресу, потому что непонятно что за тип там лежит. Нужно этот воид привести к структфуу и тогда обратится. Может автор кода решил избежать этих преобразований и заранее слелал тип "указатель на структуру". Яхз
4 3431298
>>1175

>Ну типо, тут две дефениции



Точняк. Я привык, что

struct foo {
int bar;
int baz;
} fooi;

где fooi - обычный экземпляр. А тут через typedef сразу несколько алиасов повесили. Можно там еще через запятую добавить указатель на указатель ⚹⚹ppfoo_t и т.д. Пиздец, ну и синтаксис.
5 3431334
>>1298
Но это разные вещи. Тут ты:
struct foo {
int bar;
int baz;
} fooi;
Создаешь тип "struct foo" и обьявляешь, получается что, глобальную переменную fooi.

А с директивой typedef ты переменных не создаёшь, ты создаёшь синонимы для типов. Т.е.
typedef struct foo {
int bar;
int baz;
} fooi;
после этого у тебя нет доступа к fooi, потому что fooi - это тип. Нужно ещё создать переменную типа fooi.
Например:
fooi a = {1,0};

Вопрос только, нахуя ему тип ⚹pfoo_t? он ведь может просто ⚹foo_t написать.
sample01127d606c6e59b0e20a3c4a9059ddc9.jpg77 Кб, 850x989
6 3432737
Я пришёл сюда с двумя тезисами:

1. Только на сишке и плюсах можно писать софт, убивающий людей. Никакая другая "платформа", "экосистема" - не позволяет этого делать.
2. Отсутствие безопасности памяти - несомненная фича, и любой язык устранивший это является проблемным в самой своей глубине.
7 3432749
>>2737

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


Товарищ-си, здравствуйте! Вы имеете в виду компьютерное зрение на дронах? Всякие numpy безусловно содержат в себе под капот дизассемблированные плюсы для вычислений перемножения матриц и другой математики, но это всё ещё Питон.
Или Вы про то, что уча "низкроуровневое" программирование хочется вздёрнуться и убить себя? Тогда я с Вами согласен, у меня депрессия и апатия.

> 2. Отсутствие безопасности памяти - несомненная фича, и любой язык устранивший это является проблемным в самой своей глубине.


Сейчас очень сложно обычному программисту набедакурить с памятью, ибо ОСь сразу тебе стукнет по носу, так сказать.
f50qke5yeqwb1.jpg48 Кб, 774x1014
8 3432769
>>2749

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


Я знал, что кто-то прибежит рассказывать про машинное зрение, но:

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

2. Можно взять OpenCV, который в целом почти полностью плюсы. И на его основе общаться с полётником.

3. Большая часть существующего софта, убивающего людей, про машинное зрение даже не слышало. А это - наши любимые микрушечки в MQ-9 Reaper, системах ПВО вроде S-300, ПТУРах, самонаводящихся патронах в .50 BMG которые пилит американское DoD, системы наведения в бомбах, микроконтроллеры для теплочувствительных матриц, fly by wire в самолётах, и наконец, обыкновенный софт для полётных контроллеров. Бжж-бжж, motherfucker. Я даже не буду говорить про возможность бабахнуть чего-нибудь тремя или пятью вольтами. Ну, ладно, здесь можно и интерфейс накалякать на реакте, и css-префиксов понакидать на кнопочку, таких, чтобы я её хотел сначала лизнуть, а потом нажать. А потом ещё раз лизнуть.

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


Я надеюсь, ты не про сегфолты.
9 3432770
>>2769
>>2769
В том числе, а ты про что? Преобразование типов и указателей, работа с кучей?
10 3432775
>>2770
Типы, указатели, контейнера. Преобразования из структур в байты и обратно. Если мы не можем уследить за данными, и это приводит к багам, может и пишем-то мы не слишком сознательно?

Исходя из моих знаний о рассеянности человеческого сознания, пока растфаги разберутся, как написать что-либо, они забудут, что они вообще хотят написать - и сделают ошибку в самой логике работы программы.
11 3432805
>>2737

>софт, убивающий людей


Ножами и вилками тоже убивают.
12 3432881
>>2749

> Сложно


Нет. Большинство каличей не итт оп пикрл как бы намекает , на в ей борде да и вообще везде сдабо понимают что такое память и указатели. Да ось не даст тебе убить себя, но логику программы это никак не защитит.
13 3432882
>>2881
Про пик мимо. Думал это плюсотред, там пик рилейтед.
14 3432958
>>2769

>сегфолты


Какое же дно пиздец, сегфолт - это благо и хорошо.
image.png343 Кб, 471x477
15 3433388
>>2958

>сегфолт - это благо хорошо


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

-Сычёв, какого хуя у тебя код рандомно сегфолится, хули ты там настрочил, ищи ошибку мудень
-Кабан кабаныч, вы не понимаете, сегфол - это хорошо а не плохо! Это означает можно экстренно завершить программу, а не ждать 30 минут, пока мой говнокод завершится.
16 3433533
>>3388
А я поддержу товарища-Си выше и скажу, что мне тоже нравятся сегфолты, они значат, что ты набедакурил что-то в памяти и куда-то не туда залез, а значит область кода сужается и легче найти ошибку с указателями.
17 3433619
>>3533
Но сегфол это не ошибка компилятора С. Это ошибка операционной системы. Ты и на асме можешь наговнокодить и получить сегфол. Это получается плюс в репку разработчикам ОС и mmu что не допустили багов в виртуальной памяти.

И искать причину сегфола не так то и просто, особенно на параллельных программах. Надо изначально знать что пишешь.
18 3433628
>>3619
Эх, до параллелизма я так и не дорос, слишком быдло, товарищ-Си, признаю Ваше превосходство.
19 3433826
Эх, сейчас мне пизда, скоро отчислят за неуспеваемость и вместо Си, буду чтить товарища главу призывной комиссии, не будьте как я, товарищи-Си, учитесь хорошо.
20 3433837
>>3388
Малолетний долбоёб, если сегфолта нет, то это ещё не означает, что всё заебись, а если случился эксепшон, то это очень хорошая новость.
21 3434109
>>3826
Да кто тебя из твоей шараги отчислит, фантазер. На первом курсе что ли?

>>3837

>а если случился эксепшон


Долбоеб это ты. Исключение обраьатывает ОС. Если твоя долбоебская ОС не способна защитить тебя от нарушения целостности памяти - значит ставь нормальную ОС, не знаю на что за хуйне ты сидишь. При чём тут С вообще? Это ОС и нужно отслеживать сегфоллы, а С тут не причем. При утечки памяти, например, твоя ОС начнёт вырубать все процессы подряд. Это тоже "Очень хорошо и продкмано" по твоему? Нет, это называется "я долбоеб написал кал, а операционная система от этого кала рыгает". Хорошие ошибки - это только ошибки и предупреждения компилятора, потому что они позволяют устранить неполадку до запуска, ещё и с указанием проблемного места.
22 3434127
>>4109
Тупорылое дерьмо, нахуй ты вообще пишешь, если не понимаешь о чём вообще говоришь?
23 3434153
>>4127
Ну расскажи что ты думаешь, раз считаешь что прав.
24 3435114
Какие сишные проекты считаются самыми лучшими в плане качества и красоты кода?
25 3435134
>>5114
Kaspersky OS.
27 3435245
>>5159

>скидывает хакнутую-перехакнутую дольбильню

28 3435255
>>5245
Скидывай свои варианты, мы только рады будем.
chrome2022.09.2022.17.46-mFe5gz.png409 Кб, 669x603
29 3435339
И чё делать-то на C?

Я точно не хочу покупать и паять ардуинки? У меня есть если что, но я её один раз запрогал и забил. Разбираться что не так двадцать часов а потом узнать что просто диод пробило или кондёр, не, я это уже проходил на работе сотни раз, меня тошнит от хардварных проблем, в большинстве случаев они вызываны хуёвой закупкой компонентов или если в нашем чипе RTL нахуевертили неудачно.

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

Ну научусь я сортировать эффективно массивы, обрезать строки, формировать, структуры, эмбедить asm вставки, жонглировать поинтерами и теребить алоки малоки. Делать-то что? На чём набивать руку чтобы стать неебаться эмбедед? Только интститут и вкат через практику?
30 3435344
>>5339
raylib
31 3435346
>>5339
А где в России топ специальности для низкого уровня? Я думаю, что только топовое ИБ направление, где на парах анализируют исполняемые файлы, да и то только курс, а может только семестр.
32 3435379
>>5339
Эмбеддед хрен знает, но для фана сижу пишу на raylib и Dear IMGUI всякие поделки для себя, очень интересно.
33 3435647
>>5114

>красоты кода


Нахуй иди сразу.
>>5339

>стать неебаться эмбедед


В ембедед сишка не является тут предметной областью. Если нужны проектики для практики, напиши дисковую базу.
>>5346

>в России


Ебало?
34 3435740
Каво блядь???! Вот тебе и гсс под шиндус. На фряхе такого нет.
35 3435788
>>5740
Ты используешь модификатор ll для 32битного значения...
36 3435791
>>5740
Какая версия у gcc?
37 3435792
>>5791
Я в душе не ебу, что у тебя там за версия компилятора, но на 14.2 всё без говна.
image12 Кб, 951x662
38 3435802
>>5740
У меня предположение только в том, что старый printf обрабатывал переменные по адресу так, что он видел модификатор для long long и обрабатывал сразу переменную a, b. Скинул загруженные в стэк переменные для примера.
39 3435843
>>5802
А вот теперь хз, даже мой самопальный _print_hex_ нормально обрабатывает данные https://pastebin.com/upmduS3c.

Во-первых, какая разрядность системы? Во-вторых, какая версия компилятора? В-третьих, надо копать в сторону stdarg, походу переменные неправильно обрабатываются для функций с переменным количеством параметров. В-четвёртых, введи другие значения для a и b в своей программе.
40 3435844
>>5843 mailto: >>5740
image40 Кб, 1618x539
41 3435855
>>5740
Как-то так, а дальше уже только в ассемблере копаться и смотреть какое соглашение о вызове функции стоит, stdcall или cdecl. В общем надо думать, а думать я больше не могу, прости, товарищ Си, я пошёл думать о том, что моя вайфу меня никогда не полюбит.
IMG20250420200325847.jpg61 Кб, 931x382
42 3435859
image51 Кб, 1849x527
43 3435860
>>5855
Господи, я насрал себе в штаны, вот поэтому моя вайфу меня и не любит, простите меня, товарищи Си, теперь точно ушёл грустить и плакать. Вот исправленная картинка.
>>5859
Прости, товарищ Си, я ушёл, давай через пару часов?
44 3435862
>>5859
Короче, я пишу этот пост и точно ухожу, прошу тебя, замени 11 строчку на эту printf("%lx x %lx = %llx\n", a, b, c);

И скажи стал ли вывод лучше.

Я ушёл плакать по своей вайфу. Всё о чём я думал и свои предположения я уже написал, прости, если не помог, я честно пытался, прости... >>5860
45 3435918
>>5862
Да, вывод стал нормальным.
46 3436004
>>5918
Что тебе ещё надо? Я больше не способен тебе помочь...
47 3436010
>>6004
Учись! А то отчислят! Меня вон уже отчислили... С 6 курса, с дипломом магистра.
48 3436021
>>6010
У меня сложная тема диплома, я не могу вывезти, товарищ Си... Зачем я её выбрал, довыёбывался...

Товарищ Си, а если Вы уже получили диплом, то почему не догадались в чём проблема кода? Или это была проверка на адекватов в треде?
49 3436034
>>6021
Или в результате проверки Вы поняли, что я долбаёб, пиздец. ПОЧЕМУ ПОСТОЯННО ТАКИЕ ВОПРОСЫ, НА КОТОРЫЕ НЕТ ОТВЕТА, Я НЕ МОГУ ТАК ЖИТЬ!
50 3436072
>>5740
Товарищ Си, здравствуйте, сайт сделал диззассемблер Си кода https://godbolt.org/z/GzhfsKWso
Я скомпилировал и слинковал код с использованием MASM32 https://pastebin.com/NEKE4BDF

И судя по всему это не вина ОСи Виндоус, и даже не вина компилятора, ибо он предупреждения делает, это Ваша вина, товарищ Си.

Товарищ Си, мне очень грустно, я бы хотел, чтобы моя вайфу меня любила, но она не любит меня, мне очень-очень грустно...
artworks-IAJQAvP5A8ZkYweK-HzJy3Q-t500x500.jpg50 Кб, 500x500
51 3436090
>>6021

>Товарищ Си, а если Вы уже получили диплом, то почему не догадались в чём проблема кода?


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

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

>ибо он предупреждения делает, это Ваша вина, товарищ Си.


Он не делает предупреждений. В глаза что ли долбишься. Причём тот же код на фрибсд работает нормально!!! Ану сьеби уроки учить школота блиядь.
К слову причем тут дизассемблер ДЕБИЛ. Ты не сможешь за дизассеблить код с виднды, потому что на Винде нет полноценной библиотеки Си. На Винде твой printf вызывает ConsoleWriteA, а тот в свою очередь вызывает NtDeviceIoControl. Давай назуй, задисассемблируй мне эту хуйню из kernelbase.dll.
53 3436095
Ладно извини. Я пьяный. Праздную день рождение Гитлера
VID20250420232914735.mp4556 Кб, mp4,
640x1138, 0:13
54 3436101
55 3436111
>>6090

> инжинера АСУ ТП


Да тут программирование + физика + схемотехника, вы должны быть умнее всех!

>спамишь кринжевыми товарищами си,


Я уважаю всех товарищей по Си, вы мне братья!

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


Я знаю, товарищ Си, я знаю.

>>6094

> Он не делает предупреждений.


Потому что надо -Wall -Wextra -Wpedantic прописывать, товарищ Си.

> нет полноценной библиотеки Си


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

> Давай назуй, задисассемблируй мне эту хуйню из kernelbase.dll.


А вот это зря, данный компилятор диззассемблирует код на основе UNIX систем, Вы точно уверены, что он нормально отработал на BSD?

>>6095
Эх, товарищ Си, как же я ненавижу НСов, пиздец.

Я к Вам с добротой отнёсся, пытался искренне Вам помочь, а Вы меня последними бранными словами наградили. Теперь мне очень сильно грустно, я ушёл плакать, Вы плохой человек, товарищ Си.
56 3436113
>>6111
данный диззасембер *godbolt.
57 3436125
>>6111

>Да тут программирование + физика + схемотехника, вы должны быть умнее всех!


Умный, по горшкам дежурный, нах. Я денег бы хотел, а не чтобы анон на двачах назвал меня умным.

>я ненавижу НСов, пиздец.


Я не НС. Я гитлер.

>Вы точно уверены, что он нормально отработал на BSD?


Да. Сто процентов. Могу показать даже. То что я под виндой компилю - это виртуалка.

>Вам помочь, а Вы меня последними бранными


Ну соре все дела. Пынямать надо. День рождение Гитлера как ни как.
58 3436128
Гитлер злой и обиженный неудачник.. но в то же время художник и романтик! Литерали ми!
59 3436132
>>6125
Ебать, на моего одного знакомого похожи, правда он себя открыто НС называл, но с Гитлером себя тож сравнивал, Вы идеалист или материалист?
60 3436161
>>6125
Давайте скидывайте.
61 3436267
>>6132

>Вы идеалист или материалист?


Это тебя в университете этой хуйне учат? Все эти "измы" - это придуманное в совке словоблудие. Советский человек настолько контуженный на голову, что он не может обходится без формальностей, и не нагружать всё каким-то словесным поносом. Не "нож" а "острый предмет угловатой формы, для нарезания продуктов питания, не боевой", не "я ебал твою мать" а "вы осознанно вступили в половой акт, с соверешннолетней гражданкой, находясь в трезвом состоянии". Нигде в мире так не говорят.
62 3436377
>>6267

>Нигде в мире так не говорят.


Так они там и писать/читать не умеют, нашел с чем сравнивать
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

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