Этого треда уже нет.
Это копия, сохраненная 27 сентября 2020 года.

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

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

Пожалуйста, пользуйтесь 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/n2385.pdf
- man/Dash/zealdocs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- №54: http://arhivach.ng/thread/535256/
- №55: http://arhivach.ng/thread/543511/
- №56: http://arhivach.ng/thread/563333/ >>1660319 (OP)
2 1680491
>>1680434 →

>а нужно ли читать кнута?



У Кнута очень специфичный стиль изложени, весьма дотошный. Самая топ книга - Кормен и Ко. Но если анальник в терминальной стадии - можешь и Кнута.
3 1680493
апну говнотред
4 1680499
>>680491
Спасибо
5 1680583
Доброе утро, пердоли
6 1680602
>>680491
Почему-то у меня ровно обратное впечатление.
мимо
7 1680640
>>1680452 →

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


Двачую. Его Algorithms in C годная книга (ну или была ~10 лет назад, когда я её прочитал).
8 1680748
>>1680452 →
Я бы сказал так: сначала любая книга по алгоритмам, а потом, по мере необходимости, с интересующими темами точечно в Кнута, как в справочник.
9 1680757
Анон, в стандарте твердо и четко где-то прописан минимальный размер типов данных? Я не о соотношенях типа sizeof(char) <= sizeof(int) <= sizeof(long int), а именно о абсоютном размере типа (8бит или 16 и т.п.).
Диванные кукаретики в интернете и википедия пишут, например, что int - это как минимум 16 бит. Википедия ссылается на стандарт, но пруфов я там не нашел. Может в стандарте прописаны только минимальные и максимальные численные значения, которые должны вместиться в int, а собственно реальное количество бит для этого зависит строго от реализации может на каких-то числовых представлениях 65535 каким-то хуем может вместиться и не в 16-бит, хуй его знает, и википедия банально вводит в заблуждение?
10 1680801
>>680757

> минимальный размер типов данных


Да, прописан. 5.2.4.2.1 "Sizes of integer types".

> Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign. И дальше листинг.



> о абсоютном размере типа (8бит или 16 и т.п.).


Зачем это тебе? У тебя есть sizeof, есть CHAR_BIT (если ты достаточно поехавший), считай сам, скомпилируется в константу.

> может на каких-то числовых представлениях 65535 каким-то хуем может вместиться и не в 16-бит


Ну вот когда изобретешь такое, тогда и приходи с претензиями к комитету. А пока у нас в 6.2.6.2 описаны все разрешенные представления интов.
11 1680832
>>680801
Мне это интересно сугубо в любознательных целях. Читал, что поехавшие на собеседованиях иногда доебываются до терминологии, что мол в стандарте описаны только минимальные численные значения, который должны поместиться в тип данных, но не минимальный размер типа в битах.
Но действительно, учитывая 6.2.6.2, один хуй это ничего не меняет.
12 1680899
>>680461 (OP)
Стыдно признаться, но Прата более доходчево объясняет для ньюфага. КиР, конечно, заебись как прородители языка. Но непонятно для начинающих.
13 1680904
>>680899
А чего стыдного-то? к&р написан для программистов, чтобы новый язык показать, а прата для вкатывальщиков. Всё так и должно работать.
14 1680913
>>680904
Да то, что я пока КиР читал, пришлось шкрябать по всему интернету в поисках понимания тех или иных вещей. Зато стал понимать многие вещи, которых не знал.
15 1680919
Посоны, выручайте
Нужно решить олимпиадную задачу, используя перебор с возвратом.
https://pastebin.com/CsqvPBKQ
Как я понял нужно найти количество элементов в доминирующем множестве заданного графа. Но как реализовать вообще хз. Есть какие-то идеи?
16 1680929
>>680904
Не должен быть си первым языком. Поэтому имбецильный прата и не нужен
17 1680941
>>680929
Си отлично заходит первым языком. Первый язык совершенно не обязательно досконально изучать ведь.

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

Какие у тебя претензии к нему, как к первому языку? Какой ты предпочитаешь?
18 1680979
>>680941
Я бы посоветовал классический бейсик с номерами строк. Он самый простой и вдобавок близкий к ассемблеру, к тому как компьютер работает на самом деле. Когда освоится со структурой кода - переходами goto, gosub, return, научится писать программы, тогда уже можно си, там с одной стороны уже чужеродные говно-абстракции в виде функций, но зато работа с памятью как положено.
19 1680986
>>680979
Так, понятно, я ему всё расписал, а он троллякать пошёл.
20 1680995
>>680986
Ну и зачем ты тролякаешь? Если нечего сказать не нужно пукать, надо молчать.
21 1681007
>>680979
Уж лучше тогда Турбо Паскаль. Чтобы сразу понимать, что такое хорошая IDE.
22 1681016
Ну, например я вкатываюсь в Си и изучаю работу кода на примере линукса. Ведь так намного интереснее: учиться разбираться в работе своей системы.
23 1681017
>>681007
Паскаль это то же самое что си, только деревянное. Можно учить и то и другое, разницы нет. Паскаль даже лучше, будет меньше тупых вопросов по синтаксису, а то в си можно одно и то же написать десятью способами. Для обучения программированию только мешает.
24 1681022
>>681016
Да троллит он, си отличный язык для вкатывания.
25 1681025
>>681022
Тем более здесь есть много чего надо довести до ума. Сразу цели намечаются, а не какое-то абстрактное изучение.
26 1681033
>>681016
Разбираться можно где есть документация - на винде, там всё стандартизировано и документация божественная. А в линуксах куча рандомного говна и документации нет.
27 1681054
>>681033
О, ты-то мне и нужен. Как мне добавить пробел в начало без перезаписи всего файла?
28 1681102
>>680941

>Какие у тебя претензии к нему, как к первому языку? Какой ты предпочитаешь?


Первый язык должен давать максимальный фан и быстрые практические результаты. В свое время это был бейсик, сейчас питон какой-нибудь.
29 1681108
>>681054
А ты мне не нужен, и скорее всего никому с такими загонами, только нахуй послать.
30 1681110
>>681054
Файл - это отмеченные магнитной головкой байты на поверхности магнитного носителя. Как ты представляешь себе добавление символа или середину? Типа, ты вставляешь свой пробел, а остальные символы в ужасе двигаются в бок?
31 1681116
>>681102
Не забывай, тут тред си, а не общий тред раздела. Питоны и прочие скрипты можешь в анус засунуть, или выкатывайся. Программирование в контексте си совсем не то что под этим словом подразумевают обычно.
32 1681119
>>681108
Сложный вопрос что ли? Ну, ладно.

>>681110
Какие головки, 50 лет уже всё через три абстракции.
33 1681129
>>681116
Иди нахуй, шизик
34 1681133
>>681102
Так си и даёт. Написал, скомпилировал, и вот у тебя уже исполняемый файл. Где лучше рузультаты? в скриптовых языках? Ну что такое скрипт? Это тебе нужен какой-то другой исполняемый файл, чтобы этот скрипт читать и выполнять, а что там в нём происходит? Непонятно. На каком языке он написан? Не на питоне. Ну и в чём интерес? Так можно и html себе первым языком выбрать, вот уже где самый быстрые практические результаты!
35 1681140
>>681119
И что, от этого данные хранятся по-другому? Нет. В си это нельзя сделать, нужно пердолить руками конкретную файловую систнму.
36 1681146
>>681140

>нужно пердолить руками конкретную файловую систнму


Ну так я его и задал специалисту по виндоусу.
external-content.duckduckgo.com.jpeg46 Кб, 512x768
37 1681147
>>681119

>Какие головки, 50 лет уже всё через три абстракции.


Вот именно, абстракции "файл" уже больше 50 лет и она устроена даже не как дисковые накопители, а как пикрелейтед.
38 1681152
>>681146

>специалисту по виндоусу.


Очень смешно
39 1681161
>>681152
Мне теперь тоже.
40 1681187
>>681161
Ну твой вопрос нерешаемый. Файлы хранятся как набор кластеров, смещения которых лежат в таблице ФС, поэтому в теории ты можешь дописать кластер (на пару килобайт) и переписать все записи в ФС, но добавить 1 символ нереально. Точно так же как в книгу ты можешь вклеить страницу, можешь вырвать страницу и вклеить новую, но добавить 1 символ - нет. Если тебе такое нужно, нужно делать внутри файла свою собственную ФС, как сделано в формате ворда doc. Но это технологии 80-х, сейчас любой файл проще переписать
41 1681200
>>681187
Как кластер в начало добавить? Килобайты не жалко.
42 1681235
>>681187
НТФС проблемы.
43 1681258
>>681200
Он написал как, но ты прочитать не можешь, просто кукарекающий дебил, которому все должны.
44 1681271
>>681258
Что? От чего ты такой агрессивный? Я же даже не у тебя спросил, судя по

>Он написал

45 1681799
>>680832
Использование переменных с типами где указано количество бит (uint8/16/32_t) не решает эту проблему, чтобы не забивать себе голову этим?
46 1681851
Что полезного можно быстренько накидать на Си чтобы продать?
47 1681856
>>681851
КриптоПро
48 1681976
>>681799

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


Они опциональные, обязательны только least/fast/max, и это имеет смысл, потому что если у тебя 9-битовые char, ты никак не можешь сделать typedef unsigned char uint8_t, стандарт требует ровно 8 бит для uint8_t.
49 1682008
>>680832
Там описаны отношения размеров типов между собой, причем не в виде коэфициента, а в виде сравнения >= <=, если мне память не изменяет. В зависимости от архитектуры абсолютные значения могут менятся, но отношения должны оставаться неизменными
50 1682103
Где код писать?
51 1682132
Анончики, есть проект со своим CMakeLists.txt
В нем несколько подпроектов тоже со своими CMakeLists.txt
И там и там есть options
Можно ли сделать так, чтобы опции подпроектов не отображались, когда пользователь запускает gui-шный вариант, но не меняя файлов зависимых подроектов? Могу менять только основной у проекта.
52 1682206
>>681133
Двачую. Мимо-инженер.
53 1682235
>>682103
CodeBlocks
54 1682239
>>682103
Code blocks
55 1682240
>>681851
Охранную систему с распознованием движения.
56 1682258
>>682103
Code::Blocks
57 1682263
>>682103
Code Blocks
58 1682272
>>682103
Bode Clocks
59 1682285
>>682103
На бумаге. Заебали.
60 1682289
>>682272
Black Cocks
61 1682312
Пытаюсь компелировать в gcc, пишет
cannot find Scrt1.o
cannot find crti.o
Таких файлов у меня нет. Пишут что это потому что у меня установлен gcc только для 64, а скомпелировать он пытается в 32. Как скомпелировать?
target: x86_64-linux-gnu
gcc version 7.4.0
62 1682317
>>682312
Нет, дело не в битности. Эти файлы - часть глибц (у некоторых glibc-devel). Как ты поставил умудрился поставить компилятор без глибц, демон? Попробуй поставить glibc-devel или сказать gcc -L/usr/lib. Не поможет - неси gcc -v filename.c, или сам смотри, где оно их ищет и не находит.
63 1682422
Закоренелый виндузятник на линии.
Заебался я пролистывать прату между главами, захотел разделить PDF по главам.
Ищу в Гугле split PDF windows 10.
Во первых, почти все они онлайн, во-вторых ставят вотермарки, в третьих те которые можно установить - бесят антивирус.
По совету Анона в предыдущих тредах, учу прату через wsl Debian.
Заебавшись найти простую сука прогу для PDF разделения, решил попробовать через wsl.
Скорее по приколу, ведь всем известно что в Линекс нужен пердолинг даже чтобы посмотреть число.
Установил pdftk. В командной строке набрал что нужно.
Хуяк.
Готово.
3 минуты.
Включая поиск в Гугле.
Ещё раз: 3 минуты. Просто. Без Троянов. Без ебли. Без зондов. Без говна. ОНО ПРОСТО РАБОТАЕТ, АНОН.
Сказать что я ПРИХУЕЛ, это ничего не сказать.
Естественно, что на Линукс я не готов перейти, я его ещё не понимаю. Но это просто пиздец, я в шоке.
Ты наверное будешь смеяться, но я реально заебался искать решение такой простой проблемы.
64 1682438
>>682272
>>682239
Честно говоря, я пишу в нано, пока не вижу надобности использовать инструмент, который на 99% мне не понятен.
Когда будет что-то сложнее хеллоуворда, тогда и перейду.
65 1682648
>>682422
pdftkbuilder и на шин есть.
66 1682670
>>682648
Я не проверял.
Факт в том, что я долго искал под шин и за 3 минуты нашел под дебиан.
Попробуй погуглить, и продаться сквозь тонну говна.
67 1682691
>>682422

>Естественно, что на Линукс я не готов перейти, я его ещё не понимаю. Но это просто пиздец, я в шоке.


Детский лепет. Ты перейди на линукс, вот тогда узнаешь что такое настоящий пиздец и шок.
68 1682702
>>682691
Детский лепет. Ты попробуй стать разработчиком и при этом НЕ перейти на линукс, вот тогда узнаешь что такое настоящий пиздец и шок.
69 1682709
>>682702
Разработчик чего? В тырпрайз галере ты никуда не переходишь, на чем скажут, на том и пишешь, как полагается рабу.
70 1682749
>>682702
Ну я на работе пишу под линукс, и в гробу я его видал. Домашние проекты только под виндоус.
71 1682834
>>682438
сразу в вим переходи
72 1682835
Пацаны, походу мы клинического долбаеба сдетектили тут >>682749
73 1682836
>>682835
С подключением. Этот шиз тут постоянно висит
74 1683050
>>682835
Показательно как ничтожная чмошка без личности за себя говорить не может, а воображает толпу за которую прячется. Говну всегда нужна чужая опора.
75 1683142
Кто что думает про 2й том Столярова?
76 1683328
>>683142
Выглядит интересно. Надо будет почитать.
77 1683507
>>683142
Хорошо горит
78 1683611
>>683507
Ваш пегдак?
79 1683636
>>682670
Я не буду пытаться гуглить, он хуйстоял у меня, когда я ещё пользовался шин.
80 1683714
Анончики. Поясните за использование size_t и ptrdiff_t, а то в разным местах какие-то противоречивые описания. Понятно, что они - это беззнаковый и знаковый типы, размер которых определяется платформой. А вот где и что использовать, а то пишут, что все взаимозаменяемо.
Как я понимаю:
size_t - это счетчики циклов, размерности массивов
ptrdiff_t - это адресная арифметика
81 1683842
>>683050
показательно, как ничтожная чмоха пытается говорить смелые высказывания от своего имени на анонимном форуме.
82 1683981
>>683842
this, как он вообще собрался опираться на себя
83 1684021
>>683714
ptrdiff_t практически никогда не нужен, это технический тип, использующийся при сравнении указателей. size_t - да, все так. Если вдруг понадобится size_t со знаком, то у некоторых платформ есть ssize_t, а где нет - можешь самостоятельно определить.
84 1684048
Как сгенерировать мир типа майнкрафта (без пещер)?
85 1684059
>>680461 (OP)
Котаны, посоветуйте учебник по C/C++, где объясняется как устроена память, вызовы и так далее по списку. Внутреннее устройство таких простых вещей как определение переменной, функции, вызов функции и др. Заранее благодарю.
86 1684123
87 1684126
>>684059
Всё есть в шапке, внимательно посмотри.
88 1684236
>>684126
>>684059
Совершенно случайно наткнулся на

>Защищенный режим процессоров Intel 80286/80386/80486


>© Александр Фролов, Григорий Фролов



Охуенная вещь, в некоторых моментах надо вникать с ручкой/тетрадкой, но реально интересно.
89 1684247
>>684236
А там нету случаем про РАСШИРИТЕЛЬ для Доса?
90 1684258
>>684247
Может быть, я до середины дошел.
Где-то на первых страницах есть РАСШИРИТЕЛЬ для твоей мамки, но я не вчитывался.
91 1684269
>>684048
>>684123
Не просто шум, а шум перлина.

>>684236
Особенно 286 с его извращениями сейчас актуален.
92 1684292
>>684269

> Не просто шум, а шум перлина.


любой можно, каждый что-то нагенерит
93 1684328
>>684269

>Только программирование в среде WINDOWS даст вам возможность почувствовать все преимущества использования защищённого режима работы процессоров.

penguinscomplaints-600x450.jpg47 Кб, 600x450
94 1684335
Коллеги, вот серьезно.
Есть кто-то кто работает используя С?
Пишете драйвера для Линукса?
Расскажите о себе.
Как учились.
Сколько лет.
Область трудоустройства.
Почему выбрали программирование.
95 1684338
В самых ранних тредах, то-ли здесь, то-ли в крестотреде, анон рекомендовал как годно после С вкатиться в кресты.
Если ты еще здесь, напиши еще раз пожалуйста.
Спасибо.
96 1684353
>>684335
пишу вполне себе прикладной софт, не дрова: мультиплатформа/гуй/любой каприз.. Учился хорошо, 30+
Выбрал не именно программирование, это скорее одно из, что интересно в смежных областях.
97 1684354
>>684338
Катаюсь туда и обратно.. в чем вопрос-то?
другой анон
98 1684361
>>684354
После Си Пратыкак вкатиться?
99 1684364
>>684361
После Си наоборот мозги стали лучше все понимать и другие языки легче даваться, те же плюсы. Качество кода заметно возросло. Поэтому и плаваю туда обратно в зависимости от проектов.
На мой взгляд, лучший язык для обучения студентов профильных специальностей.
100 1684381
>>684364
Ты даже не представляешь насколько прав.
Си - не первый язык куда я хотел вкатиться.
Сначала меня убедили с++ сектанты а на деле - хеллоувордщики и макаки что можно ПРОСТО ПИСАТЬ НА КРЕСТАХ И ООП-КОД И НЕ ПАРИТЬСЯ.
При этом макака не способна объяснить что такое int argc, char *argv[] в main.
Потом с# пробовал, хорошо продвинулся в изучении, пока не поймал себя на том, что просто заучиваю фичи языка синтаксиса. На крестах та же херня, кстати.
Потом пытался в модный хачкель пиздец и стыд нахуй это нужно было. Джаваскрипт + джава не зашли, потому что я досконально не понимал каким образом они выполняются на моем компьютере.

В конце концов вернулся к изучению сишечки вспомнить молодость, я счастлив.

Хочешь байтоебства с МК? Ныряй без проблем, всё концептуально уже знаешь.
Хочешь сложных абстракций? Ныряй в С++, база есть, все поймешь.

Сколько времени я убил, вместо того чтобы вникать в сишечку! А ведь мне уже почти 40, ебать..

>После Си наоборот мозги стали лучше все понимать


Нечего добавить.
sage 101 1684404
>>684381
Исповедь неосилятора итт.

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


Который даже сишку не осилил, потому что не может прочитать и понять исходники движков.
102 1684520
>>684381
А ты можешь умник бля? Ты же сам нихуя не знаешь, ты обычный любитель-вкатоид, но сидишь и рассказываешь что-то про кресты и сисю с умным видом

>ДОСКОНАЛЬНО


Да ты и щас не понимаешь, спросить у тебя — и напукаешь что-то невнятное про ЭЭЭ НУ ТАМ БИЗОН КОНПЕЛЯЦИЯ ОПТИМИЗАЦИЯ МАШИННЫЙ КОД

>концептуально уже знаешь


нихуя ты не знаешь

>сложных абстракций


Блядь какой же кринж нахуй
103 1684536
>>684338
Когда-то давно я писал о том, что после K&R можно прочитать дизайн и эволюцию, а затем йоба книги типа Мейерса и Саттера
104 1684563
>>684258
Глянул в оглавление там всё же есть глава про РАСШИРИТЕЛЬ для твоего бати.
>>684381
Нахуй тебе это всё, чел, в твои года пора уже кабанчиком быть и попиливать бюджет рососиюшки, а не байты перекладывать.
>>684520

>кринж


Флексишь/чилишь, небось?
105 1684583
>>684536
Да, это был ты, добра тебе
106 1684652
>>684563

>Глянул в оглавление там всё же есть глава про РАСШИРИТЕЛЬ для твоего бати.


А для моей мамки шлюхи есть? А то не сдохнет никак.
107 1684889
Сисяч, выручач.
Я постоянно испытываю дикую попаболь при сборке библиотек/бинариесов из исходников.
Постоянные ошибки, постоянные гуглёжки, как меня уже это достало.
Подскажите куда копать что бы овладеть мастерством компилирования исходников? Желательно бы ещё статейки накидать.

Заранее целую.
108 1684902
>>684889
Поставь гхенту линкукс.
109 1685039
>>684889
Юзай make
064.gif170 Кб, 326x281
110 1685240
Анон, а есть ли в этих ваших glibs такая корневая процедура записи, что можно было бы хуйнуть байтики прям куда захочешь?
Ну вот к примеру как-то так:

fwrite(source,
sizeof(char),
sizeof(source),
(кондишен какой-то) ? stdout : файлик на винте
);

Не уверен, что правильно всё написал и пока не проверял.
Но допустим, помимо файлика и вывода, я хотел бы ещё писать и в буфер. Ну разве файловый указатель не идентичен адресу в памяти и его нельзя заменить?
Алсо была мысль сделать нечто такое через сисколлы, но я боюсь, что мне придётся через инлайны регистры править, да и асму я почти не знаю
111 1685280
>>685240
write()
fatone.jpg63 Кб, 581x1024
112 1685402
>>685240
Сынок, учи матчасть.
113 1685429
>>685280
А как тогда через open() получить целочисленный дескриптор, лол?
>>685402
Хуец мелковатый какой-то. даже у меня побольше
114 1685462
>>685429

>А как тогда через open() получить целочисленный дескриптор, лол?


В смысле?
115 1685479
>>685462

>В смысле?


>size_t write (int fd, void* buf, size_t cnt);


Как получить fd для куска памяти, а не для файла/потока?
я уже понял, что никак
write() же пишет исключительно в последние.
116 1685482
>>685479
Например pipe() даёт тебе fd на кусок памяти. Да и довольно много других функций.
117 1685486
>>685240

> Но допустим, помимо файлика и вывода, я хотел бы ещё писать и в буфер


fmemopen(), но оно не везде есть. Можешь свою обертку написать.
118 1685582
>>685479
Ты понимаешь как они работают эти дескрипторы, трубки и процессор вообще?
http://man7.org/linux/man-pages/man7/pipe.7.html
64598732165768.jpg8 Кб, 259x194
119 1685635
>>685482

>Например pipe()


Спасибки.
>>685582

>Ты понимаешь как они работают эти дескрипторы,


дескрипторы для идентификации файла в процессе, очевидно же.

>трубки


Вот сейчас курю. Из того что выкурил, понял что пайп имеет два дескриптора - для записи и чтения для других процессов. Читается/записывается по фифо. Вот только я безнадежно туп и всё равно не знаю, как из указателя на получить это ФД.

>и процессор вообще?


А что тут надо понимать?
120 1685674
>>685635

>дескрипторы для идентификации файла в процессе, очевидно же.


https://www.opennet.ru/docs/RUS/lpg/node6.html#SECTION00730000000000000000
121 1685693
>>685635

>как из указателя на получить это ФД


Если у тебя указатель, то зачем тебе fd? У тебя уже сырая память, просто пиши туда и всё.
122 1685730
>>685693
Я его уже послал туда, где он должен был быть перед тем как задавать вопросы.
123 1685732
>>684889
если разрабы конкретной либы не озаботились приложить файлик CMakeLists.txt то просто возьми другую аналогичную либу
124 1685749
>>685732

>CMakeLists.txt


Для пидорашек и лохопедриков, нормальные пацаны юзают Autotools.
125 1685755
>>685732
Позаботились, но когда я прописываю make/cmake мне в ебало прилетает 1000 ошибок, а я хз как их исправлять, и что делать.
mqdefault.jpg9 Кб, 320x180
126 1685769
>>685486

>fmemopen(),


Спас сей день.
127 1685773
>>685749
да, да, все хорошо
>>685755
что за либа? может она сама по себе криво написана
128 1685778
>>685773
OpenSSL
Я пытался три часа её скомпилировать.
make слал меня нахуй, говоря что FILES NOT INCLUDED!
cmake высрал что мне что угодно, но не статические либы.

В итоге спустя пару часов нашёл в интернете уже скомпилированную статику и с ней начал работать.
129 1685814
>>685778
Под что собирал?
130 1685839
>>685814
Windows x86
Из виндушной ЦМД
ssl.png54 Кб, 811x255
131 1685902
>>685778
а ты точно все внимательно читаешь?
https://wiki.openssl.org/index.php/Compilation_and_Installation
132 1685904
>>685839
Ну с шиндоузом не могу помочь, а что если a) тебе и не нужно собирать, под шиндоузом разве нет либархивов b) ещё как вариант во всяких докерах крутиться?
133 1686013
>>685904

>https://wiki.openssl.org/index.php/Binaries


>Reproducible 1.1.x builds with latest MinGW-w64/GCC, 32/64-bit, static/dynamic libs and executable.


Всё там есть, заканчивай ебаться со сборкой.
134 1686126
>>684902
Если самому ебилды не писать, то там ведь нихуя знать про это не нужно.
135 1686129
>>684889

>Я постоянно испытываю дикую попаболь при сборке библиотек/бинариесов из исходников.


Просто расслабься и прими дилду в свой анус. С годами он будет разработан настолько, что ты будешь лениво собирать все это говно часами, посматривая правым глазом сериальчик. А деньги при этом платятся как за полноценное программирование
136 1686391
>>686129
Какую дилду, этот клоун не знает различия make и cmake, не читал ридми по сборке, зато уже умудрился насобирать 1000 ошибок где-то и насторочить на дваче. Настоящий программист, задатки гения.
137 1686765
>>686391
Возможно просто макака.
138 1686811
>>686391
Ты типичный комплексующий задрот. Только от таких можно услышать подобную хуйню.
139 1686890
>>686811
Но у него верная мысль озвучена, чтобы собрать проект, нужно почитать ридми.
140 1686917
>>684520
Недавно смотрел видос, где опытным разработчикам!, на серьезных щах, объясняют, почему скорость обработки массива различна, в зависимости от порядка обработки строк и столбцов.
Я тогда охуел, это же базовые понятия.
Твой коммент поставил все на свои места.
sage 141 1686922
>>684381

>модный хачкель


што
142 1686993
>>686917
Да что ты нахуй вообще несёшь, ты обычный любитель-долбоеб, а самомнение у тебя как у системной макаки с 10 летним стажем минимум. При том что я сомневаюсь что ты вообще понимаешь о чем ты пишешь, что-то о том что не мог понять что-то про аргументы, что-то про скорость обработки массивов. Сядь книжку по крестам почитай какую а не обсирай свои штаны тут
143 1687183
подскажите, что почитать про boost и параллельные вычисления на C
144 1687191
>>686917
Почему?
145 1687206
>>686993
Чем бы девственники ни тешились. Если жизнь не для них, пусть хотя бы положняки C++ зубрят и свою хуйню оптимизируют.
146 1687308
>>686811
У нормальных людей - не тупой, у тупых - задрот.
У нормальных - критика, у тупых - комплексы.
Типичный дебил, настоящий, необучаемый, навсегда, ибо вместо исправления своих недостатков занимается их защитой и оправданиями, разворачиваним стрелок.
147 1687315
>>686917

>Я тогда охуел, это же базовые понятия.


Это low context и high context культуры. Цивилизованные люди используют low context, потому что проще сказать, чем выяснять, что собеседник знает, а что нет.
У пидоршек high context - скажешь человеку то, что он знает, он ОБИДЕТСЯ и подумает, что ты считаешь его ТУПЫМ, а если это делает лектор - это вообще пизда. Потом довольный прибежит на двач, рассказывать, какие все тупые, а он, задротик, умный.
148 1687316
>>687308

>У нормальных - критика, у тупых - комплексы.


Мань, ты типчная токсичная форумная крыса, которая занимается не "критикой", а форумным самоутверждением. Ты думаешь это не видно?
149 1687342
>>687316

>типчная токсичная форумная крыса


Как что-то плохое, и это вообще не отменяет того факта, что он всё правильно говорит.
150 1687344
>>687342

>Как что-то плохое


Примерно как ссать в подъезде

>и это вообще не отменяет того факта, что он всё правильно говорит.


Этот пердеж не является разговором
151 1687366
>>686917
Ну давай объясняй в чем отличие скорости обработки таких массивов, строк и столбцов. Объясни мне как меняется скорость, если я сначала буду вычислять столбцы->строки или же строки->столбцы.
153 1687370
>>687369
Если поменять их местами все равно не будет эффекта на кэш цпу, если не считать размеры.
154 1687509
>>687315
Прикольно, не знал что для этого явления есть определения, хотя сам замечал такое
155 1687552
>>687369
Очень мощное заявление прозвучало. Правильнее было бы сказать "может влиять".
156 1687553
>>687552
фикс* "может быть различна"
157 1687696
>>687369
Олимпиадные задачки.
image.png36 Кб, 419x517
158 1687700
Чё можно почитать про make?
А то тёмное поле, у людей процесс компиляции сложнее чем сама программа, а я ничего про это не знаю.
159 1687715
>>687700
Просто ознакомиться — что угодно, хоть туториал на Ютубе, зверь не так сложен как кажется.
160 1687716
>>687700
На сайте гну. Вообще make - очень универсальный инструмент, для многих задач сгодиться, неплохо бы иметь такой под рукой и уметь им пользоваться. У тебя на скрине скорее не про make, а про автотулзы это другое
161 1687740
>>687700
man make
или info make
162 1687990
Тред, помоги, пожалуйста, разобраться в поведении куска кода:
163 1688024
>>687990
typedef struct {
int depth;
} pizda;

typedef struct {
int length;
pizda p_pizda;
} hui;

pizda eot;
pizda
p_eot = &eot;
eot.depth = 22;

hui op = {5, p_eot};

Почему запуская этот кусок в gdb я могу обратиться к члену структуры pizda структуры op типа hui как (op.p_pizda), так и (op->p_pizda)? Однако если обратиться вторым способом к op в исходном коде, то, понятное дело, возникает ошибка на этапе компиляции. В чём здесь заключается магия дебагера?
164 1688180
>>687990
>>688024
Малолетние дебилы почему-то думают что вставлять мат в код - это круто.
165 1688210
>>688180
Ну мемы же ну
хаха оп хуй пизда еот
166 1688324
>>687740

>тащемта ничего сложного нет, просто берёшь и пилишь мейкфайлы

167 1688350
>>687369

> пердолинг из интел мануала на 10к страниц


> это же ентри лвл, каждый нюфаня должен знать


Ох лол. Я практически уверен, что итт лишь 1.5 человека осилило черную магию мануалов.
168 1688355
>>680461 (OP)
есть ли в простом си обработка исключений TRY CATCH?
169 1688381
>>688350
Приходится осилять, в противном случае никогда не поймешь где наебался.
170 1688426
>>688381
oн на этo ни oдин гoд пoтратит
171 1688432
>>688355
Нет, есть сигналы для низкоуровневых (всякий неверный доступ к памяти и деление на ноль) и setjmp/longjmp для эмуляции программных. В винде есть __try/__except, но это расширение компилятора.
172 1688435
>>688432
пoнял, спасибo
173 1688605
как же сложно писать на сишке...
174 1688824
Все привет коллеги! Поделитесь чтивом, как можно на Си WinForm делать. Спасибо!
175 1688938
>>688350
Читай что разжевали или амд гайд почитай.
176 1688971
>>688824
троллейбус из хлеба .jpg
177 1689103
>>688938
Я читал
178 1689105
>>689103
Оба
Expanding-Brain.jpg47 Кб, 430x309
179 1689509
Анончики, мне кажется я понял указатели.
Чувствую себя как на пикрелейте.
Очень сильно помог godbolt.
Всем добра!
180 1689527
>>689509

>указатели


А указатель на указатель на указатель?
181 1689556
>>689509

молодец.

ваще с указателями проблема, что их часто объясняют на примере указателя на локальную переменную, и ты такой: "нахуя это говно нужно, если можно с самой переменной работать". Когда начинаешь фигачить структуры, становится понятнее. Ну и если хоть чуток разобрать (по сути) любой ассемблер, оказывается, что указатель - просто адрес, разыменовывание - получение данных по адресу(ну, с добавлением оффсета, если доступ к полю структуры).
182 1689634
Пиздец ньюфаги в треде. Inderection это одна из самых базовых вещей в software engineering
183 1689677
>>689634
Опытные сидят в емейл-тредах обсуждения патчей к линуксу. Раз ты здесь, ты недалеко ушёл от остальных.
184 1689710
>>689677
Я там тоже сижу. Только в рид онли
15776057303210.png443 Кб, 807x396
185 1690070
Господа, скорее всего я по адресу.

Можно ли код по ссылке: https://ideone.com/TSjp9U как-то улучшить? В идеале, чтобы меньше циклов требовалось и меньше жрало.

Мне надо сформировать строку вида <S:X1,Y1;X2,Y2;Xn,Yn;> , где Xn - порядковый номер переменной, Yn - значение переменной.

GCC 7.2.1

Или скажите, где могут с такой проблемой помочь.
186 1690115
>>690070
Какие опции оптимизации включены у тебя?
187 1690130
>>690115
Всё выключено.
None (-O0)
188 1690140
>>690130
Начинай использовать.
189 1690153
>>690140
Т.е. никакие правки кода не помогут?
190 1690160
>>690153
Зачем лезть в код, если ты даже самым элементарным не пользуешься? Ты оптимизации хочешь или поиграться?
191 1690173
>>690160
У МК мало ресурсов.
Код целиком я ещё не дописал и он на стадии отладки, так что опции оптимизации могут ещё говна подкинуть.
Писал как есть, т.к. почти не знаю ничего.

Вообще, посмотрел бы как это НАДО сделать, а не так, как получилось у меня.
192 1690183
>>690173
Хочешь оптимизации — используешь опции оптимизации компилятора. Так оно работает. Ты ещё скажи, что ты взялся это на С писать, потому что он "оптимизированный", а на своём языке даже оптимизации не пробовал включать?
193 1690200
>>690183
Ладно, чувак, забей.

Может кто ещё что подскажет. А нет, то и так должно работать скорее всего.
194 1690204
>>690200

>как_есть_ножом.жпг

195 1690216
>>689634

>Пиздец ньюфаги в треде.



чо ты такой токсичный? челик разобрался с темочкой, сделал маленький шажок, хули бы не поддержать? нет, блядь, придёт пердоля, козыряя своим сомнительным багажом знаний. ссал тебе в рот.
196 1690292
>>690204

>как_есть_ножом.жпг


Ну-у, если ты так хочешь знать, то...

https://ru.wikihow.com/правильно-пользоваться-вилкой-и-ножом
197 1690301
>>690070
Почему ты пишешь в tmp_str, а не сразу в temp_buf?
198 1690311
>>690070

> В идеале, чтобы меньше циклов


У тебя всего один цикл. Из твоего примера вообще непонятно, зачем он нужен. И switch case можно выкинуть. Но я не знаю, может предполагается, что в var_tosend данные могут идти непредсказуемо и его размер не определён.
image.png197 Кб, 854x1087
199 1690326
200 1690381
>>690311

>зачем он нужен


>Мне надо сформировать строку вида <S:X1,Y1;X2,Y2;Xn,Yn;> , где Xn - порядковый номер переменной, Yn - значение переменной.



> В идеале, чтобы меньше циклов


Машинных циклов, если быть точнее.

>в var_tosend данные могут идти непредсказуемо и его размер не определён


Именно так. Код - функция-конструктор, формирующая строку для отправки.

>>690326
Что это за ахинея?
201 1690392
>>690301
В смысле, почему всё пишется в разные массивы?
Потому что не знаю, как разом преобразовать переменную и записать в конец одного строкового массива.
Так бы я преобразовывал переменные и писал сразу в один массив.

snprintf преобразует разношёрстные переменные по заданному формату, а strcat склеивает строки.
202 1690646
>>690326
Если я билдю проджекты из 17 файлов поочередно в консольке вместо мейка, то получается, что ем с ножа?
203 1691101
>>689556
Вот именно!
Есть один момент, на который убил много времени.
В книгах объясняют, что если, например есть массив arr[2][3]; то arr это адрес первого элемента массива, то есть - &arr[0][0]. Фактически, это действительно так, но это пиздецки сбивает с толку, так как при разименовывании надо всегда учитывать тип!
На самом деле arr это &arr[0], a вот arr[0] это уже адрес arr[0][0].
204 1691841
>>690392

> Потому что не знаю, как разом преобразовать переменную и записать в конец одного строкового массива.


Может, увеличить значение указателя на строковый массив?
205 1692053
>>690646
Ты же в тред не приходишь:

>двач, как быстрее билдить 17 файлов? руки кстают стрелку вверх нажимать


>используй мейк


>мейкоблядь закукарекала!

206 1692058
>>691101
arr тоже самое что и (arr+i)
arr[j] ==
(*(arr+i)+j)
207 1692062
>>692058
бля форматирование пошло по пизде спасибо абу
208 1692176
>>680461 (OP)
Посоветуйте статический анализатор кода, чтобы проверял misra c ну и остальное проверял там, чтобы говна в коде не было.

Пока что немного погуглил и подумываю насчёт PVS Studio.
209 1692184
>>680757

>твердо и четко где-то прописан минимальный размер типов данных?


Не, нихуя, везде по разному. В одном канпиляторе у тебя будет long int 24 бита, в другом 32 бита, к примеру.
По этой причине в misra c не рекомендуется использовать оригинальные типы, а вмето них нужно использовать типы указанием размера uint16_t, uint32_t и так далее.
Можно подкулючить библиотеку typedef для этого.
210 1692202
>>692184
Для этого лучше подключить stdint.h
Такой метод является кроссплатформенным.
Capture1.PNG91x30
211 1692235
Массив длиной 10.
Записываю в него строку через gets(s).
Суть в чём? Если ввод в консоле больше 10-ти знаков идёт ошибка, как поставить какую-нибудь защиту от этого? Чтобы он инорировал остальной ввод или что-нибудь такое?
212 1692237
>>692235
Посмотри в интернете такой простой вопрос.
213 1692257
>>692237
нет, не посмотрю. скажи решение. конкретное и прямое. очевидно что я сюда уже блядь после того как пол дня гуглил.
214 1692285
>>692257
Если бы ты хотя бы 1 ебаную справку открыл, то наткнулся бы на fgets.
215 1692291
>>692285
прoсти, я идиoт. спасибo бoльшo за пoмoщь
216 1692307
>>692285
я ввoжу с клавы в кoнсoль, чтo мне писать в истoчник ввoда?
217 1692309
218 1692315
>>692309
>>692307
>>692285
у меня серьёзные проблемы.

сравниваю 2 строки if (strcmp(s, "Test"))

при использовании функции gets работает, но при переполнении крашится. при функции fgets, не боится переполнения, но почему-то функция там неопределяет строки как равные. я заебался уже нахуй
219 1692321
>>692315
Начни тогда с чего-то другого. Книжку почитай.
220 1692322
>>692321
прочитал всю. кроме приложений. и упражнений половину книги сделал. как решить проблему?
221 1692324
>>692315
Может конец строки не дописывает?
222 1692336
>>692324
Нет. Я уже разoбрался, анoны. printf'ом сделал посимвольный вывод двухмассивов, у первого массива нулевой элемент единице равен нахуй. Не знаю почему, но короче ваши функции гавно ебаное
223 1692339
>>692322
Другую книгу тогда прочитай. В прате про fgets есть.
224 1692346
>>692336
>>692324
Короче, да разобрался. Анон был прав. Нет конца строки, причём не функция гавно, а я еблан. У меня нету конца строки в той строке с которой я сверяю поэтому и получается неравенство. Каюсь, анчоусы.

>>692339
Нет уж, я заебался книги читать, 2 года я читал книги, хочу кодить, заебало.
image.png40 Кб, 259x194
225 1692440
>>692346

>Нет уж, я заебался книги читать, 2 года я читал книги, хочу кодить, заебало.



Когда тебе нужно использовать неизвестную тебе функцию из стандартной библиотеки, прочитай один, сука абзац в стандарте про эту функцию, ну или в man. Дали им мануалы - читай, нет блядь, говно жрут. Наберутся "знаний" их своего эгрегора, лол.
226 1692509
>>692346

>причём не функция гавно, а я еблан


Аксиома программирования. Нужно преподавать на первом уроке в школе, так чтобы всю жизнь помнили.
Есть еще важное следствие-тест. Если ты пробуешь использовать функцию, но она "не работает" и ты ищещшь другую на замену, значит ты необучаемый дебил, залетышь чуждый программированию. Просто съеби в таком случае, ты дефективен на генетическом уровне.
227 1692524
Был охуенный сайт, где можно было вбить код на Си с нагромождением пойнтеров и т.п., и тебе расшифровывали, что на что указывает и т.п.

Никто не помнит?
228 1692526
>>692524
Хммм... Где бы в этом треде мог быть список полезных сайтов? Даже предположить сложно..
229 1692528
>>692526
Атдуши в душу. Я из /s/, а у нас с шапками пиздец полный вечно
230 1692532
>>692528
Потому что вы их всё равно не читаете, как мы только что убедились.
231 1692534
>>692532
Поэтому и не читаем, что там насрано и нихуя нет обычно (в нашем случае).
232 1692593
>>692524

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



https://www.godbolt.org ?
233 1692627
>>692509
ну чё ты наехал, невнимательнoсть. ну и я не кoдер ни разу, этo пoбoчнoе явление скажем так, не oснoвнoй рoд занятий.
234 1692673
>>692524
Это разве не задание из K&R?
235 1692675
236 1692692
>>692202

>stdint.h


Да, точно, она, забыл как называется.

>Такой метод является кроссплатформенным.


Вот поэтому и рекомендуют использовать такие типы, чтобы не ломать башку, сколько битов в переменной.
237 1692697
>>692692

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



Остается возможность соснуть с endianness.
238 1692767
>>691841
Это может работать с snprintf?
Можно пример, что ли.

Спасибо.
239 1693085
>>692767
char buffer[100];
size_t nb = 0;
snprintf(buffer + nb, countof(buffer) - nb, "%s %d %f", "a", 100, 1.23);
nb += strlen(buffer + nb);
snprintf(buffer + nb, countof(buffer) - nb, " %с %s\n", 'x', "hello");
nb += strlen(buffer + nb);
...
buffer[(nb < countof(buffer)) ? nb : nb - 1] = '\0';

Все было бы проще, не будь snprintf в сишке сломана нолик в конец не всегда пишет, возвращает не число записанных символов, а требуемый размер буфера, чтобы влезло все. Поэтому лучше всего для такого сделать обертку вокруг snprintf, которая заодно и на ошибки проверит (snprintf и отрицательное значение вернуть может), и нолик в конце не забудет, и флажок примет, считать ли недостаточный размер буфера ошибкой - для имени файла или каких-то критичных данных очевидно да, а для отладочных логов очевидно нет.
sage 240 1693086
>>693085
Лол. Вот и я наебался. Короче, вот это терминирование нулем, которое в конец уехало, надо после каждого snprintf делать.
241 1693131
>>693086
>>693085
Что-то не пашет.
https://ideone.com/ykeJg2
sage 242 1693144
>>693131
Скопипастил что ли? В %с русская c.
1589466713681.jpg145 Кб, 749x746
243 1693243
>>690216
Я вот его примерно так вот представляю. Покрякал и улетел.
670.jpg30 Кб, 600x600
244 1693421
>>693144
Благодарю, поправил - работает.
245 1693763
Привет Aнон. После отпускания кнопки на нулевом пине порт должен потухнуть через некоторое время, но внезапно нихуя и он светит, как так?

https://pastebin.com/w1qXaQw7
246 1693857
.file"a.c"
.intel_syntax noprefix
.text
.section.text.startup,"ax",@progbits
.p2align 4,,15
.globlmain
.typemain, @function
main:
xoreax, eax
ret
.sizemain, .-main
.ident"убунта"
.section.note.GNU-stack,"",@progbits

Факт: ГЦЦ на третьем уровне оптимизации удаляет к хуям собачьим всё то, что не связано со стримами и файлами.
247 1694050
>>693763
Хоть я и не шарю в авр, но тут такая лютейшая хуйня в плане алгоритма, что я даже не знаю с чего начать.

Во-первых, после отпускания кнопки, ты больше никогда не зайдёшь в условие if ((PIND & 0b00000001) == 0b00000001), потому, что оно будет false.
Во-вторых, даже если ты будешь держать кнопку нажатой, то по истечение таймера, у тебя всё равно будет светить (ну или дохуя часто моргать), так как после сброса порта в 0 он опять поставится в 1.

В использование таймера я даже не вникал, ну его нахуй.
15869283402850.png1,4 Мб, 750x750
248 1694082
>>694050
Бля, где научиться алгоритмам этим всем?
249 1694088
Есть строка вида: hui,pizda,1 , где hui и pizda - любое сочетание символов, а 1 - цифра, 1 или 0

Надо вычленить совпадение в отдельную строку.
Подобрал подходящий паттерн: ^.,.,[0-1]$

Как его скормить в регэксп для моих целей? Или можно выкрутиться по-другому?
250 1694096
>>694088
Очередной дебил думает что мат в коде - это дохуя смешно
251 1694185
>>693857
То, что не содержит сайдэффектов. Если хочешь затестить оптимизацию, компилируй отдельные функции или пиши результаты в volatile-переменные.

>>694088
Можешь явно стейтмашину забабахать. Заводишь comma_index = 0, встретив запятую - инкрементируешь, пишешь символы в columns[comma_index], для comma_index == 2 дополнительно проверяешь каждый символ isdigit. Зачем для такой ерунды тащить регэкспы - непонятно.

>>694096
Очередной дебил, который перепутал сосач с форумом для девочек. Какая принципиальная разница, писать foo/bar или hui/pizda?
unnamed.jpg34 Кб, 512x480
252 1694468
>>694096
Ты там, блядь, из баптистской школы что ли?
253 1694480
>>694468
Какой агрессивный школьник.
254 1694563
>>694480
На плеббите не апвоутнули?
255 1694568
>>694082
Это EE и двочная система счисления
256 1694677
>>694568

>EE


чиво бля.webm
гугл хуйню говорит
257 1695010
>>694677
ElectricalEngineering
1404415375081.jpg299 Кб, 650x876
258 1695162
>>695010
ты понимаешь что ты поехавший?
259 1695468
>>694082
Чо это наглая соплячка у деда из кармана пиздит?
260 1695777
>>680461 (OP)
Анон, посоветуй какую-нибудь обертку-фронтенд (хз как правильно) над gdb, чтобы было удобно юзать, можно консольную, можно гуи. Стандартный из под консоли все-таки сильно неудобный.
Можно наверное иде какую-то легкую, но я вимовый линуксодибил, так что не оч хочу. Еще было бы неплохо если оно как-то для асма неплохо работало, но это опционально. Ну или что-то такое спецом под асм.
Без названия (2).jpg11 Кб, 211x239
261 1696410
Нужна помощь с файлами.

Есть файл name.txt, в нём две строки до 64 символов латиницей или цифр, или их комбинаций, допустим:
stroka1
stroka2

Надо эти строки прочитать из файла и занести в два отдельных массива.

Хульп, плиз.
262 1696432
>>696410
Учеба это часть работы. Хочешь делать работу чужими руками - плати.
263 1696443
>>696432
Вы только посмотрите на этого маминого капиталиста.

Проснись, буржуа, ты обфрилансился в портки.
264 1696454
>>696410
В чём проблема-то? Открываешь => заносишь. Тут даже таймера и кнопки нет.
265 1696461
>>696454
Ты сегодня у мамы иронично-саркастичный?
Пшёл вон, пёс.
266 1696523
>>696443
>>696461
Съеби отсюда, дебил. И свою лабу забери нахуй. За тебя её делать никто не будет. Чтобы не осилить open() и read() это надо постараться. Если бы ты наработки принёс, то тогда можно было бы поговорить, помочь и поправить, а так иди нахуй просто.
267 1696539
>>696454
>>696432
>>696523
Ладно, чел, извиняй. Думаю, оба были не правы.
Пригорел ты конкретно, конечно, но вот развешивать ярлыки не стоит.

Хрен с ним с кодом, возможно бы справился и со словесным описанием алгоритма.

Можно прочитать содержимое файла посимвольно, через fgetc, пока не встретишь \n но это будет долго.

Функция fgets читает символы, пока не встретит \n или конец файла.
"В случае успешного чтения строки, возвращается указатель на массив, в который помещены считанные данные (возвращается аргумент s)."
Можно прикрутить счётчик и на каждый инкремент копировать указатель на массив, возвращаемый функцией, через strcpy в нужные массивы?
268 1696608
>>696539
fgets() бери. Только это говно должно записать ещё и ньюлайн, так что на место ньюлайна просто ставь '\0'.
Вместо ЕОФа оно тебе сам нуль захуярит.
269 1696613
>>696539
Тебе нужно просто два раза подряд вызвать fgets с двумя разными массивами в аргументе.
fgets(arr1, 64, file);
fgets(arr2, 64, file);
270 1696760
Ребят, хелп. Вот, допустим, у меня есть массив структур:
struct information
{
char name[LEN_NAME + 1];
char manufacturer[LEN_MANUFACTURER + 1];
unsigned cost;
unsigned amount
} good[LEN_STRUCT];

Как этот массив передать в функцию по указателю? Если написать
func(good); (обычный массив, по идее)
то компилятор ругается: "использование имени типа не допускается"
271 1696804
>>696760
А прототип у твоей функции какой?
272 1696812
>>696804
int func(struct information *goods[100]);
273 1696816
>>696812
Так у тебя прототип неправильный. Ты либо ссылку оставь, либо массив.
274 1696818
>>696816
Так массив и так всегда как ссылка передаётся
275 1696820
>>696818
Так у тебя и получается, что передаётся ссылка на ссылку указатель на указатель, конечно, но в с всё равно ссылок нет, так что покс
276 1696824
>>696760

> массив структур:


Скорее структура массивов))
277 1696825
>>696820
А как правильно? Прост я всегда, если у меня массив был a[5], передавал в функции как func(a), прототип - func(a[5])
278 1696826
>>696825
А сейчас откуда * взялась?
279 1696831
>>680461 (OP)
Кому в 2к20 может понадобится Си?
Только байтаёбам разве что, которые пишут прошивки для мк за еду, и то, даже оттудова его скоро вытеснят плюсы.
Зачем его учить нормальным людям сейчас?
280 1696833
>>696826
А нет, ошибочка, я писал по памяти пост, у меня всё-таки у меня там struct information goods[100]
281 1696835
>>696831
Что тебе нужно в это треде?
282 1696839
>>696833
Делай, короче, через тайпдефы. Ничего хорошего у тебя из быстрого-прототипирования-на-коленке не выходит всё равно.
283 1696840
>>696835
Понять зачем нужен Си.
284 1696841
>>696835
Узнать, в чём космический смысл учить Си.
Программирование ведь учат ради того, чтобы зарабатывать бабки, а не джаст фор лулз.
Вот мне и интересно узнать у людей, зачем они выучили Си.
285 1696843
>>696839
Так я так и сделал
286 1696845
>>696840
Ты же уже сказал, что не нужен.

>>696841
Не лучше ли что-то полезное узнать, чтобы зарабатывать бабки?
287 1696846
>>696539

>Ладно, чел, извиняй. Думаю, оба были не правы.


>Пригорел ты конкретно, конечно, но вот развешивать ярлыки не стоит.


>



Лоол, ну реально задают вопрос из экзамена уровня хлебушка, ты отвечаешь. Збс.
288 1696847
>>696843
А теперь сравни со своим первым постом.
289 1696855
>>696841

>Узнать, в чём космический смысл учить Си.


погугли
290 1696856
>>696847
Ну, у меня на второй пикче эта ошибка подчёркивается
291 1696862
>>696856
Я про то что ты тайпдеф проебал. Как тебе помогать вообще, если ты изтрёх постов с кодом в двух ошибся? Переспрашивать тебя каждый раз, точно ли ты то скопировал?
292 1696866
>>696862
Не, ну окей, я думал, он не так важен для понимания проблемы. Но скрины-то точно иллюстрируют проблему
293 1696871
>>696866
В первом посте good было названием массива, а на скриншоте good — название типа.
294 1696874
>>696841

>Узнать, в чём космический смысл учить Си.


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

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


Тебе ничего не мешает знать несколько языков. Как для того чтобы зарабатывать бабки, так и для души.
изображение.png74 Кб, 1431x792
295 1696896
296 1696945
>>696874

> который можно полностью объять разумом



В котором ~200 прекрасно документированных способов прострелить себе ногу, см. https://gist.github.com/Earnestly/7c903f481ff9d29a3dd1

Чем больше погружаюсь в эту волосатую кроличью нору, тем больше я понимаю, что зря мы всем миром хоронили Дельфы. Кроме более компактного синтаксиса, всё остальное в Си, кажется, сосёт. Как будто весь язык создан, чтобы в каждой функции было удобно писать в регистры или показывать фокусы с двоичной арифметикой на флоатах. Простой код для Си слишком плебейский.
297 1696954
>>696945
Делфи конкурент скорее С++, там не просто ООП, а две несовместимых объектных системы (class и object), есть исключения. Идеи делфей развились в C# с уходом главного разработчика в микрософт.
298 1696975
>>696945

> ~200 прекрасно документированных способов прострелить себе ногу


Пролистал список, автор не отличает unspecified от undefined. При этом большая часть списка либо очевидна сразу, либо становится очевидна после прочтения пятой главы стандарта (там рассказывают про абстрактную машину, для которой ты на сишке пишешь). Остаются только всякие мелочи со стандартной библиотекой, которые действительно нужно исправлять.
299 1696979
>>696954
Ну, не Дельфы так Паскаль. Просто ощущается, что между Си и Крестами не хватает среднего звена: компилируемого языка без UB и дремучего синтаксиса, но с ассоциированными методами типов, дженериками и, наверное, управлением памяти через счетчик ссылок. Переход с Си на Кресты выглядит для новичка, как проститутка с плёткой и страпоном в подарок на совершеннолетие.
300 1697001
>>696975
Я понимаю, что автор привирает для разведения паники и там три четверти выглядит очевидно, но! Это все равно две сотни мин, на которые можно напороться в конце рабочего дня, когда в голове уже шум, а все мысли только о жрачке и сне. Это как заводы сто лет назад: везде капало горючее масло и крутились открытые шестерни, но в то время покалеченных рабочих можно было выкинуть на улицу. Сейчас за уязвимый и нерабочий код можно огрести штраф на сумму контракта.
301 1697035
>>696979
Такой язык просто не нужен. В 90-е на том некрожелезе (страшно подумать, у меня видюха быстрее самого быстрого суперкомпьютера из 90-х), был смысл экономить биты и не писать на Java либо C# тот софт, который писали на делфях. Сейчас же смысла вообще ноль.
А сейчас, где смысл есть, нужны профессионалы, а не новички.
302 1697083
>>697035
Лично мне нужна замена Си - простой язык, заточенный под системный софт и interop с языками более высокого уровня, но без ебли с совместимостью с 70-ми годами прошлого века. Есть куча штук типа zlib, libjpeg, libuv и прочего, в написании которых Си неудобен, а Кресты - оверкилл. Опять же, возвращаясь к Дельфам - сборка проекта в миллион строк без ебли с зависимостями - это, блядь, непередаваемо охуенно. Писать всякий FIND_HUI в CMakeLists я люто ненавижу, не говоря уже о том, что лечить сломанные зависимости на дркгом языке - пытка.
303 1697198
>>697083
Р..раст?
304 1697319
>>697035
С одной стороны ты прав. Я читал в бложике одного чувака, он как-то решил одну свою консольную тулзеньку питоновскую переписать на расте. Потом сравнил производительность, ну и короче выяснилось, что только через 35-40 лет использования эта разница в производительности отобьет время, которое он потратил на переписывание. Но с другой стороны, когда менюха в варкрафт рефордже тормозит сильнее, чем сама игра, а все потому что близарды решили сэкономить и наняли вебмакаку, которая написала меню на электроне, я начинаю думать, что индустрия заходит куда-то не туда. Железо становится все мощнее, а плохо написанный софт весь этот рост мощностей нивелирует.
305 1697320
>>697083

>CMake


Found your problem.
Нормальные люди наваливают пакеты под линью и не страдают.
306 1697332
>>696979
Пиши на си с классами и не еби мозг
307 1697333
>>697035
На шарпе можно писать приложения, которые будут менее производительнее аналогов на С/С++ только в случае если на сях/плюсах программу писал хороший специалист, что в случае этих языков большая редкость. Поэтому зря ты его рядом с жабапарашей ставишь.
308 1697365
>>697319
С утилитами на питоне-ноде проблема в том, что их неудобно разворачивать. Тебе помимо самой утилиты надо разворачивать среду для её запуска, вот это главная проблема, сложность.

Производительность... В подавляющем большинстве задач не актуально, у тебя просто в одном случае ресурсы железа используются на 10%, в другом случае на 1%. Есть ли реальный смысл экономить, вкладывая много труда?

Тебе нужно решить проблему, ты её решаешь. На ноде можно быстро разработать и запустить довольно сложное приложение, которых просто 20 лет назад не делали, точнее делали, но это были ОЧЕНЬ дорогие в разработке приложения. И всё равно с меньшими возможностями.
309 1697371
>>697333
Сорта говна. Да, шарп быстрее жабы, но все равно тормозное дерьмо. С нормальными прграммами сравнивать нелепо. Эта хрень годится только для одноразовых утилиток вроде скриптов, чтобы запустил раз, закрыл и забыл.
310 1697406
>>697371
Наиболее сложное ПО под винду сейчас на шарпе пишут.
311 1697417
>>697371

>Сорта говна. Да, шарп быстрее жабы, но все равно тормозное дерьмо



Скажи это игорям на Unity.
312 1697494
>>697417
Так в том числе про это он и говорит. Шарп не дает никаких преимуществ перед плюсами от слова совсем. Кодил много лет на С/С++/С#
У шарпа единственное преимущество, что его хорошо отрекламировали. Поэтому теперь, когда крупная фирма хочется взять прогеров на такой проект, где их нужно много, но предполагается сильная текучка кадров - вот там он заходит. Т.е. очевидный интерпрайз, для которого собственно он и был разработан как альтернатива яве.
313 1697557
>>697494

>не дает никаких преимуществ


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

>У шарпа единственное преимущество, что его хорошо отрекламировали


Сразу видно "много лет" кодящего и не следящего за обновлениями. Премущество шарпа в том, что его быстро и постоянно развивают, открой dev блог майков и посмотри на количество изменений которое внесли в C# с момента когда ты перестал на нём кодить.
314 1697574
>>697557
Зачем это говно в качестве "клея", когда есть какой-нибудь питон/лисп/ваш любимый язык нейм?

>Премущество шарпа в том, что его быстро и постоянно развивают


Твой до диез существовал хуй знает сколько лет до появления кора, если я не ошибаюсь лет 15, в итоге на сервере его попросту не было, по факту была штука для десктопа. Зачем теперь коре на сервере, когда есть джава, я даже не знаю. Короче активно развивали, но не туда.
315 1697608
>>697557

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


В том то и дело, что плюсы точно также. Да, если брать Си, то там уже есть проблемы, что новички в сложных проектах будут себе остреливать что-то. В плюсах этого нет.

> Премущество шарпа в том, что его быстро и постоянно развивают, открой dev блог майков и посмотри на количество изменений которое внесли в C# с момента когда ты перестал на нём кодить.


Я не переставал на нем кодит, писал же, что на всех трех работаю. Ну есть там частые обновления, что нормально для молодого языка. В других двух все устаканилось и выпускают раз в пару лет. Это вот вообще не показатель.
316 1697630
>>697557

> Премущество шарпа в том, что его быстро и постоянно развивают


А недостаток в ограниченной применимости - за пределами корпоративщины он нахуй не нужон, в том числе микрософту - даже Скайп они новый сделали на Электроне.
У Шарпа просто нет киллер-фич, ради которых стоило бы терпеть прожорливый рантайм и заточенность под экосистему шындовса. Даже у пет-проектов типа Зиги или Ви есть вау-эффект, а о Шарпе можно только унылую презентацию в паверпоинте сделать, на тему "чуть более лучше, но это не точно".

>>697608

> В плюсах этого нет.


Ой, не пизди, пожалуйста. Новичок может получить контузию, попытавшись осмыслить какую-нибудь хуету на Бусте.
317 1697697
>>697608

>молодого языка


>язык появился в 2000, на 5 лет позже жавы


В голос.
>>697630

>даже Скайп они новый сделали на Электроне.



Скайп на электроне появился еще до .NET Core, и другой возможности сделать кроссплатформенное приложение тогда не было. И появится она только через пару месяцев, сейчас инструмент (.NET MAUI) для создания таких приложений находится на стадии превью.
Вот именно это называется "не стоит на месте и развивается", они повернулись лицом к опенсорсу, они делают упор на нужные вещи.
Да 2 года назад шарп был всего лишь альтернативой Java, но сейчас эта жаба даже и рядом не стоит.
318 1697716
>>697697
Ты треплешь как маркетолох рекламный, который программ не писал. Кому нужен язык, на котором сегодня пишешь, а завтра он уже устарел, наклепали нового. Это параша рака самая настоящая, типичное скриптовое вебговно. Зачем это дерьмо в ситреде? Иди толсти в другом месте, свинья.
319 1697719
>>697333

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


Насколько же петушиная манипуляция, не могу предоставить аргументы - выдумаю статистику.
320 1697830
>>697697

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


И тут мы понимаем, что знаем дотнет лучше его евангелиста.
321 1697866
>>697719
Тебе аргументы нужны для осознания того, что более сложный инструмент требует больших навыков от того кто им пользуется, и чем больше этих требований, тем меньше будет хороших специалистов для конкретного инструмента? Это очевидно для всех кроме тебя.
>>697830
И тут ты называешь замену электрону, которую можно также скомпилировать один раз и запускать в любой системе.
322 1697876
>>697866

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


Электрон так не работает?
323 1697942
>>697866

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


Слово из семи букв. Угадаешь, или будешь крутить барабан?

Но какая разница? Javafx уже 12 лет, Swing-у уже больше 20 лет. Кроссплатформенными они были с самого начала, но за всё время я так и не видел сколько-нибудь популярного софта на их основе.

Кмк, тут ещё играет роль самомнение программистов: качество софта на манагед языках ограничено сверху, сделать супер-быстро и супер-круто на них не получится. Вряд ли кто на досуге хочет писать сразу говно. Наверное, исключение в виде Электрона держится потому, что писать под него - это типа паралимпиады и проходит по статье расходов на дайверсити.
324 1697954
>>697866

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


Опять петушиная хуйня. Если убрать все петушение, у тебя написано: "по-моему, С++ более сложный для написания более быстрого софта".
Что, конечно же, неправда. С++ более сложный язык, но ровно потому, что в нем zero overhead абстракции везде, и писать более быстрый код на нем проще.
325 1697965
Возвращаясь к сабжу. Аноны, сволочи вы - я спрашивал про simd в сишечке, и никто мне не сказал про gcc/clang vector extensions, никто. А ведь оно почти что решение всех моих проблем :(
sage 326 1698182
>>697954

> zero overhead абстракции везде


> писать более быстрый код на нем проще


Так может говорить только человек, никогда не видевший, как в дизасме сишная строка конвертируется в std::string, которая конвертируется в QString, которая передается в функцию, которая делает из строки QByteArray, у которого просят data() с изначальной, блять, сишной строкой. Три ебаных страницы преобразований, чтобы сделать НИХУЯ. И это в крестах повсюду.
327 1698280
>>698182
А ещё эта самая нулевая стоимость абстракций выглядит насмешкой, когда у тебя ассемблерный код короче, чем определение хитровыебанного итератора.
328 1698305
>>696874

>охуенный лаконичный язык в котором нет ничего лишнего


А при чём здесь Питон??
329 1698311
>>698182
Да, я такого никогда не видел, потому что ты это придумал только что.
330 1698503
>>696874
Расскажи это опенсорс сообществу.
331 1698606
>>698305
Ни при чём.
Из скриптовых лаконичный ничего лишнего это Lua.
332 1698610
c++ тред утонул, кажется, спрошу здесь.

Где почитать про смысл троеточия в дефайне? Я нашёл про # и про ##, но про ... ничего нет почти, mingw выдаёт "operand of fold expression has no unexpanded parameter packs" когда я пытаюсь что-то с многоточием сделать - но эта ошибка со скопированным текстом почти даже не гуглится, а все ссылки которые есть ниже про темплейты плюсовые.

В идеале мне нужно ker(1,2,asd) превратить в <1] <2] <asd], то есть обернуть каждый из параметров в говно и убрать запятые, количество параметров заранее неизвестно и это должно быть кодом, а на текстом.
Это возможно как-то хотя бы?
333 1698611
>>698182

>QString


>в крестах


Кутэ - не кресты, а левый парашный DSL для тормозной говнопараши. Считай это аналогом джаваскрипта, не ошибешься в главном.
334 1698613
>>698610
Почитай главу C Primer Plus про препроцессор.
335 1698632
>>698610

> В идеале мне нужно ker(1,2,asd) превратить в <1] <2] <asd], то есть обернуть каждый из параметров в говно


Нееш... Не делай так, возьми внешний кодогенератор, если собираешься собирать выражения по кускам. Но ты можешь, конечно, сделать так: https://ideone.com/F5ANke

> Где почитать про смысл троеточия в дефайне?


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

> #, ##


# преобразует аргумент макроса в строку. ## склеивает два токена в один (иногда).
336 1698720
>>697942

>Наверное, исключение в виде Электрона держится потому, что писать под него - это типа паралимпиады


>му-хрю нинужна


Мелкомягкие написали на элекиютроне иде vscode, которая охуенна.
337 1698807
>>698720

>vscode, которая охуенна


дело вкуса, лично тебе может и нравится
338 1698987
Есть инфа, почему в единственном божественном и незаменимом Си нет такой нативной реализации работы с бинарными файлами, чтоб не доебаться было? implementation independent типы не зашиты, а в определены в stdint.h, packed-структуры вообще нестандартная, а endianness, того хуже, или руками конвертируй, или сетевую библиотеку тащи (htons/ntohs/htonl/ntohl)? Не дай Боже мне вас троллить. Си люблю и обожаю, обязан ему формированием своей кодерской личности. Просто я действительно не вполне понимаю. Одни догадки. Дискасс.
339 1699011
>>698987
А как можно получить нативность в языке программирования без всяких там байтовых машин, если разные аппараты использовали разные порядки?
мимо-нюфак
340 1699044
>>699011
Я не об этом. Я прекрасно понимаю, что типы первого порядка таковы, чтоб их реализация на ассемблере под архитектуру была самой прямолинейной. Но почему в стандарт не завезут возможность не класть 14-байтовые структуры по 16-байтовой сетке? Как опцию? Чтоб можно было писать
typedef NiCeStAnDaRdDeFiNeDpAcKeDaTtRiB struct {
uint8_t sych_size_in_nm;
uint32_t erokha_size_in_nm;
} huetred_t;
huetred_t ∗borda = calloc(n, sizeof(huetred_t));
fread(huetred, sizeof(huetred_t), n, borda);
printf("%u\n", borda[7].eroha_size_in_nm);

а не
#define SZ_HUETRED 5
#define SYCH_SIZE_IN_NM(p) (∗(uint8_t∗)p)
#define EROHA_SIZE_IN_NM(p) (∗(uint32_t∗)((char∗)p+1))
#define HUETRED_BY_IDX(borda,idx) ((char∗)borda+idx∗SZ_HUETRED)
huetred_t ∗borda = calloc(n, SZ_HUETRED);
fread(huetred, SZHUETRED, n, borda);
printf("%u\n", EROHA_SIZE_IN_NM(HUETRED_BY_IDX(borda, 7)));

Если где-то опечатался, не обессудь.
341 1699046
>>698987
Так исторически сложилось - Си изначально разрабатывали под машину PDP-7 с 18-битным словом, на байты индустрия окончательно перешла только в 80-е. То, что в C99 для типов отдельный хидер - дань совместимости со всяким архаичным говном.
342 1699048
>>699044

>uint32_t eroha_size_in_nm;


>fread(borda, sizeof(huetred_t), n, fborda)


>fread(borda, SZ_HUETRED, n, fborda)


конечно же
343 1699050
>>699046

>дань совместимости


так пусть просто сделают не хэдер, а keyword-ы ...8/16/32/64t зашьют, МНЕ ТАК ПРИЯТНЕЕ БУДЕТ)
344 1699052
>>699044

>void ∗borda = calloc(n, SZ_HUETRED);


еще один фикс
345 1699057
>>699050
В то время у всех уже были свои кейворды под типы фиксированной ширины, чаще всего - разные по названию, всегда - зависиящие от компилятора. Вынесение стандартных кейвордов в хидер позволяло не ломать старый код. Насколько Си обратно совместим, я как-то увидел сам, скомпилировав древний Дристон 30-летней давности под современный микроконтроллер.
346 1699064
>>699044
По сетке всё кладется, потому что теоретически есть платформы, которые могут читать-писать только выровненные по слову данные. Если паковать всё по байтам, ты получишь штраф на доступ к полям - их придется выделять из слова сдвигами и and-ами - и нарушение атомарности доступа к словам. Короче, если знаешь, что делаешь - используй битовые поля или расширения компилятора.
347 1699108
>>699050
А ничего, что киворд станет ЗАРЕЗЕРВИРОВАННЫМ,
поэтому многое ПОЛОМАЕТ?
348 1699154
Лучше бы сделали параллельную ветку С, без необходимости в совместимости с абаками из 70х. Да есть куча либ, которые сразу так просто не заведутся, но это поправимо.
Просто современный С, куча бы народу перешло. Rust вообще не то
349 1699183
>>699154
По-моему, Си не улучшают, т.к. сами стандартизаторы языка считают, что лучше б он сдох. Иначе трудно объяснить, почему в ни в C18, ни C20 нихуя нового нет. Тут уже впору говорить не об удобном Си, а о легковесном Расте.
350 1699198
>>699183
Потому что в С уже есть все, что нужно. Добавлять всякий синтаксический сахар никому не нужно. Также у них есть перед глазами пример С++, когда в язык пихают фичи и он превращается в кошмар.
351 1699218
>>699198
Беда C++ не в обилии фич, а в совместимости с C и вывертах шаблонов. Если бы Кресты использовали дженерики вместо шаблонов и будь у них более удачный синтаксис - была бы у народа к ним вечная любовь. А так, оба языка будто специально хотят выставить программиста дураком.
352 1699266
>>699064

> теоретически есть платформы, которые могут читать-писать только выровненные по слову данные


Почему теоретически? Есть ARM 32-битный, есть PowerPC, есть SSE в том же x86 со всеми его movaps.
353 1699619

> int * const ptr


Нахуя?
354 1699643
>>699619
Обычно нинужно. Например, чтобы намекнуть, что это указатель на единственную переменную типа int, а не на массив.
c.png17 Кб, 879x294
355 1699661
Есть два вектора каких-то ресурсов. Второй vecB хранит указатель на ресурс из vecA. Когда происходит изменение vecA, то, логично, происходит смещение всех указателей в vecB.
Как такое обыгрывают гуру?
Вижу два подхода:
1) для A использовать другой конетйнер - ассоциированный динамический массив, но это чуть ударит по скорости обхода всех элементов и времени обращения к конкретному элементу. Т.е. по сути вместо ссылки на элемент A будем хранить некий хеш-id, по которому будем обращаться.
2) Умные указатели:
хранить в каждом элементе A такой же динамический вектор на те элементы B, которые его используют, чтобы при каком-то изменении структуры A, элемент мог бы обратиться к нужным элементам B и перезаписать им указатели уже на новые элементы или просто занулить.
356 1699680
>>699057

> хидер



Лол какая мариванна тебя так научила транслитерировать слово "хедер", когда можно использовать русское "заголовок"?
357 1699682
>>699680
какая тебе разница как он говорит, его понимают - этого достаточно
если лично ты не понимаешь - это только твои проблемы
358 1699684
>>699682
kAa Ya LUblue kaDa mINiA PAnimAu taaK priYtno tbI HE pOversh
359 1699704
>>698987
Да потому что C это не про файлы. В софте мелких микроконтроллеров они крайне редко применяются. Зато код на них легко переносится.
360 1699707
А ты шутник.
361 1699709
>>699661
На элемент А может быть несколько ссылок из Б?
А обязан быть вектором?
362 1699711
>>699684
alo yoba eta ty!?
363 1699718
>>699709
Может, это просто ресурс. Банальный пример - это загруженная картинка.
Нет, можно заменить и другим контейнером, для этого в пункте 1 и описал, что замена на ассоциированный динамический массив. Но не хотелось бы сильно замедлять обход по ссылкам на следующие элементы и хранить единым блоком в памяти как в векторах.
364 1699731
>>699661
3) Глупые указатели: в каждый элемент А добавляем номер первого элемента B, который на него ссылается. В каждый элемент В добавляем номер следующего элемента B, который ссылается на тот же элемент А.
365 1699738
>>699731
интересный вариант.. наверное самый лучший пока что..
366 1699808
Что скажите про книгу "C для программистов" П. Дейтл и Х. Дейтл.?
изображение.png6 Кб, 451x151
367 1700303
>>698632
Мм, спасибо, то что нужно.

>Я хуй знаю, что еще с этим сделать.


Питоновский with краду.

Просто балуюсь, но вроде удобно получилось, почти как родные for или if - буду в своих проектах использовать. Осталось только порядок развернуть.
Там внутри if(...;true) где в первой секции создаются временные объекты, аналог __leave__ вызывается в их деструкторах. Ещё думал как сделать аналог as через дефайн или синтаксис типа with(c=a,b), но так и не придумал - впрочем, он не очень и нужен.
А ещё сейчас пришло в голову глядя на std::tuple, что возможно это можно чисто через шаблон сделать - я просто не очень по шаблонам, мягко говоря - и твой подход мне понятнее.
368 1701127
>>699731
А у этого подхода есть какой-то англоязычный термин?
369 1701157
>>701127
Вряд ли. Это просто список владельцев объекта. А индексы вместо указателей позволяют экономить место.
370 1701165
>>701157
Ну тут место не экономится, а скорость изменения. За счет такого подхода при изменении вектора А, нужно только изменить его самого и в одном элементе вектора B изменить указатель. Но если все хранить в А, тогда надо менять всех владельцев, ссылавшихся на А.
371 1701180
>>701165
А, ну это называется indirection :)
372 1702324
Какой IPC между ядром и юзерспейсом самый быстрый в Линуксе? Расшаренный буфер - это и ежу понятно, а как насчет коротких сообщений? Сигналы покатят?
373 1702450
>>702324
Ты толстишь или просто почву в треде так прощупываешь?
374 1702630
375 1702632
376 1702636
>>702632
Вангую примерно об этом был спор двух старых пездюков линуса и таненбаума.
Если ты пилишь микроядро, архитектурно дрова будут общатся с ядром и юзерспейсом сообщениями, а такая абстракция почти наверняка предполагает расшаренные буфера.
377 1702650
>>702450
В чем проблема моего вопроса, лолват? Ядро Линукса написано на Си, я думаю, здесь есть аноны, которые шарят в системном программировании в среде Линукса.
378 1702703
Блять, ебал я ваши указатели на указатели на указатели
379 1702747
>>702324

>Какой IPC между ядром и юзерспейсом самый быстрый в Линуксе



ioctl+device file i/o

Другого нет.
380 1702749
>>680461 (OP)
Как засунуть .dll внутрь Portable EXE?

Чтобы был один цельный екзешник, и чтобы он не просил dll-ку,
чтобы её не надо было закидывать рядом, а чтобы она была внутри его кода?

Слышал про какие-то .rc-файлы, где dll-файл можно в виде resource как-то привинтить,
но чёт не пойму нифига.
381 1702767
>>702749
STATIC LINKING
382 1702775
>>702324

> IPC между ядром и юзерспейсом


IPC --> между процессами
Между процессами оче здорово работают пипы.

> Сигналы покатят?


Не используй сигналы для этого.
383 1702783
>>680461 (OP)
Аноны, какой тулзой собирать проект из нескольких .so? Раньше вполне устраивал make, но вот решил замахнуться на что-то по-больше и этот самый make уже порядком заёбывает, так как каждая либа собирается со своим собственным набором флагов в собственных директориях. Если все за Cmake, то где можно почитать про написание своих сценариев, где всё по-нормальному разъжёвывается?
384 1702786
>>702783

Если шариш lua есть охуительный premake

Если долбишь петон есть scons
385 1702827
>>702783
gyp -> ninja?
386 1703132

>int short int или даже char


это мамкино оптимизаторство?
387 1703137
>>702749
Удваиваю вопрос. Самому пришлось ебацца с ентими .rc, тот еще опыт...
388 1703174
>>703132

2 случая

Или ты черпаешь структурой заранее известные бинарные данные из файла не проебав при этом оконечность или ты оптимизируешь под килобайты оперативы (мк/8 бит компы), в остальных случаях ты получишь невыровненный доступ.
389 1703211
>>702324

> Inter process communication


> между ядром и юзерспейсом


> в Линуксе


Лол...
390 1703231
>>703132

Борщехлеб: int a[10000000];

Синьор: unsigned char a[10000000L];
391 1703321
>>703211
А ты не знал, что процессы в пространстве ядра могут обмениваться данными с процессами, которые исполняются в пространстве пользователя? Это троллинг такой или что?
392 1703440
>>702636
Если ты пилишь микроядро, дрова у тебя будут примерно сбоку.
https://yarchive.net/comp/linux/kernel.html
393 1703448
>>702749

> Как засунуть .dll внутрь Portable EXE?


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

> где dll-файл можно в виде resource как-то привинтить


Вот так можно, но это тоже не беспроблемный костыль. Пишешь name RCDATA "mydll.dll" в .rc, компилируешь rc/windres filename.rc, с полученным filename.res/.o линкуешься. При старте делаешь FindResource/LoadResource/CreateFile куда-нибудь во временную директорию/WriteFile данных из ресурса, грузишь LoadLibrary, получаешь указатели на функции GetProcAddress. Никакого связывания через таблицу импортов, конечно же, иначе твоя программа просто не запустится.
394 1703455
>>703321
Анончик, откуда ты возьмеш процесс (поток) ядра?
Ты драйверописатель?
395 1703507
>>703321

>процессы в пространстве ядра


Какие процессы нах, есть треды ядра, в которых делают copy_to_user, copy_from_user.
396 1703510
>>703455
Из API операционной системы. Это же основы синхронизации потоков. Мьютексы и Семафоры на этом строятся.
397 1703603
Где прочитать про стандартные вещи, типа оборачивания кода в хедерах во что-то наподобие
#ifndef %HEADERNAME%_H
#define %HEADERNAME%_H
...
#endif / %HEADERNAME%_H /
? Про всякие распространенные в использовании вещи, типа make, и паттернов, наподобие вышепредставленного, и зачем они вообще нужны?
398 1703663
>>703603
В прате есть.
399 1703715
>>703663
Спасибо.
400 1703985
>>703321
Это называется I/O, маня, а не IPC.
401 1704052
>>703510
Все с тобой понятно.
402 1704224
>>703985
Нет, Маня, это IPC. Почитай про те же netlink sockets и не выебывайся, если ты не шаришь в этом.
14297873859250.jpg31 Кб, 600x450
403 1704476
Подскажите, плез.

Описание по ссылке.

Вкратце: функция принимает uint8_t звёздочка. А надо подсунуть массив char.

https://pastebin.com/wstdHFRZ
404 1704523
>>704476
Твоя функция обёртка получает те же типы данных, что и обёртываемая? Какой в ней смысл тогда? Что она делает?
405 1704526
>>704476
(void *)recvbuf должно бы работать.
Ты где-то еще проебался.
406 1704528
>>704523
В обёртке ещё пара вспомогательных функций запихано. Они не относятся к обёртываемой функции.

Разве изменение типов принимаемых аргументов функции-обёртки поможет?
изображение.png28 Кб, 1276x462
407 1704531
>>704476
Берёшь и без задней мысли всовываешь.
408 1704542
>>704224

> пук среньк, иди почитай


Ясно.
i432.png5 Кб, 612x90
409 1704550
Почему появляется данная ошибка? Пофиксил заменив sizeof на 8, но все же интересно.
410 1704553
>>704531
При подстановке напрямую варнинг: pointer targets in passing argument 2 of 't_data_recieve' differ in signedness [-Wpointer-sign]

При касте (void *) ошибок нет, но в терминале мусор.

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

Если что - прилечу на жопной тяге.
411 1704558
>>704550
(sizeof(insigned long)) потом умножение
412 1704560
>>704550
А stdio подключил? Или пути не правильные.
изображение.png38 Кб, 1248x521
413 1704573
>>704553
Тогда так. Почти без задней мысли.
414 1704575
>>704550
Не используй sizeof в выражениях, которые вычисляет препроцессор, он не умеет:
#if sizeof(int)==4
415 1704584
>>704575
Обычно CMAKE вычисляет sizeof и создаёт директиву препроцессора типа SIZEOF_INT
мимопроходил из крестотреда
i734.png4 Кб, 474x113
416 1704610
>>704575
>>704560
Код не мой, это qemu https://www.qemu.org/ .
Просто обычно он у меня без проблем компилировался, это на дебиан пересел сейчас, после чего появилась эта ошибка. Видимо от компилятора тоже зависит, может здесь gcc староват 8.3.
417 1704637
>>704542
обосрался - обтекай :-)
418 1705243
А #define RAZMERCHIQUE_H sizeof(H)
тоже мамкино оптимизаторство? Ведь компилятор же просто sizeof() на препроцессировании хуйнёт заместо макроса.
И по поводу дейта элайнмент, я сделал правильный вывод, что все примитивы желательно подстраивать под машинное слово, ну или в х64 использовать хотя бы 4 байта?
алсо такая хуйня возникает из-за того, что ЦПУ быстрее высчитывает адреса посредством битового сдвига, верно же?
419 1705308
>>705243

>тоже мамкино оптимизаторство


Да. Иногда улучает читаемость.

>дейта элайнмент


Значения указателей должны быть выравнены:
char buf[100];
int p = (int )buf <--------- ГРОБ ГРОБ КЛАДБИЩЕ

>все примитивы желательно подстраивать под машинное слово


Желательно использовать int, в среднем по больнице он быстрее других типов или требует меньше кода.

>ЦПУ быстрее высчитывает адреса посредством битового сдвига


Нет. Не путай с выражениями a, там компилятор всунет умножение, если sizeof(*a) не степень двойки.
420 1705522
>>704573
Это снова я.

Нет, чувак, массив char - выходной буфер, в него пишутся данные: в моём случае я по логическому анализатору вижу, что говно на другом конце проводов отправляет верные данные в виде ASCII символов в HEX формате (байты).

Т.е. отправляется, например, 00031 = 30 30 30 33 31.
А на принимающей стороне вместо этого выводится мусор, типа левых символов.

Сейчас полазию по либе.
https://pastebin.com/5UTeM6mH

Отправить, сука, получилось - а принять - борода.
421 1705546
>>705522
Зря функция ввода не возвращает число байт или признак ошибки.
hsspiHandle инициализован?
422 1705574
>>705546

>hsspiHandle инициализован?


Да.
2020-05-28-135445436x59scrot.png2 Кб, 436x59
423 1705586
Почему пикрелейтед условия выдают разные результаты? Логика же одинаковая, просто записано по-разному.
424 1705620
>>705586
Не одинаковая верхнее проверяет только первый бит, при чем он может быть равен единице только если i = 0, при всех остальных i верхнее условие гарантировано не выполняется. Чтобы они были равноценны нужно как минимум ==1 заменить на > 0 и !=1 на ==0. Может еще что поправить, лень вглядываться.
425 1706012
>>705522
Просто на всякий случай спрошу. Ты понимаешь как работает SPI и то, что приёмник и передатчик выталкивают друг у друга данные из буферов и по кругу их гоняют?

Походу у тебя проблема не с типами. Замени char recvbuf[129]; на uint8_t recvbuf[129]; и всё делов-то, а потом обрабатывай и кастуй этот массив как хочешь после приёма.
Скорей всего у тебя проблемы с настройкой модуля SPI или с алгоритмом работы. Ты можешь с уверенностью сказать, что настройки модуля и алгоритм работы реализованы корректно?
la.png26 Кб, 1107x397
426 1706389
>>706012

>Ты понимаешь как работает SPI


Честно - не очень. Не беспокоит до тех пор, пока работает.

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


У меня две SPI шины - одна на 10 МГц, другая на 30 МГц. Обе имеют одинаковые настройки, за исключением скорости, и используют те же функции для отправки и приёма, разделённые spicarrier. так вот, на низкоскоростной висит несколько микросхем - с ними всё нормально.

У слейва на скоростной шине я отключил приём и оставил только передачу. Скрин с анализатора, слейв шлёт корректно.

Да алгоритм, вроде, немудрёный:
1) Мастер шлёт данные каждые 100мс, проверяя флаг от прерывания на чтение;
2) получил мастер прерывание, сперва чтение, потом передача;
3) го ту п1.
427 1706436
>>705308

>char buf[100];


>int p = (int )buf <--------- ГРОБ ГРОБ КЛАДБИЩЕ


Почему?
428 1706442
>>706436
(там звездочки после инт были, двач их съел)
Потому что адрес char buf[] может быть невыравненным для инта.
На x86 работать будет, но медленнее.
429 1706444
>>706442

>(там звездочки после инт были, двач их съел)


А ну ок, не догодался чёт.
430 1706507
>>705308

>Нет. Не путай с выражениями a, там компилятор всунет умножение, если sizeof(*a) не степень двойки.


Так и вы вроде также говорите. Если размер - степень двойки, то вычисление адреса происходит через логический сдвиг влево shr, иначе через слоупочную mul.
431 1706510
>>706507

>shl


разумеется
432 1707341
>>706507

> через слоупочную mul


Не такая уж она и слоупочная, latency три такта, и ту можно скрыть, считая в это время что-то другое. Алсо, вычисления адреса часто делается через цепочку add и lea, это тоже относительно быстро.

>>705243

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


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

Выравненные данные от этих проблем избавлены, потому что и границы блоков кэша, и границы страниц - все это выравнено сильнее, чем может быть необходимо процессору. Например, кэшлайн 64 байта, а максимум, что хочет процессор с AVX - это 32 байта для всяких там vmovaps.
433 1707679
C++ тред 111-й у кого-нибудь открывается?
https://2ch.hk/pr/res/1693081.html (М)
434 1707687
>>707679
Да.
435 1707691
>>707679
почисти куки вилкой
436 1707934
А как адекватно оценить количество адресов в условном void(две звездочки)?
437 1707944
>>707934
Если в конце есть что нибудь вроде \0 в строках — то берёшь размер указателя и итерируешь пока не найдёшь конец.
Если нет — никак.
438 1708085
Как спасти мертвый код от гцц?
пробовал такое:
-O0 -fno-delete-dead-exceptions,
но он всё равно вырезает нахуй
439 1708167
>>708085
volatile
o
l
a
t
i
l
e
440 1708358
>>707691
Чистил editmyсookoй в хроме. Нихуя. ФФ открывает нормально.
sage 441 1708387
>>708358
Там скорее надо не куки чистить, а localStorage. В консоле браузера скажи localStorage.clear() или, если жалко закладки и отметки постов, десериализуй localStorage.store из жсона, удали оттуда кэши всякие, сериализуй и запиши обратно.
442 1709521
idiv на asm медленней чем div() функция? Мне нужно разделить int и получить ответ с остатком. Делал через % и / операторы и через div() функцию. Потом прочитал, что idiv инструкция делает тоже самое. Написал asm код, но в итоге он получился медленней чем div() функция и почти в 3 раза медленней чем % и /. Так и должно быть?
443 1709527
>>709521

>Так и должно быть?


В теории - нет, на практике - да. Суть в том, что компилятор не знает, что происходит в asm-коде, так что сохраняет переменные из регистров в память, а после - обратно.
444 1709577
Здравствуйте уважаемые.
Не знаю куда обратиться, думаю что здесь самое то.
В midnight commander, mcedit, некорректно отображает подсветку синтаксиса.
Именно что некорректно, а не выключена.
Например:
В самом конфигурационном файле Syntax, есть include c.syntax, в котором, например, int обозначен как yellow, но все что должно быть жёлтым или коричневым - белое.
445 1709603
>>708085
Сделай статик ссылку на функцию/класс.
446 1709704
>>709521
Если у тебя было x=c/10,y=c%10, то кунпелятор это заменит на одно умножение.
div() не эквивалентна паре x/y, x%y, если x<0 || y<0
Ассемблер сразу нахуй, пиши портабельный код.
447 1709781
Насколько сложно делать формальную верификацию кода на Си? К примеру, недавно появился F* язык fstar, ориентированный на написание формально верифицированных программ. Неужели на голом Си это сложнее? Я в этом не разбираюсь, поэтому спросил.
448 1709807
>>709527

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


Вот кстати получил БИНАРНОЕ ДЕРЕВО с этой хуйни.
Им(конпеляторам) Родина дала более оптимальный апи64, юзай регистры сразу - не хочу, хочу из пустого в порожнее переливать.
449 1709924
>>709807
А, кстати, забыл сказать ещё одну возможную причину. Учитывай, что компилятор может оптимизировать деление и остаток в более дешёвые битовые операции.

>Родина дала более оптимальный апи64


Ты про registercall?
c2RlbGFub3VuYXMucnUvdXBsb2Fkcy81LzcvNTcxMTU5MDk5NjA0Nl9vcml[...].jpg49 Кб, 537x318
450 1710224
>>680461 (OP)
http://ftp.altlinux.org/pub/people/mike/elbrus/docs/elbrus_prog/html/

На сайте АО «МЦСТ» появилась новость о доступности руководства по эффективному программированию на платформе Эльбрус; в нём также содержится глава с описанием системы команд «Эльбрус», ранее не публиковавшейся. Книга выпущена под лицензией Creative Commons (CC-BY 4.0) в форматах HTML (архив) и PDF;
451 1710246
>>710224

>Эльбрус


>эффективное программирование


/0
452 1710254
>>710246
Тактическое врети?
453 1710256
>>710224

> глава с описанием системы команд «Эльбрус»


Значит, можно написать свой компилятор? GCC или Clang сможет портироваться на эльбрус взамен их проприетарного поделия?
454 1710379
>>709924

>Ты про registercall?


угу. не понимаю, почему нельзя сразу с регистрами работать. даже если аргументов дохуя, то и "свободных" регистров в х64 тоже предостаточно.
455 1710410
>>710379

>даже если аргументов дохуя


Потому что их очень редко бывает дохуя. В конвенции вызовов x64 на винде передаются в регистрах до 4 целочисленных и 4 с плавающей запятой, в юнихах до 6 int и 8 fp. Этого более чем достаточно для большинства задач, т.к. при большем количестве параметров их обычно упаковывают в struct или объект, который в обычный регистр не влезет.

>то и "свободных" регистров в х64 тоже предостаточно


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

Вообще, одна из самых важных причин, почему нет - представь оверхед от сохранения всех этих переменных из регистров, если тебе из той функции нужно будет вызвать другую, да ещё и не с теми аргументами. А такое сплошь и рядом. Так что оставь это для узконаправленных компиляторов вроде icc, которые в это таки могут; а для компиляторов общего назначения общепринятая конвенция будет лучше в большистве случаев, и нет смысла их плодить, как былые 32-битные.
sage 456 1710606
>>710410

> который в обычный регистр не влезет


Поэтому структуры компилятор отлично раскладывает по нескольким регистрам. Алсо вы тут обсуждаете ABI, но забываете о том, что ABI - это внешний интерфейс. Если функция не торчит наружу, или если торчит, но код собирается с LTO, тогда компиляторы на эту ABI не смотрят и могут творить лютую дичь.
457 1710632
Есть ли в си единый оператор else if? Или это объединение двух операторов (else, if)?
sage 458 1710637
459 1710642
>>710637
Это директива
460 1710717
>>710632
А зачем тебе? Зачем множить сущности, если else if отлично работает?
461 1710783
>>710717
Исходник на 3*n байт длинее
462 1710805
#define elif else if
Как тебе такое, Илон Маск?
463 1710820

>программирование под Эльбрус


Нахуя, если весь их маркетинг уже пару лет строился на том что они эмулируют х86?
464 1710962
>>710254
Эльбрус = Itanium. Загугли два слова, если не знаешь: EPIC FAIL.
465 1710974
>>710962
Вот и всепросральщик ничегоненужный прибежал
lvhngmwzjvpif378cj77omw09k4.jpeg474 Кб, 2000x1125
466 1710975
467 1710984
468 1710988
>>710984
Хрю хрю
469 1710995
>>710974
Почему ничегоненужный? Нужный, но нахуя было делать ставку на дохлого коня? Пидораха - филиал Зазеркалья?
470 1711018
>>710995

>дохлого коня?


Чому? Дохлый конь это Интел и АМД
471 1711025
>>711018
Что, кроме МЦСТ никуда больше трудоустроиться не удалось?
Ты бы хоть залогинился или трип-код завёл, чтобы всем было удобнее.
472 1711032
>>711025
А ты чего так рвешься, перемога обернулась зрадой? Байкал вполне няшный, в отличии от дырявых буржуйских поделок.
473 1711035
>>711025
Ну это ты зря. Главная вувузела предыдущих итераций Эльбруса - Бабаян - в своё время сгребла своих толковых студентов в охапку и свалила в Интел. Эльбрус делает тебя успешным!
474 1711042
>>711035

>свалила в Интел


Карандаши точить?
475 1711050
>>711042
Кофе носить, мамкины съебаторы на большее не способны.
476 1711066
>>711032
Байкал - это и есть буржуйская поделка, готовые ядра MIPS и ARM со своим обвесом. Рашка в 90-е что-то там лицензировала для полного цикла производства - DEC Alpha, по-моему - но как обычно бабло освоила и нихуя не сделала.
477 1711071
>>711066

>бабло освоила и нихуя не сделала


Ох уж это либирашье вретии1111 Вы там сюда со Швабра набижали что ли?
478 1711077
>>711071

>Вы там сюда со Швабра набижали что ли?


Чего уж со Швабра, с Плеббита сразу.
479 1711081
>>711077

>Чего уж со Швабра


Более токсичного и русофобского ресурса чем Швабр я еще не встречал.
480 1711102
>>711077
А что за Плеббит? Оттуда можно скачать свежие русофобские методички?
481 1711110
>>711071
Нет, я агент США под прикрытием. Меня твоей мамаше внедрил лично Обама, от него у меня большой чорный хуй чтобы большой чорной струёй ссать в мытищинских подъездах. Но я его прячу в звёздно-полосатых трусах, так что не понимаю, как ты меня вычислил??
482 1711119
>>711071
https://ru.wikipedia.org/wiki/Baikal-T1

>Baikal-T1 — процессор семейства Baikal, созданный российской фаблесс компанией Baikal Electronics с использованием двух 32-битных процессорных ядер P5600 архитектуры MIPS32 Release 5 от компании Imagination Technologies[1].


https://en.wikipedia.org/wiki/Imagination_Technologies

>Imagination Technologies Group plc is a global semiconductor and software design company, owned by the Chinese Canyon Bridge Capital Partners. With its global headquarters in Hertfordshire, in the United Kingdom its primary business is in the design of PowerVR mobile graphics processors (GPUs), networking routers (based on MIPS CPUs),[3] and its Pure consumer electronics division.


Это, блядь, очевидно НЕ БУРЖУЙСКАЯ ПОДЕЛКА.

Кстати поясните нахуя МЦСТ свой ёбаный путь, когда, например, VIA делает процы на x86-x64? В чём суть?
483 1711125
>>710975
Проприетарщина не нужна.
sage 484 1711126
>>710975
Пять стадий:
1) Физлицам не продаем.
2) Нет компилятора.
3) Компилятор есть, но забагованный.
4) А документацию мы вам все равно не дадим.
5) Ебись оно конем.
485 1711128
>>711119

>Кстати поясните нахуя МЦСТ свой ёбаный путь


Потому что делать что-то толковое задача не стояла с самого начала - у МЦСТ уже были свои наработки, и кого волнует, что они говно. Они в этом не одиноки, между прочим - IBM уже ГОДЫ не может найти лохов, которые возьмутся оптимизировать всякую ебанину типа NumPy и FFMpeg под SIMD их POWER8.
486 1711130
>>711119

>Кстати поясните нахуя МЦСТ свой ёбаный путь, когда, например, VIA делает процы на x86-x64? В чём суть?


Вроде как в качестве отмазки говорили что-то про сертифицирование процессоров для нужд гос. структур. Для иностранных процов это дорого. Своё вроде-как дешевле.
487 1711132
>>711126
Да всё там есть, и компилятор, и документация. Смысла только нет.
esqg.jpg90 Кб, 800x600
488 1711136
>>711128

>делать что-то толковое задача не стояла с самого начала


>Частная компания


Ш т а ?
489 1711139
>>711126
>>711128
>>711130
Ну так подождите, пусть они хоть нормально развернутся. Я считаю это успех, после либирашьего пануванья Ельцина и Горбачева.
490 1711140
>>711132

>Смысла только нет.


Смысла нет в Украине, а в Эльбрусе есть.
491 1711147
>>711132
Компилятор проприетарный, документация неполная.
492 1711153
>>710256
Нет, документация скорее всего краткий обзор. Полезной инфы почти нет.
493 1711154
>>711119
Купили исходник, убедились, что там нет закладок. Хорошо же!
494 1711159
>>711154
Поделка-то чья?
495 1711166
>>711136
Весь IBM POWER держался на вывертах политики лицензирования Oracle с оплатой по числу процессорных сокетов. Пока можно было напихать больше всех ядер в один проц - всё у них было збс, сейчас x86 их по этому показателю обгоняет и малина накрылась. Такшта ничего толкового сейчас в этой архитектуре нет.
496 1711168
>>711159
Ядро буржуйское. А поделка в целом НАША, гречневая.
497 1711177
>>711119

>Кстати поясните нахуя МЦСТ свой ёбаный путь, когда, например, VIA делает процы на x86-x64? В чём суть?


Потому что хуй86 это легаси говно на легаси говне, и все ради того, чтобы запускать шиндошс. Выпускать RISC процессор на купленной архитектуре нормальное решение
498 1711183
>>711177
А блядь, про МЦСТ вопрос, я думал про байкал.
У МЦСТ свой путь из-за Бабаяна, он обещал дать всем посасать и перегнать всех со своим эльбрусом, а дальше как обычно это превратилось в эпический долгострой. При этом МЦСТ это московский центр спарк технологий, то есть еще одна лиценизуемая хуитка, SPARC
499 1711189
>>711177
Большая часть этого легаси - заморочки с кодированием инструкций и полей в специальных регистрах. Никого за пределами разработчиков ОС и компиляторов это не касается. В Интел сидят толковые разработчики - в 90-х было полно ебаной дичи типа load delay slot-ов и нерабочего register scoreboarding-а, но они такого не допускали.
500 1711206
>>711183
Я вот сейчас листаю патенты Babaian-а 20-летней давности, и оказывается, что современный Эльбрус на них и основан. Вот только дать посасать он может только Малинке предыдущих поколений, вот незадача. И да, я Спарк перепутал с Альфой, извините.
501 1711207
>>711189

>Никого за пределами разработчиков ОС и компиляторов это не касается.


А это ты зря. Выкрутасы с декодерами касались всех, кто хотел холодный и экономичный компутер. Говенный x87 касался всех, кому нужна была производительность с ПТ. Ну и т.д.
502 1711220
>>711207
Если посмотришь на другие архитектуры, почти у всех инструкции фиксированной ширины 4 байта, в то время как у x86 75% инструкций в 2-3 байта (данные от 2011 года). Когда 4КБ кэш инструкций считался большим, это был крутой выигрыш. С декодированием инструкций в середине 90х всё было збс, были процы Cyrix, которые делали это без микрокода, иногда быстрее самих Интелов. Вот x87 был неудачным решением - его, походу, с калькулятора срисовали.
503 1711231
>>711220
Да, у x86 компактный код, и это хорошо для кэша.
Да, декодеры ели большинство команд x86 без выборки микрокода.
Но, чтобы декодировать x86 в темпе 1-3 команды на такт, декодеры приходилось делать очень сложными, отсюда расход энергии.
504 1711237
>>711081
Швабр = Хабр?
Prescott90nmdietext1600x1200.jpg553 Кб, 1600x1200
505 1711250
>>711231
Знаешь, ты, наверное, прав - на фото выделен декодер на 4insn/cycle, чтобы выполнять 20, как сейчас, он, наверное, должен разожраться, как свинья. Ещё я бы отметил миллипиздрическое число регистров: если в 80-х это было оправдано - у ARM2 весь АЛУ выглядел, как насадка на блок регистров, то сейчас это явная лажа. А вот было ли это причиной фэйла Атомов для мобил я даже гадать не буду, знаний не хватает :(
507 1711292
>>710717
Просто интересно стало.
508 1711302
509 1713295
>>710805
Кстати, а можно как-то выборочно проэкспандить такую надмозговую хуету? Ну, чтоб адекватные макросы оставить.
510 1713298
>>711140
Вот зачем соль на рану сыпешь? Я всеми силами пытаюсь отвлечься от токсичных мыслей про эту клоунскую систему. Мне, блядь, повестке в этой ебучей Украине пришла. А я ебал терять работу.
511 1719228
>>711119

>Кстати поясните нахуя МЦСТ свой ёбаный путь, когда, например, VIA делает процы на x86-x64? В чём суть?



Потому что штеуд запретил навсегда лицензировать хуй86 кому бы то ни было еще кроме лизочки писечки и собственно via.

Если бы штеуд разрешал пилить х86 этим бы не то что МЦСТ этим бы 3/4 производителей чипов бы занимались шутка ли такое-то легаси.
Тред утонул или удален.
Это копия, сохраненная 27 сентября 2020 года.

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

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