C Programming Language #57 /clang/

 Аноним OP 08/05/20 Птн 02:36:13 #1 №1680461 
C Propaganda.jpg
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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. [email protected] "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)
Loading...
Аноним 08/05/20 Птн 05:45:26 #2 №1680491 
>>1680434 →
>а нужно ли читать кнута?

У Кнута очень специфичный стиль изложени, весьма дотошный. Самая топ книга - Кормен и Ко. Но если анальник в терминальной стадии - можешь и Кнута.
Аноним 08/05/20 Птн 05:54:38 #3 №1680493 
апну говнотред
Аноним 08/05/20 Птн 06:46:11 #4 №1680499 
>>1680491
Спасибо
Аноним 08/05/20 Птн 11:09:29 #5 №1680583 
Доброе утро, пердоли
Аноним 08/05/20 Птн 11:39:26 #6 №1680602 
>>1680491
Почему-то у меня ровно обратное впечатление.
мимо
Аноним 08/05/20 Птн 12:24:22 #7 №1680640 
>>1680452 →
>Именно Кнута необязательно, но что-нибудь по алгоритмам все равно почитай, Седжевика того же.
Двачую. Его Algorithms in C годная книга (ну или была ~10 лет назад, когда я её прочитал).
Аноним 08/05/20 Птн 13:50:07 #8 №1680748 
>>1680452 →
Я бы сказал так: сначала любая книга по алгоритмам, а потом, по мере необходимости, с интересующими темами точечно в Кнута, как в справочник.
Аноним 08/05/20 Птн 13:56:40 #9 №1680757 
Анон, в стандарте твердо и четко где-то прописан минимальный размер типов данных? Я не о соотношенях типа sizeof(char) <= sizeof(int) <= sizeof(long int), а именно о абсоютном размере типа (8бит или 16 и т.п.).
Диванные кукаретики в интернете и википедия пишут, например, что int - это как минимум 16 бит. Википедия ссылается на стандарт, но пруфов я там не нашел. Может в стандарте прописаны только минимальные и максимальные численные значения, которые должны вместиться в int, а собственно реальное количество бит для этого зависит строго от реализации может на каких-то числовых представлениях 65535 каким-то хуем может вместиться и не в 16-бит, хуй его знает, и википедия банально вводит в заблуждение?
Аноним 08/05/20 Птн 14:24:24 #10 №1680801 
>>1680757
> минимальный размер типов данных
Да, прописан. 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 описаны все разрешенные представления интов.
Аноним 08/05/20 Птн 14:54:22 #11 №1680832 
>>1680801
Мне это интересно сугубо в любознательных целях. Читал, что поехавшие на собеседованиях иногда доебываются до терминологии, что мол в стандарте описаны только минимальные численные значения, который должны поместиться в тип данных, но не минимальный размер типа в битах.
Но действительно, учитывая 6.2.6.2, один хуй это ничего не меняет.
Аноним 08/05/20 Птн 16:23:31 #12 №1680899 
>>1680461 (OP)
Стыдно признаться, но Прата более доходчево объясняет для ньюфага. КиР, конечно, заебись как прородители языка. Но непонятно для начинающих.
Аноним 08/05/20 Птн 16:26:20 #13 №1680904 
>>1680899
А чего стыдного-то? к&р написан для программистов, чтобы новый язык показать, а прата для вкатывальщиков. Всё так и должно работать.
Аноним 08/05/20 Птн 16:34:06 #14 №1680913 
>>1680904
Да то, что я пока КиР читал, пришлось шкрябать по всему интернету в поисках понимания тех или иных вещей. Зато стал понимать многие вещи, которых не знал.
Аноним 08/05/20 Птн 16:39:23 #15 №1680919 
Посоны, выручайте
Нужно решить олимпиадную задачу, используя перебор с возвратом.
https://pastebin.com/CsqvPBKQ
Как я понял нужно найти количество элементов в доминирующем множестве заданного графа. Но как реализовать вообще хз. Есть какие-то идеи?
Аноним 08/05/20 Птн 16:46:27 #16 №1680929 
>>1680904
Не должен быть си первым языком. Поэтому имбецильный прата и не нужен
Аноним 08/05/20 Птн 16:53:14 #17 №1680941 
>>1680929
Си отлично заходит первым языком. Первый язык совершенно не обязательно досконально изучать ведь.

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

Какие у тебя претензии к нему, как к первому языку? Какой ты предпочитаешь?
Аноним 08/05/20 Птн 17:07:45 #18 №1680979 
>>1680941
Я бы посоветовал классический бейсик с номерами строк. Он самый простой и вдобавок близкий к ассемблеру, к тому как компьютер работает на самом деле. Когда освоится со структурой кода - переходами goto, gosub, return, научится писать программы, тогда уже можно си, там с одной стороны уже чужеродные говно-абстракции в виде функций, но зато работа с памятью как положено.
Аноним 08/05/20 Птн 17:10:17 #19 №1680986 
>>1680979
Так, понятно, я ему всё расписал, а он троллякать пошёл.
Аноним 08/05/20 Птн 17:12:53 #20 №1680995 
>>1680986
Ну и зачем ты тролякаешь? Если нечего сказать не нужно пукать, надо молчать.
Аноним 08/05/20 Птн 17:16:21 #21 №1681007 
>>1680979
Уж лучше тогда Турбо Паскаль. Чтобы сразу понимать, что такое хорошая IDE.
Аноним 08/05/20 Птн 17:20:53 #22 №1681016 
Ну, например я вкатываюсь в Си и изучаю работу кода на примере линукса. Ведь так намного интереснее: учиться разбираться в работе своей системы.
Аноним 08/05/20 Птн 17:21:06 #23 №1681017 
>>1681007
Паскаль это то же самое что си, только деревянное. Можно учить и то и другое, разницы нет. Паскаль даже лучше, будет меньше тупых вопросов по синтаксису, а то в си можно одно и то же написать десятью способами. Для обучения программированию только мешает.
Аноним 08/05/20 Птн 17:22:30 #24 №1681022 
>>1681016
Да троллит он, си отличный язык для вкатывания.
Аноним 08/05/20 Птн 17:24:24 #25 №1681025 
>>1681022
Тем более здесь есть много чего надо довести до ума. Сразу цели намечаются, а не какое-то абстрактное изучение.
Аноним 08/05/20 Птн 17:27:06 #26 №1681033 
>>1681016
Разбираться можно где есть документация - на винде, там всё стандартизировано и документация божественная. А в линуксах куча рандомного говна и документации нет.
Аноним 08/05/20 Птн 17:32:38 #27 №1681054 
>>1681033
О, ты-то мне и нужен. Как мне добавить пробел в начало без перезаписи всего файла?
Аноним 08/05/20 Птн 17:47:00 #28 №1681102 
>>1680941
>Какие у тебя претензии к нему, как к первому языку? Какой ты предпочитаешь?
Первый язык должен давать максимальный фан и быстрые практические результаты. В свое время это был бейсик, сейчас питон какой-нибудь.
Аноним 08/05/20 Птн 17:48:51 #29 №1681108 
>>1681054
А ты мне не нужен, и скорее всего никому с такими загонами, только нахуй послать.
Аноним 08/05/20 Птн 17:49:46 #30 №1681110 
>>1681054
Файл - это отмеченные магнитной головкой байты на поверхности магнитного носителя. Как ты представляешь себе добавление символа или середину? Типа, ты вставляешь свой пробел, а остальные символы в ужасе двигаются в бок?
Аноним 08/05/20 Птн 17:53:09 #31 №1681116 
>>1681102
Не забывай, тут тред си, а не общий тред раздела. Питоны и прочие скрипты можешь в анус засунуть, или выкатывайся. Программирование в контексте си совсем не то что под этим словом подразумевают обычно.
Аноним 08/05/20 Птн 17:53:56 #32 №1681119 
>>1681108
Сложный вопрос что ли? Ну, ладно.

>>1681110
Какие головки, 50 лет уже всё через три абстракции.
Аноним 08/05/20 Птн 17:56:36 #33 №1681129 
>>1681116
Иди нахуй, шизик
Аноним 08/05/20 Птн 17:58:26 #34 №1681133 
>>1681102
Так си и даёт. Написал, скомпилировал, и вот у тебя уже исполняемый файл. Где лучше рузультаты? в скриптовых языках? Ну что такое скрипт? Это тебе нужен какой-то другой исполняемый файл, чтобы этот скрипт читать и выполнять, а что там в нём происходит? Непонятно. На каком языке он написан? Не на питоне. Ну и в чём интерес? Так можно и html себе первым языком выбрать, вот уже где самый быстрые практические результаты!
Аноним 08/05/20 Птн 18:00:47 #35 №1681140 
>>1681119
И что, от этого данные хранятся по-другому? Нет. В си это нельзя сделать, нужно пердолить руками конкретную файловую систнму.
Аноним 08/05/20 Птн 18:03:36 #36 №1681146 
>>1681140
>нужно пердолить руками конкретную файловую систнму
Ну так я его и задал специалисту по виндоусу.
Аноним 08/05/20 Птн 18:03:43 #37 №1681147 
external-content.duckduckgo.com.jpeg
>>1681119
>Какие головки, 50 лет уже всё через три абстракции.
Вот именно, абстракции "файл" уже больше 50 лет и она устроена даже не как дисковые накопители, а как пикрелейтед.
Аноним 08/05/20 Птн 18:04:43 #38 №1681152 
>>1681146
>специалисту по виндоусу.
Очень смешно
Аноним 08/05/20 Птн 18:07:23 #39 №1681161 
>>1681152
Мне теперь тоже.
Аноним 08/05/20 Птн 18:18:34 #40 №1681187 
>>1681161
Ну твой вопрос нерешаемый. Файлы хранятся как набор кластеров, смещения которых лежат в таблице ФС, поэтому в теории ты можешь дописать кластер (на пару килобайт) и переписать все записи в ФС, но добавить 1 символ нереально. Точно так же как в книгу ты можешь вклеить страницу, можешь вырвать страницу и вклеить новую, но добавить 1 символ - нет. Если тебе такое нужно, нужно делать внутри файла свою собственную ФС, как сделано в формате ворда doc. Но это технологии 80-х, сейчас любой файл проще переписать
Аноним 08/05/20 Птн 18:22:04 #41 №1681200 
>>1681187
Как кластер в начало добавить? Килобайты не жалко.
Аноним 08/05/20 Птн 18:33:47 #42 №1681235 
>>1681187
НТФС проблемы.
Аноним 08/05/20 Птн 18:43:45 #43 №1681258 
>>1681200
Он написал как, но ты прочитать не можешь, просто кукарекающий дебил, которому все должны.
Аноним 08/05/20 Птн 18:54:50 #44 №1681271 
>>1681258
Что? От чего ты такой агрессивный? Я же даже не у тебя спросил, судя по
>Он написал
Аноним 09/05/20 Суб 06:09:20 #45 №1681799 
>>1680832
Использование переменных с типами где указано количество бит (uint8/16/32_t) не решает эту проблему, чтобы не забивать себе голову этим?
Аноним 09/05/20 Суб 10:21:36 #46 №1681851 
Что полезного можно быстренько накидать на Си чтобы продать?
Аноним 09/05/20 Суб 10:38:38 #47 №1681856 
>>1681851
КриптоПро
Аноним 09/05/20 Суб 13:34:45 #48 №1681976 
>>1681799
> Использование переменных с типами где указано количество бит
Они опциональные, обязательны только least/fast/max, и это имеет смысл, потому что если у тебя 9-битовые char, ты никак не можешь сделать typedef unsigned char uint8_t, стандарт требует ровно 8 бит для uint8_t.
Аноним 09/05/20 Суб 13:55:47 #49 №1682008 
>>1680832
Там описаны отношения размеров типов между собой, причем не в виде коэфициента, а в виде сравнения >= <=, если мне память не изменяет. В зависимости от архитектуры абсолютные значения могут менятся, но отношения должны оставаться неизменными
Аноним 09/05/20 Суб 14:46:47 #50 №1682103 
Где код писать?
Аноним 09/05/20 Суб 15:23:04 #51 №1682132 
Анончики, есть проект со своим CMakeLists.txt
В нем несколько подпроектов тоже со своими CMakeLists.txt
И там и там есть options
Можно ли сделать так, чтобы опции подпроектов не отображались, когда пользователь запускает gui-шный вариант, но не меняя файлов зависимых подроектов? Могу менять только основной у проекта.
Аноним 09/05/20 Суб 16:44:36 #52 №1682206 
>>1681133
Двачую. Мимо-инженер.
Аноним 09/05/20 Суб 17:25:02 #53 №1682235 
>>1682103
CodeBlocks
Аноним 09/05/20 Суб 17:30:40 #54 №1682239 
>>1682103
Code blocks
Аноним 09/05/20 Суб 17:31:42 #55 №1682240 
>>1681851
Охранную систему с распознованием движения.
Аноним 09/05/20 Суб 17:52:51 #56 №1682258 
>>1682103
Code::Blocks
Аноним 09/05/20 Суб 18:08:27 #57 №1682263 
>>1682103
Code Blocks
Аноним 09/05/20 Суб 18:20:55 #58 №1682272 
>>1682103
Bode Clocks
Аноним 09/05/20 Суб 18:35:00 #59 №1682285 
>>1682103
На бумаге. Заебали.
Аноним 09/05/20 Суб 18:41:20 #60 №1682289 
>>1682272
Black Cocks
Аноним 09/05/20 Суб 19:10:02 #61 №1682312 
Пытаюсь компелировать в gcc, пишет
cannot find Scrt1.o
cannot find crti.o
Таких файлов у меня нет. Пишут что это потому что у меня установлен gcc только для 64, а скомпелировать он пытается в 32. Как скомпелировать?
target: x86_64-linux-gnu
gcc version 7.4.0
Аноним 09/05/20 Суб 19:19:11 #62 №1682317 
>>1682312
Нет, дело не в битности. Эти файлы - часть глибц (у некоторых glibc-devel). Как ты поставил умудрился поставить компилятор без глибц, демон? Попробуй поставить glibc-devel или сказать gcc -L/usr/lib. Не поможет - неси gcc -v filename.c, или сам смотри, где оно их ищет и не находит.
Аноним 09/05/20 Суб 20:37:24 #63 №1682422 
Закоренелый виндузятник на линии.
Заебался я пролистывать прату между главами, захотел разделить PDF по главам.
Ищу в Гугле split PDF windows 10.
Во первых, почти все они онлайн, во-вторых ставят вотермарки, в третьих те которые можно установить - бесят антивирус.
По совету Анона в предыдущих тредах, учу прату через wsl Debian.
Заебавшись найти простую сука прогу для PDF разделения, решил попробовать через wsl.
Скорее по приколу, ведь всем известно что в Линекс нужен пердолинг даже чтобы посмотреть число.
Установил pdftk. В командной строке набрал что нужно.
Хуяк.
Готово.
3 минуты.
Включая поиск в Гугле.
Ещё раз: 3 минуты. Просто. Без Троянов. Без ебли. Без зондов. Без говна. ОНО ПРОСТО РАБОТАЕТ, АНОН.
Сказать что я ПРИХУЕЛ, это ничего не сказать.
Естественно, что на Линукс я не готов перейти, я его ещё не понимаю. Но это просто пиздец, я в шоке.
Ты наверное будешь смеяться, но я реально заебался искать решение такой простой проблемы.
Аноним 09/05/20 Суб 20:52:10 #64 №1682438 
>>1682272
>>1682239
Честно говоря, я пишу в нано, пока не вижу надобности использовать инструмент, который на 99% мне не понятен.
Когда будет что-то сложнее хеллоуворда, тогда и перейду.
Аноним 09/05/20 Суб 23:36:16 #65 №1682648 
>>1682422
pdftkbuilder и на шин есть.
Аноним 10/05/20 Вск 00:05:28 #66 №1682670 
>>1682648
Я не проверял.
Факт в том, что я долго искал под шин и за 3 минуты нашел под дебиан.
Попробуй погуглить, и продаться сквозь тонну говна.
Аноним 10/05/20 Вск 00:36:52 #67 №1682691 
>>1682422
>Естественно, что на Линукс я не готов перейти, я его ещё не понимаю. Но это просто пиздец, я в шоке.
Детский лепет. Ты перейди на линукс, вот тогда узнаешь что такое настоящий пиздец и шок.
Аноним 10/05/20 Вск 00:50:09 #68 №1682702 
>>1682691
Детский лепет. Ты попробуй стать разработчиком и при этом НЕ перейти на линукс, вот тогда узнаешь что такое настоящий пиздец и шок.
Аноним 10/05/20 Вск 01:02:23 #69 №1682709 
>>1682702
Разработчик чего? В тырпрайз галере ты никуда не переходишь, на чем скажут, на том и пишешь, как полагается рабу.
Аноним 10/05/20 Вск 02:22:59 #70 №1682749 
>>1682702
Ну я на работе пишу под линукс, и в гробу я его видал. Домашние проекты только под виндоус.
Аноним 10/05/20 Вск 09:07:37 #71 №1682834 
>>1682438
сразу в вим переходи
Аноним 10/05/20 Вск 09:09:01 #72 №1682835 

Пацаны, походу мы клинического долбаеба сдетектили тут >>1682749
Аноним 10/05/20 Вск 09:09:51 #73 №1682836 
>>1682835
С подключением. Этот шиз тут постоянно висит
Аноним 10/05/20 Вск 13:11:48 #74 №1683050 
>>1682835
Показательно как ничтожная чмошка без личности за себя говорить не может, а воображает толпу за которую прячется. Говну всегда нужна чужая опора.
Аноним 10/05/20 Вск 14:38:04 #75 №1683142 
Кто что думает про 2й том Столярова?
Аноним 10/05/20 Вск 17:49:40 #76 №1683328 
>>1683142
Выглядит интересно. Надо будет почитать.
Аноним 10/05/20 Вск 20:17:21 #77 №1683507 
>>1683142
Хорошо горит
Аноним 10/05/20 Вск 22:53:36 #78 №1683611 
>>1683507
Ваш пегдак?
Аноним 10/05/20 Вск 23:46:11 #79 №1683636 
>>1682670
Я не буду пытаться гуглить, он хуйстоял у меня, когда я ещё пользовался шин.
Аноним 11/05/20 Пнд 06:54:40 #80 №1683714 
Анончики. Поясните за использование size_t и ptrdiff_t, а то в разным местах какие-то противоречивые описания. Понятно, что они - это беззнаковый и знаковый типы, размер которых определяется платформой. А вот где и что использовать, а то пишут, что все взаимозаменяемо.
Как я понимаю:
size_t - это счетчики циклов, размерности массивов
ptrdiff_t - это адресная арифметика
Аноним 11/05/20 Пнд 12:20:47 #81 №1683842 
>>1683050
показательно, как ничтожная чмоха пытается говорить смелые высказывания от своего имени на анонимном форуме.
Аноним 11/05/20 Пнд 14:37:33 #82 №1683981 
>>1683842
this, как он вообще собрался опираться на себя
Аноним 11/05/20 Пнд 15:42:13 #83 №1684021 
>>1683714
ptrdiff_t практически никогда не нужен, это технический тип, использующийся при сравнении указателей. size_t - да, все так. Если вдруг понадобится size_t со знаком, то у некоторых платформ есть ssize_t, а где нет - можешь самостоятельно определить.
Аноним 11/05/20 Пнд 16:19:00 #84 №1684048 
Как сгенерировать мир типа майнкрафта (без пещер)?
Аноним 11/05/20 Пнд 16:24:25 #85 №1684059 
>>1680461 (OP)
Котаны, посоветуйте учебник по C/C++, где объясняется как устроена память, вызовы и так далее по списку. Внутреннее устройство таких простых вещей как определение переменной, функции, вызов функции и др. Заранее благодарю.
Аноним 11/05/20 Пнд 17:04:49 #86 №1684123 
>>1684048
noise
Аноним 11/05/20 Пнд 17:05:16 #87 №1684126 
>>1684059
Всё есть в шапке, внимательно посмотри.
Аноним 11/05/20 Пнд 18:13:48 #88 №1684236 
>>1684126
>>1684059
Совершенно случайно наткнулся на
>Защищенный режим процессоров Intel 80286/80386/80486
>© Александр Фролов, Григорий Фролов

Охуенная вещь, в некоторых моментах надо вникать с ручкой/тетрадкой, но реально интересно.
Аноним 11/05/20 Пнд 18:26:56 #89 №1684247 
>>1684236
А там нету случаем про РАСШИРИТЕЛЬ для Доса?
Аноним 11/05/20 Пнд 18:49:03 #90 №1684258 
>>1684247
Может быть, я до середины дошел.
Где-то на первых страницах есть РАСШИРИТЕЛЬ для твоей мамки, но я не вчитывался.
Аноним 11/05/20 Пнд 18:58:15 #91 №1684269 
>>1684048
>>1684123
Не просто шум, а шум перлина.

>>1684236
Особенно 286 с его извращениями сейчас актуален.
Аноним 11/05/20 Пнд 19:28:51 #92 №1684292 
>>1684269
> Не просто шум, а шум перлина.
любой можно, каждый что-то нагенерит
Аноним 11/05/20 Пнд 19:59:18 #93 №1684328 
>>1684269
>Только программирование в среде WINDOWS даст вам возможность почувствовать все преимущества использования защищённого режима работы процессоров.
Аноним 11/05/20 Пнд 20:14:00 #94 №1684335 
penguinscomplaints-600x450.jpg
Коллеги, вот серьезно.
Есть кто-то кто работает используя С?
Пишете драйвера для Линукса?
Расскажите о себе.
Как учились.
Сколько лет.
Область трудоустройства.
Почему выбрали программирование.
Аноним 11/05/20 Пнд 20:24:26 #95 №1684338 
В самых ранних тредах, то-ли здесь, то-ли в крестотреде, анон рекомендовал как годно после С вкатиться в кресты.
Если ты еще здесь, напиши еще раз пожалуйста.
Спасибо.
Аноним 11/05/20 Пнд 20:51:09 #96 №1684353 
>>1684335
пишу вполне себе прикладной софт, не дрова: мультиплатформа/гуй/любой каприз.. Учился хорошо, 30+
Выбрал не именно программирование, это скорее одно из, что интересно в смежных областях.
Аноним 11/05/20 Пнд 20:52:06 #97 №1684354 
>>1684338
Катаюсь туда и обратно.. в чем вопрос-то?
другой анон
Аноним 11/05/20 Пнд 20:59:35 #98 №1684361 
>>1684354
После Си Пратыкак вкатиться?
Аноним 11/05/20 Пнд 21:05:33 #99 №1684364 
>>1684361
После Си наоборот мозги стали лучше все понимать и другие языки легче даваться, те же плюсы. Качество кода заметно возросло. Поэтому и плаваю туда обратно в зависимости от проектов.
На мой взгляд, лучший язык для обучения студентов профильных специальностей.
Аноним 11/05/20 Пнд 21:41:52 #100 №1684381 
>>1684364
Ты даже не представляешь насколько прав.
Си - не первый язык куда я хотел вкатиться.
Сначала меня убедили с++ сектанты а на деле - хеллоувордщики и макаки что можно ПРОСТО ПИСАТЬ НА КРЕСТАХ И ООП-КОД И НЕ ПАРИТЬСЯ.
При этом макака не способна объяснить что такое int argc, char *argv[] в main.
Потом с# пробовал, хорошо продвинулся в изучении, пока не поймал себя на том, что просто заучиваю фичи языка синтаксиса. На крестах та же херня, кстати.
Потом пытался в модный хачкель пиздец и стыд нахуй это нужно было. Джаваскрипт + джава не зашли, потому что я досконально не понимал каким образом они выполняются на моем компьютере.

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

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

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

>После Си наоборот мозги стали лучше все понимать
Нечего добавить.
sageАноним 11/05/20 Пнд 22:03:56 #101 №1684404 
>>1684381
Исповедь неосилятора итт.

> я досконально не понимал каким образом они выполняются на моем компьютере
Который даже сишку не осилил, потому что не может прочитать и понять исходники движков.
Аноним 12/05/20 Втр 00:20:27 #102 №1684520 
>>1684381
А ты можешь умник бля? Ты же сам нихуя не знаешь, ты обычный любитель-вкатоид, но сидишь и рассказываешь что-то про кресты и сисю с умным видом
>ДОСКОНАЛЬНО
Да ты и щас не понимаешь, спросить у тебя — и напукаешь что-то невнятное про ЭЭЭ НУ ТАМ БИЗОН КОНПЕЛЯЦИЯ ОПТИМИЗАЦИЯ МАШИННЫЙ КОД
>концептуально уже знаешь
нихуя ты не знаешь
>сложных абстракций
Блядь какой же кринж нахуй
Аноним 12/05/20 Втр 00:48:33 #103 №1684536 
>>1684338
Когда-то давно я писал о том, что после K&R можно прочитать дизайн и эволюцию, а затем йоба книги типа Мейерса и Саттера
Аноним 12/05/20 Втр 01:43:02 #104 №1684563 
>>1684258
Глянул в оглавление там всё же есть глава про РАСШИРИТЕЛЬ для твоего бати.
>>1684381
Нахуй тебе это всё, чел, в твои года пора уже кабанчиком быть и попиливать бюджет рососиюшки, а не байты перекладывать.
>>1684520
>кринж
Флексишь/чилишь, небось?
Аноним 12/05/20 Втр 02:47:18 #105 №1684583 
>>1684536
Да, это был ты, добра тебе
Аноним 12/05/20 Втр 06:10:12 #106 №1684652 
>>1684563
>Глянул в оглавление там всё же есть глава про РАСШИРИТЕЛЬ для твоего бати.
А для моей мамки шлюхи есть? А то не сдохнет никак.
Аноним 12/05/20 Втр 12:40:28 #107 №1684889 
Сисяч, выручач.
Я постоянно испытываю дикую попаболь при сборке библиотек/бинариесов из исходников.
Постоянные ошибки, постоянные гуглёжки, как меня уже это достало.
Подскажите куда копать что бы овладеть мастерством компилирования исходников? Желательно бы ещё статейки накидать.

Заранее целую.
Аноним 12/05/20 Втр 12:54:51 #108 №1684902 
>>1684889
Поставь гхенту линкукс.
Аноним 12/05/20 Втр 14:40:49 #109 №1685039 
>>1684889
Юзай make
Аноним 12/05/20 Втр 16:29:30 #110 №1685240 
064.gif
Анон, а есть ли в этих ваших glibs такая корневая процедура записи, что можно было бы хуйнуть байтики прям куда захочешь?
Ну вот к примеру как-то так:

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

Не уверен, что правильно всё написал и пока не проверял.
Но допустим, помимо файлика и вывода, я хотел бы ещё писать и в буфер. Ну разве файловый указатель не идентичен адресу в памяти и его нельзя заменить?
Алсо была мысль сделать нечто такое через сисколлы, но я боюсь, что мне придётся через инлайны регистры править, да и асму я почти не знаю
Аноним 12/05/20 Втр 16:49:51 #111 №1685280 
>>1685240
write()
Аноним 12/05/20 Втр 17:57:48 #112 №1685402 
fatone.jpg
>>1685240
Сынок, учи матчасть.
Аноним 12/05/20 Втр 18:06:49 #113 №1685429 
>>1685280
А как тогда через open() получить целочисленный дескриптор, лол?
>>1685402
Хуец мелковатый какой-то. даже у меня побольше
Аноним 12/05/20 Втр 18:25:51 #114 №1685462 
>>1685429
>А как тогда через open() получить целочисленный дескриптор, лол?
В смысле?
Аноним 12/05/20 Втр 18:34:36 #115 №1685479 
>>1685462
>В смысле?
>size_t write (int fd, void* buf, size_t cnt);
Как получить fd для куска памяти, а не для файла/потока?
я уже понял, что никак
write() же пишет исключительно в последние.
Аноним 12/05/20 Втр 18:36:35 #116 №1685482 
>>1685479
Например pipe() даёт тебе fd на кусок памяти. Да и довольно много других функций.
Аноним 12/05/20 Втр 18:37:40 #117 №1685486 
>>1685240
> Но допустим, помимо файлика и вывода, я хотел бы ещё писать и в буфер
fmemopen(), но оно не везде есть. Можешь свою обертку написать.
Аноним 12/05/20 Втр 19:15:26 #118 №1685582 
>>1685479
Ты понимаешь как они работают эти дескрипторы, трубки и процессор вообще?
http://man7.org/linux/man-pages/man7/pipe.7.html
Аноним 12/05/20 Втр 19:35:57 #119 №1685635 
64598732165768.jpg
>>1685482
>Например pipe()
Спасибки.
>>1685582
>Ты понимаешь как они работают эти дескрипторы,
дескрипторы для идентификации файла в процессе, очевидно же.
>трубки
Вот сейчас курю. Из того что выкурил, понял что пайп имеет два дескриптора - для записи и чтения для других процессов. Читается/записывается по фифо. Вот только я безнадежно туп и всё равно не знаю, как из указателя на получить это ФД.
>и процессор вообще?
А что тут надо понимать?
Аноним 12/05/20 Втр 19:54:25 #120 №1685674 
>>1685635
>дескрипторы для идентификации файла в процессе, очевидно же.
https://www.opennet.ru/docs/RUS/lpg/node6.html#SECTION00730000000000000000

Аноним 12/05/20 Втр 20:02:52 #121 №1685693 
>>1685635
>как из указателя на получить это ФД
Если у тебя указатель, то зачем тебе fd? У тебя уже сырая память, просто пиши туда и всё.
Аноним 12/05/20 Втр 20:26:22 #122 №1685730 
>>1685693
Я его уже послал туда, где он должен был быть перед тем как задавать вопросы.
Аноним 12/05/20 Втр 20:27:24 #123 №1685732 
>>1684889
если разрабы конкретной либы не озаботились приложить файлик CMakeLists.txt то просто возьми другую аналогичную либу
Аноним 12/05/20 Втр 20:41:23 #124 №1685749 
>>1685732
>CMakeLists.txt
Для пидорашек и лохопедриков, нормальные пацаны юзают Autotools.
Аноним 12/05/20 Втр 20:45:09 #125 №1685755 
>>1685732
Позаботились, но когда я прописываю make/cmake мне в ебало прилетает 1000 ошибок, а я хз как их исправлять, и что делать.
Аноним 12/05/20 Втр 20:55:54 #126 №1685769 
mqdefault.jpg
>>1685486
>fmemopen(),
Спас сей день.
Аноним 12/05/20 Втр 20:57:31 #127 №1685773 
>>1685749
да, да, все хорошо
>>1685755
что за либа? может она сама по себе криво написана
Аноним 12/05/20 Втр 21:01:22 #128 №1685778 
>>1685773
OpenSSL
Я пытался три часа её скомпилировать.
make слал меня нахуй, говоря что FILES NOT INCLUDED!
cmake высрал что мне что угодно, но не статические либы.

В итоге спустя пару часов нашёл в интернете уже скомпилированную статику и с ней начал работать.
Аноним 12/05/20 Втр 21:27:12 #129 №1685814 
>>1685778
Под что собирал?
Аноним 12/05/20 Втр 21:44:54 #130 №1685839 
>>1685814
Windows x86
Из виндушной ЦМД
Аноним 12/05/20 Втр 22:37:19 #131 №1685902 
ssl.png
>>1685778
а ты точно все внимательно читаешь?
https://wiki.openssl.org/index.php/Compilation_and_Installation
Аноним 12/05/20 Втр 22:43:42 #132 №1685904 
>>1685839
Ну с шиндоузом не могу помочь, а что если a) тебе и не нужно собирать, под шиндоузом разве нет либархивов b) ещё как вариант во всяких докерах крутиться?
Аноним 13/05/20 Срд 04:11:51 #133 №1686013 
>>1685904
>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.
Всё там есть, заканчивай ебаться со сборкой.
Аноним 13/05/20 Срд 09:14:28 #134 №1686126 
>>1684902
Если самому ебилды не писать, то там ведь нихуя знать про это не нужно.
Аноним 13/05/20 Срд 09:26:37 #135 №1686129 
>>1684889
>Я постоянно испытываю дикую попаболь при сборке библиотек/бинариесов из исходников.
Просто расслабься и прими дилду в свой анус. С годами он будет разработан настолько, что ты будешь лениво собирать все это говно часами, посматривая правым глазом сериальчик. А деньги при этом платятся как за полноценное программирование
Аноним 13/05/20 Срд 12:27:58 #136 №1686391 
>>1686129
Какую дилду, этот клоун не знает различия make и cmake, не читал ридми по сборке, зато уже умудрился насобирать 1000 ошибок где-то и насторочить на дваче. Настоящий программист, задатки гения.
Аноним 13/05/20 Срд 16:22:17 #137 №1686765 
>>1686391
Возможно просто макака.
Аноним 13/05/20 Срд 16:45:42 #138 №1686811 
>>1686391
Ты типичный комплексующий задрот. Только от таких можно услышать подобную хуйню.
Аноним 13/05/20 Срд 17:33:07 #139 №1686890 
>>1686811
Но у него верная мысль озвучена, чтобы собрать проект, нужно почитать ридми.
Аноним 13/05/20 Срд 17:57:59 #140 №1686917 
>>1684520
Недавно смотрел видос, где опытным разработчикам!, на серьезных щах, объясняют, почему скорость обработки массива различна, в зависимости от порядка обработки строк и столбцов.
Я тогда охуел, это же базовые понятия.
Твой коммент поставил все на свои места.
sageАноним 13/05/20 Срд 18:02:03 #141 №1686922 
>>1684381
>модный хачкель
што
Аноним 13/05/20 Срд 19:00:00 #142 №1686993 
>>1686917
Да что ты нахуй вообще несёшь, ты обычный любитель-долбоеб, а самомнение у тебя как у системной макаки с 10 летним стажем минимум. При том что я сомневаюсь что ты вообще понимаешь о чем ты пишешь, что-то о том что не мог понять что-то про аргументы, что-то про скорость обработки массивов. Сядь книжку по крестам почитай какую а не обсирай свои штаны тут
Аноним 13/05/20 Срд 21:47:11 #143 №1687183 
подскажите, что почитать про boost и параллельные вычисления на C
Аноним 13/05/20 Срд 21:54:13 #144 №1687191 
>>1686917
Почему?
Аноним 13/05/20 Срд 22:07:21 #145 №1687206 
>>1686993
Чем бы девственники ни тешились. Если жизнь не для них, пусть хотя бы положняки C++ зубрят и свою хуйню оптимизируют.
Аноним 14/05/20 Чтв 02:37:16 #146 №1687308 
>>1686811
У нормальных людей - не тупой, у тупых - задрот.
У нормальных - критика, у тупых - комплексы.
Типичный дебил, настоящий, необучаемый, навсегда, ибо вместо исправления своих недостатков занимается их защитой и оправданиями, разворачиваним стрелок.
Аноним 14/05/20 Чтв 03:09:30 #147 №1687315 
>>1686917
>Я тогда охуел, это же базовые понятия.
Это low context и high context культуры. Цивилизованные люди используют low context, потому что проще сказать, чем выяснять, что собеседник знает, а что нет.
У пидоршек high context - скажешь человеку то, что он знает, он ОБИДЕТСЯ и подумает, что ты считаешь его ТУПЫМ, а если это делает лектор - это вообще пизда. Потом довольный прибежит на двач, рассказывать, какие все тупые, а он, задротик, умный.
Аноним 14/05/20 Чтв 03:10:48 #148 №1687316 
>>1687308
>У нормальных - критика, у тупых - комплексы.
Мань, ты типчная токсичная форумная крыса, которая занимается не "критикой", а форумным самоутверждением. Ты думаешь это не видно?
Аноним 14/05/20 Чтв 04:35:16 #149 №1687342 
>>1687316
>типчная токсичная форумная крыса
Как что-то плохое, и это вообще не отменяет того факта, что он всё правильно говорит.
Аноним 14/05/20 Чтв 04:49:00 #150 №1687344 
>>1687342
>Как что-то плохое
Примерно как ссать в подъезде
>и это вообще не отменяет того факта, что он всё правильно говорит.
Этот пердеж не является разговором
Аноним 14/05/20 Чтв 07:34:22 #151 №1687366 
>>1686917
Ну давай объясняй в чем отличие скорости обработки таких массивов, строк и столбцов. Объясни мне как меняется скорость, если я сначала буду вычислять столбцы->строки или же строки->столбцы.
Аноним 14/05/20 Чтв 08:09:16 #152 №1687369 
>>1687366
http://blogs.rsdn.org/ikemefula/2929998
Аноним 14/05/20 Чтв 08:32:55 #153 №1687370 
>>1687369
Если поменять их местами все равно не будет эффекта на кэш цпу, если не считать размеры.
Аноним 14/05/20 Чтв 11:52:01 #154 №1687509 
>>1687315
Прикольно, не знал что для этого явления есть определения, хотя сам замечал такое
Аноним 14/05/20 Чтв 12:30:15 #155 №1687552 
>>1687369
Очень мощное заявление прозвучало. Правильнее было бы сказать "может влиять".
Аноним 14/05/20 Чтв 12:31:39 #156 №1687553 
>>1687552
фикс* "может быть различна"
Аноним 14/05/20 Чтв 13:59:39 #157 №1687696 
>>1687369
Олимпиадные задачки.
Аноним 14/05/20 Чтв 14:03:08 #158 №1687700 
image.png
Чё можно почитать про make?
А то тёмное поле, у людей процесс компиляции сложнее чем сама программа, а я ничего про это не знаю.
Аноним 14/05/20 Чтв 14:13:06 #159 №1687715 
>>1687700
Просто ознакомиться — что угодно, хоть туториал на Ютубе, зверь не так сложен как кажется.
Аноним 14/05/20 Чтв 14:14:30 #160 №1687716 
>>1687700
На сайте гну. Вообще make - очень универсальный инструмент, для многих задач сгодиться, неплохо бы иметь такой под рукой и уметь им пользоваться. У тебя на скрине скорее не про make, а про автотулзы это другое
Аноним 14/05/20 Чтв 14:36:00 #161 №1687740 
>>1687700
man make
или info make
Аноним 14/05/20 Чтв 17:12:46 #162 №1687990 
Тред, помоги, пожалуйста, разобраться в поведении куска кода:
Аноним 14/05/20 Чтв 17:30:31 #163 №1688024 
>>1687990
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 в исходном коде, то, понятное дело, возникает ошибка на этапе компиляции. В чём здесь заключается магия дебагера?
Аноним 14/05/20 Чтв 18:46:36 #164 №1688180 
>>1687990
>>1688024
Малолетние дебилы почему-то думают что вставлять мат в код - это круто.
Аноним 14/05/20 Чтв 19:06:53 #165 №1688210 
>>1688180
Ну мемы же ну
хаха оп хуй пизда еот
Аноним 14/05/20 Чтв 20:32:26 #166 №1688324 
>>1687740
>тащемта ничего сложного нет, просто берёшь и пилишь мейкфайлы
Аноним 14/05/20 Чтв 20:57:06 #167 №1688350 
>>1687369
> пердолинг из интел мануала на 10к страниц
> это же ентри лвл, каждый нюфаня должен знать
Ох лол. Я практически уверен, что итт лишь 1.5 человека осилило черную магию мануалов.
Аноним 14/05/20 Чтв 21:02:55 #168 №1688355 
>>1680461 (OP)
есть ли в простом си обработка исключений TRY CATCH?
Аноним 14/05/20 Чтв 21:26:05 #169 №1688381 
>>1688350
Приходится осилять, в противном случае никогда не поймешь где наебался.
Аноним 14/05/20 Чтв 22:03:29 #170 №1688426 
>>1688381
oн на этo ни oдин гoд пoтратит
Аноним 14/05/20 Чтв 22:07:30 #171 №1688432 
>>1688355
Нет, есть сигналы для низкоуровневых (всякий неверный доступ к памяти и деление на ноль) и setjmp/longjmp для эмуляции программных. В винде есть __try/__except, но это расширение компилятора.
Аноним 14/05/20 Чтв 22:10:53 #172 №1688435 
>>1688432
пoнял, спасибo
Аноним 15/05/20 Птн 01:27:32 #173 №1688605 
как же сложно писать на сишке...
Аноним 15/05/20 Птн 11:23:32 #174 №1688824 
Все привет коллеги! Поделитесь чтивом, как можно на Си WinForm делать. Спасибо!
Аноним 15/05/20 Птн 14:05:50 #175 №1688938 
>>1688350
Читай что разжевали или амд гайд почитай.
Аноним 15/05/20 Птн 14:26:16 #176 №1688971 
>>1688824
троллейбус из хлеба .jpg
Аноним 15/05/20 Птн 15:51:16 #177 №1689103 
>>1688938
Я читал
Аноним 15/05/20 Птн 15:51:35 #178 №1689105 
>>1689103
Оба
Аноним 15/05/20 Птн 20:43:50 #179 №1689509 
Expanding-Brain.jpg
Анончики, мне кажется я понял указатели.
Чувствую себя как на пикрелейте.
Очень сильно помог godbolt.
Всем добра!
Аноним 15/05/20 Птн 20:56:22 #180 №1689527 
>>1689509
>указатели
А указатель на указатель на указатель?
Аноним 15/05/20 Птн 21:29:36 #181 №1689556 
>>1689509

молодец.

ваще с указателями проблема, что их часто объясняют на примере указателя на локальную переменную, и ты такой: "нахуя это говно нужно, если можно с самой переменной работать". Когда начинаешь фигачить структуры, становится понятнее. Ну и если хоть чуток разобрать (по сути) любой ассемблер, оказывается, что указатель - просто адрес, разыменовывание - получение данных по адресу(ну, с добавлением оффсета, если доступ к полю структуры).
Аноним 15/05/20 Птн 22:19:08 #182 №1689634 
Пиздец ньюфаги в треде. Inderection это одна из самых базовых вещей в software engineering
Аноним 15/05/20 Птн 22:47:18 #183 №1689677 
>>1689634
Опытные сидят в емейл-тредах обсуждения патчей к линуксу. Раз ты здесь, ты недалеко ушёл от остальных.
Аноним 15/05/20 Птн 23:14:45 #184 №1689710 
>>1689677
Я там тоже сижу. Только в рид онли
Аноним 16/05/20 Суб 13:40:31 #185 №1690070 
15776057303210.png
Господа, скорее всего я по адресу.

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

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

GCC 7.2.1

Или скажите, где могут с такой проблемой помочь.
Аноним 16/05/20 Суб 14:12:15 #186 №1690115 
>>1690070
Какие опции оптимизации включены у тебя?
Аноним 16/05/20 Суб 14:20:54 #187 №1690130 
>>1690115
Всё выключено.
None (-O0)
Аноним 16/05/20 Суб 14:23:55 #188 №1690140 
>>1690130
Начинай использовать.
Аноним 16/05/20 Суб 14:30:04 #189 №1690153 
>>1690140
Т.е. никакие правки кода не помогут?
Аноним 16/05/20 Суб 14:34:00 #190 №1690160 
>>1690153
Зачем лезть в код, если ты даже самым элементарным не пользуешься? Ты оптимизации хочешь или поиграться?
Аноним 16/05/20 Суб 14:41:45 #191 №1690173 
>>1690160
У МК мало ресурсов.
Код целиком я ещё не дописал и он на стадии отладки, так что опции оптимизации могут ещё говна подкинуть.
Писал как есть, т.к. почти не знаю ничего.

Вообще, посмотрел бы как это НАДО сделать, а не так, как получилось у меня.
Аноним 16/05/20 Суб 14:46:19 #192 №1690183 
>>1690173
Хочешь оптимизации — используешь опции оптимизации компилятора. Так оно работает. Ты ещё скажи, что ты взялся это на С писать, потому что он "оптимизированный", а на своём языке даже оптимизации не пробовал включать?
Аноним 16/05/20 Суб 14:53:19 #193 №1690200 
>>1690183
Ладно, чувак, забей.

Может кто ещё что подскажет. А нет, то и так должно работать скорее всего.
Аноним 16/05/20 Суб 14:55:09 #194 №1690204 
>>1690200
>как_есть_ножом.жпг
Аноним 16/05/20 Суб 15:03:15 #195 №1690216 
>>1689634
>Пиздец ньюфаги в треде.

чо ты такой токсичный? челик разобрался с темочкой, сделал маленький шажок, хули бы не поддержать? нет, блядь, придёт пердоля, козыряя своим сомнительным багажом знаний. ссал тебе в рот.
Аноним 16/05/20 Суб 15:53:32 #196 №1690292 
>>1690204
>как_есть_ножом.жпг
Ну-у, если ты так хочешь знать, то...

https://ru.wikihow.com/правильно-пользоваться-вилкой-и-ножом
Аноним 16/05/20 Суб 15:59:03 #197 №1690301 
>>1690070
Почему ты пишешь в tmp_str, а не сразу в temp_buf?
Аноним 16/05/20 Суб 16:02:28 #198 №1690311 
>>1690070
> В идеале, чтобы меньше циклов
У тебя всего один цикл. Из твоего примера вообще непонятно, зачем он нужен. И switch case можно выкинуть. Но я не знаю, может предполагается, что в var_tosend данные могут идти непредсказуемо и его размер не определён.
Аноним 16/05/20 Суб 16:07:24 #199 №1690326 
image.png
>>1690292
Аноним 16/05/20 Суб 16:45:47 #200 №1690381 
>>1690311
>зачем он нужен
>Мне надо сформировать строку вида <S:X1,Y1;X2,Y2;Xn,Yn;> , где Xn - порядковый номер переменной, Yn - значение переменной.

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

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

>>1690326
Что это за ахинея?
Аноним 16/05/20 Суб 16:59:58 #201 №1690392 
>>1690301
В смысле, почему всё пишется в разные массивы?
Потому что не знаю, как разом преобразовать переменную и записать в конец одного строкового массива.
Так бы я преобразовывал переменные и писал сразу в один массив.

snprintf преобразует разношёрстные переменные по заданному формату, а strcat склеивает строки.
Аноним 16/05/20 Суб 19:12:17 #202 №1690646 
>>1690326
Если я билдю проджекты из 17 файлов поочередно в консольке вместо мейка, то получается, что ем с ножа?
Аноним 16/05/20 Суб 22:55:23 #203 №1691101 
>>1689556
Вот именно!
Есть один момент, на который убил много времени.
В книгах объясняют, что если, например есть массив arr[2][3]; то arr это адрес первого элемента массива, то есть - &arr[0][0]. Фактически, это действительно так, но это пиздецки сбивает с толку, так как при разименовывании надо всегда учитывать тип!
На самом деле arr это &arr[0], a вот arr[0] это уже адрес arr[0][0].

Аноним 17/05/20 Вск 17:20:56 #204 №1691841 
>>1690392
> Потому что не знаю, как разом преобразовать переменную и записать в конец одного строкового массива.
Может, увеличить значение указателя на строковый массив?
Аноним 17/05/20 Вск 19:16:35 #205 №1692053 
>>1690646
Ты же в тред не приходишь:
>двач, как быстрее билдить 17 файлов? руки кстают стрелку вверх нажимать
>используй мейк
>мейкоблядь закукарекала!
Аноним 17/05/20 Вск 19:17:31 #206 №1692058 
>>1691101
arr тоже самое что и (arr+i)
arr[j] ==
(*(arr+i)+j)
Аноним 17/05/20 Вск 19:18:22 #207 №1692062 
>>1692058
бля форматирование пошло по пизде спасибо абу
Аноним 17/05/20 Вск 20:24:33 #208 №1692176 
>>1680461 (OP)
Посоветуйте статический анализатор кода, чтобы проверял misra c ну и остальное проверял там, чтобы говна в коде не было.

Пока что немного погуглил и подумываю насчёт PVS Studio.
Аноним 17/05/20 Вск 20:29:51 #209 №1692184 
>>1680757
>твердо и четко где-то прописан минимальный размер типов данных?
Не, нихуя, везде по разному. В одном канпиляторе у тебя будет long int 24 бита, в другом 32 бита, к примеру.
По этой причине в misra c не рекомендуется использовать оригинальные типы, а вмето них нужно использовать типы указанием размера uint16_t, uint32_t и так далее.
Можно подкулючить библиотеку typedef для этого.
Аноним 17/05/20 Вск 20:42:50 #210 №1692202 
>>1692184
Для этого лучше подключить stdint.h
Такой метод является кроссплатформенным.
Аноним 17/05/20 Вск 21:08:27 #211 №1692235 
Capture1.PNG
Массив длиной 10.
Записываю в него строку через gets(s).
Суть в чём? Если ввод в консоле больше 10-ти знаков идёт ошибка, как поставить какую-нибудь защиту от этого? Чтобы он инорировал остальной ввод или что-нибудь такое?
Аноним 17/05/20 Вск 21:10:10 #212 №1692237 
>>1692235
Посмотри в интернете такой простой вопрос.
Аноним 17/05/20 Вск 21:21:21 #213 №1692257 
>>1692237
нет, не посмотрю. скажи решение. конкретное и прямое. очевидно что я сюда уже блядь после того как пол дня гуглил.
Аноним 17/05/20 Вск 22:00:29 #214 №1692285 
>>1692257
Если бы ты хотя бы 1 ебаную справку открыл, то наткнулся бы на fgets.
Аноним 17/05/20 Вск 22:03:45 #215 №1692291 
>>1692285
прoсти, я идиoт. спасибo бoльшo за пoмoщь
Аноним 17/05/20 Вск 22:20:25 #216 №1692307 
>>1692285
я ввoжу с клавы в кoнсoль, чтo мне писать в истoчник ввoда?
Аноним 17/05/20 Вск 22:21:52 #217 №1692309 
>>1692307
stdin
Аноним 17/05/20 Вск 22:26:40 #218 №1692315 
>>1692309
>>1692307
>>1692285
у меня серьёзные проблемы.

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

при использовании функции gets работает, но при переполнении крашится. при функции fgets, не боится переполнения, но почему-то функция там неопределяет строки как равные. я заебался уже нахуй
Аноним 17/05/20 Вск 22:29:20 #219 №1692321 
>>1692315
Начни тогда с чего-то другого. Книжку почитай.
Аноним 17/05/20 Вск 22:29:50 #220 №1692322 
>>1692321
прочитал всю. кроме приложений. и упражнений половину книги сделал. как решить проблему?
Аноним 17/05/20 Вск 22:30:56 #221 №1692324 
>>1692315
Может конец строки не дописывает?
Аноним 17/05/20 Вск 22:35:47 #222 №1692336 
>>1692324
Нет. Я уже разoбрался, анoны. printf'ом сделал посимвольный вывод двухмассивов, у первого массива нулевой элемент единице равен нахуй. Не знаю почему, но короче ваши функции гавно ебаное
Аноним 17/05/20 Вск 22:38:20 #223 №1692339 
>>1692322
Другую книгу тогда прочитай. В прате про fgets есть.
Аноним 17/05/20 Вск 22:46:44 #224 №1692346 
>>1692336
>>1692324
Короче, да разобрался. Анон был прав. Нет конца строки, причём не функция гавно, а я еблан. У меня нету конца строки в той строке с которой я сверяю поэтому и получается неравенство. Каюсь, анчоусы.

>>1692339
Нет уж, я заебался книги читать, 2 года я читал книги, хочу кодить, заебало.
Аноним 18/05/20 Пнд 00:39:32 #225 №1692440 
image.png
>>1692346
>Нет уж, я заебался книги читать, 2 года я читал книги, хочу кодить, заебало.

Когда тебе нужно использовать неизвестную тебе функцию из стандартной библиотеки, прочитай один, сука абзац в стандарте про эту функцию, ну или в man. Дали им мануалы - читай, нет блядь, говно жрут. Наберутся "знаний" их своего эгрегора, лол.
Аноним 18/05/20 Пнд 03:34:08 #226 №1692509 
>>1692346
>причём не функция гавно, а я еблан
Аксиома программирования. Нужно преподавать на первом уроке в школе, так чтобы всю жизнь помнили.
Есть еще важное следствие-тест. Если ты пробуешь использовать функцию, но она "не работает" и ты ищещшь другую на замену, значит ты необучаемый дебил, залетышь чуждый программированию. Просто съеби в таком случае, ты дефективен на генетическом уровне.
Аноним 18/05/20 Пнд 04:49:22 #227 №1692524 
Был охуенный сайт, где можно было вбить код на Си с нагромождением пойнтеров и т.п., и тебе расшифровывали, что на что указывает и т.п.

Никто не помнит?
Аноним 18/05/20 Пнд 04:53:41 #228 №1692526 
>>1692524
Хммм... Где бы в этом треде мог быть список полезных сайтов? Даже предположить сложно..
Аноним 18/05/20 Пнд 04:56:28 #229 №1692528 
>>1692526
Атдуши в душу. Я из /s/, а у нас с шапками пиздец полный вечно
Аноним 18/05/20 Пнд 05:03:51 #230 №1692532 
>>1692528
Потому что вы их всё равно не читаете, как мы только что убедились.
Аноним 18/05/20 Пнд 05:04:53 #231 №1692534 
>>1692532
Поэтому и не читаем, что там насрано и нихуя нет обычно (в нашем случае).
Аноним 18/05/20 Пнд 09:20:05 #232 №1692593 
>>1692524
>Был охуенный сайт, где можно было вбить код на Си с нагромождением пойнтеров и т.п., и тебе расшифровывали, что на что указывает и т.п.

https://www.godbolt.org ?
Аноним 18/05/20 Пнд 10:29:35 #233 №1692627 
>>1692509
ну чё ты наехал, невнимательнoсть. ну и я не кoдер ни разу, этo пoбoчнoе явление скажем так, не oснoвнoй рoд занятий.
Аноним 18/05/20 Пнд 11:12:11 #234 №1692673 
>>1692524
Это разве не задание из K&R?
Аноним 18/05/20 Пнд 11:13:23 #235 №1692675 
>>1692524
https://cdecl.org/
Это?
Аноним 18/05/20 Пнд 11:27:07 #236 №1692692 
>>1692202
>stdint.h
Да, точно, она, забыл как называется.
>Такой метод является кроссплатформенным.
Вот поэтому и рекомендуют использовать такие типы, чтобы не ломать башку, сколько битов в переменной.
Аноним 18/05/20 Пнд 11:40:07 #237 №1692697 
>>1692692
>Вот поэтому и рекомендуют использовать такие типы, чтобы не ломать башку, сколько битов в переменной.

Остается возможность соснуть с endianness.
Аноним 18/05/20 Пнд 13:38:06 #238 №1692767 
>>1691841
Это может работать с snprintf?
Можно пример, что ли.

Спасибо.
Аноним 18/05/20 Пнд 18:28:21 #239 №1693085 
>>1692767
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Аноним 18/05/20 Пнд 18:30:27 #240 №1693086 
>>1693085
Лол. Вот и я наебался. Короче, вот это терминирование нулем, которое в конец уехало, надо после каждого snprintf делать.
Аноним 18/05/20 Пнд 19:09:48 #241 №1693131 
>>1693086
>>1693085
Что-то не пашет.
https://ideone.com/ykeJg2
sageАноним 18/05/20 Пнд 19:22:49 #242 №1693144 
>>1693131
Скопипастил что ли? В %с русская c.
Аноним 18/05/20 Пнд 21:05:08 #243 №1693243 
1589466713681.jpg
>>1690216
Я вот его примерно так вот представляю. Покрякал и улетел.
Аноним 19/05/20 Втр 02:57:48 #244 №1693421 
670.jpg
>>1693144
Благодарю, поправил - работает.
Аноним 19/05/20 Втр 14:37:30 #245 №1693763 
Привет Aнон. После отпускания кнопки на нулевом пине порт должен потухнуть через некоторое время, но внезапно нихуя и он светит, как так?

https://pastebin.com/w1qXaQw7



Аноним 19/05/20 Втр 16:02:33 #246 №1693857 
.file "a.c"
.intel_syntax noprefix
.text
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
xor eax, eax
ret
.size main, .-main
.ident "убунта"
.section .note.GNU-stack,"",@progbits


Факт: ГЦЦ на третьем уровне оптимизации удаляет к хуям собачьим всё то, что не связано со стримами и файлами.
Аноним 19/05/20 Втр 18:13:34 #247 №1694050 
>>1693763
Хоть я и не шарю в авр, но тут такая лютейшая хуйня в плане алгоритма, что я даже не знаю с чего начать.

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

В использование таймера я даже не вникал, ну его нахуй.
Аноним 19/05/20 Втр 18:58:16 #248 №1694082 
15869283402850.png
>>1694050
Бля, где научиться алгоритмам этим всем?
Аноним 19/05/20 Втр 19:05:07 #249 №1694088 
Есть строка вида: hui,pizda,1 , где hui и pizda - любое сочетание символов, а 1 - цифра, 1 или 0

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

Как его скормить в регэксп для моих целей? Или можно выкрутиться по-другому?
Аноним 19/05/20 Втр 19:11:54 #250 №1694096 
>>1694088
Очередной дебил думает что мат в коде - это дохуя смешно
Аноним 19/05/20 Втр 20:25:32 #251 №1694185 
>>1693857
То, что не содержит сайдэффектов. Если хочешь затестить оптимизацию, компилируй отдельные функции или пиши результаты в volatile-переменные.

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

>>1694096
Очередной дебил, который перепутал сосач с форумом для девочек. Какая принципиальная разница, писать foo/bar или hui/pizda?
Аноним 20/05/20 Срд 02:36:21 #252 №1694468 
unnamed.jpg
>>1694096
Ты там, блядь, из баптистской школы что ли?
Аноним 20/05/20 Срд 03:08:15 #253 №1694480 
>>1694468
Какой агрессивный школьник.
Аноним 20/05/20 Срд 08:36:33 #254 №1694563 
>>1694480
На плеббите не апвоутнули?
Аноним 20/05/20 Срд 08:40:53 #255 №1694568 
>>1694082
Это EE и двочная система счисления
Аноним 20/05/20 Срд 09:57:02 #256 №1694677 
>>1694568
>EE
чиво бля.webm
гугл хуйню говорит
Аноним 20/05/20 Срд 13:19:21 #257 №1695010 
>>1694677
ElectricalEngineering
Аноним 20/05/20 Срд 15:27:14 #258 №1695162 
1404415375081.jpg
>>1695010
ты понимаешь что ты поехавший?
Аноним 20/05/20 Срд 19:54:22 #259 №1695468 
>>1694082
Чо это наглая соплячка у деда из кармана пиздит?
Аноним 20/05/20 Срд 23:55:57 #260 №1695777 
>>1680461 (OP)
Анон, посоветуй какую-нибудь обертку-фронтенд (хз как правильно) над gdb, чтобы было удобно юзать, можно консольную, можно гуи. Стандартный из под консоли все-таки сильно неудобный.
Можно наверное иде какую-то легкую, но я вимовый линуксодибил, так что не оч хочу. Еще было бы неплохо если оно как-то для асма неплохо работало, но это опционально. Ну или что-то такое спецом под асм.
Аноним 21/05/20 Чтв 16:28:07 #261 №1696410 
Без названия (2).jpg
Нужна помощь с файлами.

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

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

Хульп, плиз.
Аноним 21/05/20 Чтв 16:56:04 #262 №1696432 
>>1696410
Учеба это часть работы. Хочешь делать работу чужими руками - плати.
Аноним 21/05/20 Чтв 17:06:10 #263 №1696443 
>>1696432
Вы только посмотрите на этого маминого капиталиста.

Проснись, буржуа, ты обфрилансился в портки.
Аноним 21/05/20 Чтв 17:11:12 #264 №1696454 
>>1696410
В чём проблема-то? Открываешь => заносишь. Тут даже таймера и кнопки нет.
Аноним 21/05/20 Чтв 17:16:28 #265 №1696461 
>>1696454
Ты сегодня у мамы иронично-саркастичный?
Пшёл вон, пёс.
Аноним 21/05/20 Чтв 17:50:08 #266 №1696523 
>>1696443
>>1696461
Съеби отсюда, дебил. И свою лабу забери нахуй. За тебя её делать никто не будет. Чтобы не осилить open() и read() это надо постараться. Если бы ты наработки принёс, то тогда можно было бы поговорить, помочь и поправить, а так иди нахуй просто.
Аноним 21/05/20 Чтв 17:57:04 #267 №1696539 
>>1696454
>>1696432
>>1696523
Ладно, чел, извиняй. Думаю, оба были не правы.
Пригорел ты конкретно, конечно, но вот развешивать ярлыки не стоит.

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

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

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

Как этот массив передать в функцию по указателю? Если написать
func(good); (обычный массив, по идее)
то компилятор ругается: "использование имени типа не допускается"
Аноним 21/05/20 Чтв 21:39:25 #271 №1696804 
>>1696760
А прототип у твоей функции какой?
Аноним 21/05/20 Чтв 21:47:50 #272 №1696812 
>>1696804
int func(struct information *goods[100]);
Аноним 21/05/20 Чтв 21:52:10 #273 №1696816 
>>1696812
Так у тебя прототип неправильный. Ты либо ссылку оставь, либо массив.
Аноним 21/05/20 Чтв 21:54:41 #274 №1696818 
>>1696816
Так массив и так всегда как ссылка передаётся
Аноним 21/05/20 Чтв 21:55:50 #275 №1696820 
>>1696818
Так у тебя и получается, что передаётся ссылка на ссылку указатель на указатель, конечно, но в с всё равно ссылок нет, так что покс
Аноним 21/05/20 Чтв 21:57:38 #276 №1696824 
>>1696760
> массив структур:
Скорее структура массивов))
Аноним 21/05/20 Чтв 21:58:13 #277 №1696825 
>>1696820
А как правильно? Прост я всегда, если у меня массив был a[5], передавал в функции как func(a), прототип - func(a[5])
Аноним 21/05/20 Чтв 21:58:48 #278 №1696826 
>>1696825
А сейчас откуда * взялась?
Аноним 21/05/20 Чтв 22:01:18 #279 №1696831 
>>1680461 (OP)
Кому в 2к20 может понадобится Си?
Только байтаёбам разве что, которые пишут прошивки для мк за еду, и то, даже оттудова его скоро вытеснят плюсы.
Зачем его учить нормальным людям сейчас?
Аноним 21/05/20 Чтв 22:02:19 #280 №1696833 
>>1696826
А нет, ошибочка, я писал по памяти пост, у меня всё-таки у меня там struct information goods[100]
Аноним 21/05/20 Чтв 22:02:30 #281 №1696835 
>>1696831
Что тебе нужно в это треде?
Аноним 21/05/20 Чтв 22:03:35 #282 №1696839 
>>1696833
Делай, короче, через тайпдефы. Ничего хорошего у тебя из быстрого-прототипирования-на-коленке не выходит всё равно.
Аноним 21/05/20 Чтв 22:04:42 #283 №1696840 
>>1696835
Понять зачем нужен Си.
Аноним 21/05/20 Чтв 22:05:07 #284 №1696841 
>>1696835
Узнать, в чём космический смысл учить Си.
Программирование ведь учат ради того, чтобы зарабатывать бабки, а не джаст фор лулз.
Вот мне и интересно узнать у людей, зачем они выучили Си.
Аноним 21/05/20 Чтв 22:06:24 #285 №1696843 
изображение.png
изображение.png
изображение.png
>>1696839
Так я так и сделал
Аноним 21/05/20 Чтв 22:06:57 #286 №1696845 
>>1696840
Ты же уже сказал, что не нужен.

>>1696841
Не лучше ли что-то полезное узнать, чтобы зарабатывать бабки?
Аноним 21/05/20 Чтв 22:07:11 #287 №1696846 
>>1696539
>Ладно, чел, извиняй. Думаю, оба были не правы.
>Пригорел ты конкретно, конечно, но вот развешивать ярлыки не стоит.
>

Лоол, ну реально задают вопрос из экзамена уровня хлебушка, ты отвечаешь. Збс.
Аноним 21/05/20 Чтв 22:07:38 #288 №1696847 
>>1696843
А теперь сравни со своим первым постом.
Аноним 21/05/20 Чтв 22:10:02 #289 №1696855 
>>1696841
>Узнать, в чём космический смысл учить Си.
погугли
Аноним 21/05/20 Чтв 22:10:40 #290 №1696856 
>>1696847
Ну, у меня на второй пикче эта ошибка подчёркивается
Аноним 21/05/20 Чтв 22:13:10 #291 №1696862 
>>1696856
Я про то что ты тайпдеф проебал. Как тебе помогать вообще, если ты изтрёх постов с кодом в двух ошибся? Переспрашивать тебя каждый раз, точно ли ты то скопировал?
Аноним 21/05/20 Чтв 22:17:21 #292 №1696866 
>>1696862
Не, ну окей, я думал, он не так важен для понимания проблемы. Но скрины-то точно иллюстрируют проблему
Аноним 21/05/20 Чтв 22:19:07 #293 №1696871 
>>1696866
В первом посте good было названием массива, а на скриншоте good — название типа.
Аноним 21/05/20 Чтв 22:20:13 #294 №1696874 
>>1696841
>Узнать, в чём космический смысл учить Си.
Си охуенный лаконичный язык в котором нет ничего лишнего и который можно полностью объять разумом.

>Программирование ведь учат ради того, чтобы зарабатывать бабки, а не джаст фор лулз.
Тебе ничего не мешает знать несколько языков. Как для того чтобы зарабатывать бабки, так и для души.
Аноним 21/05/20 Чтв 22:37:55 #295 №1696896 
изображение.png
>>1696843
https://godbolt.org/z/kNPtTe
Аноним 21/05/20 Чтв 23:13:14 #296 №1696945 
>>1696874
> который можно полностью объять разумом

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

Чем больше погружаюсь в эту волосатую кроличью нору, тем больше я понимаю, что зря мы всем миром хоронили Дельфы. Кроме более компактного синтаксиса, всё остальное в Си, кажется, сосёт. Как будто весь язык создан, чтобы в каждой функции было удобно писать в регистры или показывать фокусы с двоичной арифметикой на флоатах. Простой код для Си слишком плебейский.
Аноним 21/05/20 Чтв 23:21:21 #297 №1696954 
>>1696945
Делфи конкурент скорее С++, там не просто ООП, а две несовместимых объектных системы (class и object), есть исключения. Идеи делфей развились в C# с уходом главного разработчика в микрософт.
Аноним 21/05/20 Чтв 23:38:44 #298 №1696975 
>>1696945
> ~200 прекрасно документированных способов прострелить себе ногу
Пролистал список, автор не отличает unspecified от undefined. При этом большая часть списка либо очевидна сразу, либо становится очевидна после прочтения пятой главы стандарта (там рассказывают про абстрактную машину, для которой ты на сишке пишешь). Остаются только всякие мелочи со стандартной библиотекой, которые действительно нужно исправлять.
Аноним 21/05/20 Чтв 23:44:08 #299 №1696979 
>>1696954
Ну, не Дельфы так Паскаль. Просто ощущается, что между Си и Крестами не хватает среднего звена: компилируемого языка без UB и дремучего синтаксиса, но с ассоциированными методами типов, дженериками и, наверное, управлением памяти через счетчик ссылок. Переход с Си на Кресты выглядит для новичка, как проститутка с плёткой и страпоном в подарок на совершеннолетие.
Аноним 21/05/20 Чтв 23:57:08 #300 №1697001 
>>1696975
Я понимаю, что автор привирает для разведения паники и там три четверти выглядит очевидно, но! Это все равно две сотни мин, на которые можно напороться в конце рабочего дня, когда в голове уже шум, а все мысли только о жрачке и сне. Это как заводы сто лет назад: везде капало горючее масло и крутились открытые шестерни, но в то время покалеченных рабочих можно было выкинуть на улицу. Сейчас за уязвимый и нерабочий код можно огрести штраф на сумму контракта.
Аноним 22/05/20 Птн 00:07:30 #301 №1697035 
>>1696979
Такой язык просто не нужен. В 90-е на том некрожелезе (страшно подумать, у меня видюха быстрее самого быстрого суперкомпьютера из 90-х), был смысл экономить биты и не писать на Java либо C# тот софт, который писали на делфях. Сейчас же смысла вообще ноль.
А сейчас, где смысл есть, нужны профессионалы, а не новички.
Аноним 22/05/20 Птн 00:34:01 #302 №1697083 
>>1697035
Лично мне нужна замена Си - простой язык, заточенный под системный софт и interop с языками более высокого уровня, но без ебли с совместимостью с 70-ми годами прошлого века. Есть куча штук типа zlib, libjpeg, libuv и прочего, в написании которых Си неудобен, а Кресты - оверкилл. Опять же, возвращаясь к Дельфам - сборка проекта в миллион строк без ебли с зависимостями - это, блядь, непередаваемо охуенно. Писать всякий FIND_HUI в CMakeLists я люто ненавижу, не говоря уже о том, что лечить сломанные зависимости на дркгом языке - пытка.
Аноним 22/05/20 Птн 04:34:17 #303 №1697198 
>>1697083
Р..раст?
Аноним 22/05/20 Птн 10:15:12 #304 №1697319 
>>1697035
С одной стороны ты прав. Я читал в бложике одного чувака, он как-то решил одну свою консольную тулзеньку питоновскую переписать на расте. Потом сравнил производительность, ну и короче выяснилось, что только через 35-40 лет использования эта разница в производительности отобьет время, которое он потратил на переписывание. Но с другой стороны, когда менюха в варкрафт рефордже тормозит сильнее, чем сама игра, а все потому что близарды решили сэкономить и наняли вебмакаку, которая написала меню на электроне, я начинаю думать, что индустрия заходит куда-то не туда. Железо становится все мощнее, а плохо написанный софт весь этот рост мощностей нивелирует.
Аноним 22/05/20 Птн 10:15:19 #305 №1697320 
>>1697083
>CMake
Found your problem.
Нормальные люди наваливают пакеты под линью и не страдают.
Аноним 22/05/20 Птн 10:28:32 #306 №1697332 
>>1696979
Пиши на си с классами и не еби мозг
Аноним 22/05/20 Птн 10:29:03 #307 №1697333 
>>1697035
На шарпе можно писать приложения, которые будут менее производительнее аналогов на С/С++ только в случае если на сях/плюсах программу писал хороший специалист, что в случае этих языков большая редкость. Поэтому зря ты его рядом с жабапарашей ставишь.
Аноним 22/05/20 Птн 10:52:08 #308 №1697365 
>>1697319
С утилитами на питоне-ноде проблема в том, что их неудобно разворачивать. Тебе помимо самой утилиты надо разворачивать среду для её запуска, вот это главная проблема, сложность.

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

Тебе нужно решить проблему, ты её решаешь. На ноде можно быстро разработать и запустить довольно сложное приложение, которых просто 20 лет назад не делали, точнее делали, но это были ОЧЕНЬ дорогие в разработке приложения. И всё равно с меньшими возможностями.
Аноним 22/05/20 Птн 10:57:54 #309 №1697371 
>>1697333
Сорта говна. Да, шарп быстрее жабы, но все равно тормозное дерьмо. С нормальными прграммами сравнивать нелепо. Эта хрень годится только для одноразовых утилиток вроде скриптов, чтобы запустил раз, закрыл и забыл.
Аноним 22/05/20 Птн 11:26:39 #310 №1697406 
>>1697371
Наиболее сложное ПО под винду сейчас на шарпе пишут.
Аноним 22/05/20 Птн 11:32:35 #311 №1697417 
>>1697371
>Сорта говна. Да, шарп быстрее жабы, но все равно тормозное дерьмо

Скажи это игорям на Unity.
Аноним 22/05/20 Птн 12:09:49 #312 №1697494 
>>1697417
Так в том числе про это он и говорит. Шарп не дает никаких преимуществ перед плюсами от слова совсем. Кодил много лет на С/С++/С#
У шарпа единственное преимущество, что его хорошо отрекламировали. Поэтому теперь, когда крупная фирма хочется взять прогеров на такой проект, где их нужно много, но предполагается сильная текучка кадров - вот там он заходит. Т.е. очевидный интерпрайз, для которого собственно он и был разработан как альтернатива яве.
Аноним 22/05/20 Птн 12:56:18 #313 №1697557 
>>1697494
>не дает никаких преимуществ
В том то и дело, что даёт. Он не навязывает тебе необходимость ебаться с задачами, которые можно сделать за пару минут. Речь про задачи которые не требуют максимальной производительности. При этом если у тебя возникают задачи, которые требуют максимальной производительности, то в таких случаях можешь и поломать голову, покрутить указателями, поманипулировать структурами и байтами. И самое главное - он не даёт тебе обосраться, при этом в плюсах даже в пустяковом месте можно закопать говно, которое испортит всё приложение. И всё это в обмен на ничтожный процент от скорости выполнения и увеличения потребляемой памяти.
>У шарпа единственное преимущество, что его хорошо отрекламировали
Сразу видно "много лет" кодящего и не следящего за обновлениями. Премущество шарпа в том, что его быстро и постоянно развивают, открой dev блог майков и посмотри на количество изменений которое внесли в C# с момента когда ты перестал на нём кодить.
Аноним 22/05/20 Птн 13:16:11 #314 №1697574 
>>1697557
Зачем это говно в качестве "клея", когда есть какой-нибудь питон/лисп/ваш любимый язык нейм?
>Премущество шарпа в том, что его быстро и постоянно развивают
Твой до диез существовал хуй знает сколько лет до появления кора, если я не ошибаюсь лет 15, в итоге на сервере его попросту не было, по факту была штука для десктопа. Зачем теперь коре на сервере, когда есть джава, я даже не знаю. Короче активно развивали, но не туда.
Аноним 22/05/20 Птн 13:45:10 #315 №1697608 
>>1697557
> В том то и дело, что даёт. Он не навязывает тебе необходимость ебаться с задачами, которые можно сделать за пару минут.
В том то и дело, что плюсы точно также. Да, если брать Си, то там уже есть проблемы, что новички в сложных проектах будут себе остреливать что-то. В плюсах этого нет.
> Премущество шарпа в том, что его быстро и постоянно развивают, открой dev блог майков и посмотри на количество изменений которое внесли в C# с момента когда ты перестал на нём кодить.
Я не переставал на нем кодит, писал же, что на всех трех работаю. Ну есть там частые обновления, что нормально для молодого языка. В других двух все устаканилось и выпускают раз в пару лет. Это вот вообще не показатель.
Аноним 22/05/20 Птн 14:16:58 #316 №1697630 
>>1697557
> Премущество шарпа в том, что его быстро и постоянно развивают
А недостаток в ограниченной применимости - за пределами корпоративщины он нахуй не нужон, в том числе микрософту - даже Скайп они новый сделали на Электроне.
У Шарпа просто нет киллер-фич, ради которых стоило бы терпеть прожорливый рантайм и заточенность под экосистему шындовса. Даже у пет-проектов типа Зиги или Ви есть вау-эффект, а о Шарпе можно только унылую презентацию в паверпоинте сделать, на тему "чуть более лучше, но это не точно".

>>1697608
> В плюсах этого нет.
Ой, не пизди, пожалуйста. Новичок может получить контузию, попытавшись осмыслить какую-нибудь хуету на Бусте.
Аноним 22/05/20 Птн 15:28:17 #317 №1697697 
>>1697608
>молодого языка
>язык появился в 2000, на 5 лет позже жавы
В голос.
>>1697630
>даже Скайп они новый сделали на Электроне.

Скайп на электроне появился еще до .NET Core, и другой возможности сделать кроссплатформенное приложение тогда не было. И появится она только через пару месяцев, сейчас инструмент (.NET MAUI) для создания таких приложений находится на стадии превью.
Вот именно это называется "не стоит на месте и развивается", они повернулись лицом к опенсорсу, они делают упор на нужные вещи.
Да 2 года назад шарп был всего лишь альтернативой Java, но сейчас эта жаба даже и рядом не стоит.
Аноним 22/05/20 Птн 15:39:12 #318 №1697716 
>>1697697
Ты треплешь как маркетолох рекламный, который программ не писал. Кому нужен язык, на котором сегодня пишешь, а завтра он уже устарел, наклепали нового. Это параша рака самая настоящая, типичное скриптовое вебговно. Зачем это дерьмо в ситреде? Иди толсти в другом месте, свинья.
Аноним 22/05/20 Птн 15:40:24 #319 №1697719 
>>1697333
>если на сях/плюсах программу писал хороший специалист, что в случае этих языков большая редкость
Насколько же петушиная манипуляция, не могу предоставить аргументы - выдумаю статистику.
Аноним 22/05/20 Птн 17:55:04 #320 №1697830 
>>1697697
> другой возможности сделать кроссплатформенное приложение тогда не было.
И тут мы понимаем, что знаем дотнет лучше его евангелиста.
Аноним 22/05/20 Птн 18:27:25 #321 №1697866 
>>1697719
Тебе аргументы нужны для осознания того, что более сложный инструмент требует больших навыков от того кто им пользуется, и чем больше этих требований, тем меньше будет хороших специалистов для конкретного инструмента? Это очевидно для всех кроме тебя.
>>1697830
И тут ты называешь замену электрону, которую можно также скомпилировать один раз и запускать в любой системе.
Аноним 22/05/20 Птн 18:35:31 #322 №1697876 
>>1697866
>И тут ты называешь замену электрону, которую можно также скомпилировать один раз и запускать в любой системе.
Электрон так не работает?
Аноним 22/05/20 Птн 19:26:45 #323 №1697942 
>>1697866
> И тут ты называешь замену электрону, которую можно также скомпилировать один раз и запускать в любой системе.
Слово из семи букв. Угадаешь, или будешь крутить барабан?

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

Кмк, тут ещё играет роль самомнение программистов: качество софта на манагед языках ограничено сверху, сделать супер-быстро и супер-круто на них не получится. Вряд ли кто на досуге хочет писать сразу говно. Наверное, исключение в виде Электрона держится потому, что писать под него - это типа паралимпиады и проходит по статье расходов на дайверсити.
Аноним 22/05/20 Птн 19:30:23 #324 №1697954 
>>1697866
>Тебе аргументы нужны для осознания того, что более сложный инструмент требует больших навыков от того кто им пользуется, и чем больше этих требований, тем меньше будет хороших специалистов для конкретного инструмента
Опять петушиная хуйня. Если убрать все петушение, у тебя написано: "по-моему, С++ более сложный для написания более быстрого софта".
Что, конечно же, неправда. С++ более сложный язык, но ровно потому, что в нем zero overhead абстракции везде, и писать более быстрый код на нем проще.
Аноним 22/05/20 Птн 19:34:29 #325 №1697965 
Возвращаясь к сабжу. Аноны, сволочи вы - я спрашивал про simd в сишечке, и никто мне не сказал про gcc/clang vector extensions, никто. А ведь оно почти что решение всех моих проблем :(
sageАноним 22/05/20 Птн 21:14:48 #326 №1698182 
>>1697954
> zero overhead абстракции везде
> писать более быстрый код на нем проще
Так может говорить только человек, никогда не видевший, как в дизасме сишная строка конвертируется в std::string, которая конвертируется в QString, которая передается в функцию, которая делает из строки QByteArray, у которого просят data() с изначальной, блять, сишной строкой. Три ебаных страницы преобразований, чтобы сделать НИХУЯ. И это в крестах повсюду.
Аноним 22/05/20 Птн 22:21:43 #327 №1698280 
>>1698182
А ещё эта самая нулевая стоимость абстракций выглядит насмешкой, когда у тебя ассемблерный код короче, чем определение хитровыебанного итератора.
Аноним 22/05/20 Птн 22:34:47 #328 №1698305 
>>1696874
>охуенный лаконичный язык в котором нет ничего лишнего
А при чём здесь Питон??
Аноним 22/05/20 Птн 22:36:45 #329 №1698311 
>>1698182
Да, я такого никогда не видел, потому что ты это придумал только что.
Аноним 23/05/20 Суб 00:53:53 #330 №1698503 
>>1696874
Расскажи это опенсорс сообществу.
Аноним 23/05/20 Суб 03:25:59 #331 №1698606 
>>1698305
Ни при чём.
Из скриптовых лаконичный ничего лишнего это Lua.
Аноним 23/05/20 Суб 03:28:03 #332 №1698610 
c++ тред утонул, кажется, спрошу здесь.

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

В идеале мне нужно ker(1,2,asd) превратить в <1] <2] <asd], то есть обернуть каждый из параметров в говно и убрать запятые, количество параметров заранее неизвестно и это должно быть кодом, а на текстом.
Это возможно как-то хотя бы?
Аноним 23/05/20 Суб 03:33:09 #333 №1698611 
>>1698182
>QString
>в крестах
Кутэ - не кресты, а левый парашный DSL для тормозной говнопараши. Считай это аналогом джаваскрипта, не ошибешься в главном.
Аноним 23/05/20 Суб 03:41:41 #334 №1698613 
>>1698610
Почитай главу C Primer Plus про препроцессор.
Аноним 23/05/20 Суб 06:31:58 #335 №1698632 
>>1698610
> В идеале мне нужно ker(1,2,asd) превратить в <1] <2] <asd], то есть обернуть каждый из параметров в говно
Нееш... Не делай так, возьми внешний кодогенератор, если собираешься собирать выражения по кускам. Но ты можешь, конечно, сделать так: https://ideone.com/F5ANke

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

> #, ##
# преобразует аргумент макроса в строку. ## склеивает два токена в один (иногда).
Аноним 23/05/20 Суб 11:06:37 #336 №1698720 
>>1697942
>Наверное, исключение в виде Электрона держится потому, что писать под него - это типа паралимпиады
>му-хрю нинужна
Мелкомягкие написали на элекиютроне иде vscode, которая охуенна.
Аноним 23/05/20 Суб 13:43:24 #337 №1698807 
>>1698720
>vscode, которая охуенна
дело вкуса, лично тебе может и нравится
Аноним 23/05/20 Суб 16:48:55 #338 №1698987 
Есть инфа, почему в единственном божественном и незаменимом Си нет такой нативной реализации работы с бинарными файлами, чтоб не доебаться было? implementation independent типы не зашиты, а в определены в stdint.h, packed-структуры вообще нестандартная, а endianness, того хуже, или руками конвертируй, или сетевую библиотеку тащи (htons/ntohs/htonl/ntohl)? Не дай Боже мне вас троллить. Си люблю и обожаю, обязан ему формированием своей кодерской личности. Просто я действительно не вполне понимаю. Одни догадки. Дискасс.
Аноним 23/05/20 Суб 17:04:29 #339 №1699011 
>>1698987
А как можно получить нативность в языке программирования без всяких там байтовых машин, если разные аппараты использовали разные порядки?
мимо-нюфак
Аноним 23/05/20 Суб 17:26:46 #340 №1699044 
>>1699011
Я не об этом. Я прекрасно понимаю, что типы первого порядка таковы, чтоб их реализация на ассемблере под архитектуру была самой прямолинейной. Но почему в стандарт не завезут возможность не класть 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)));

Если где-то опечатался, не обессудь.
Аноним 23/05/20 Суб 17:28:15 #341 №1699046 
>>1698987
Так исторически сложилось - Си изначально разрабатывали под машину PDP-7 с 18-битным словом, на байты индустрия окончательно перешла только в 80-е. То, что в C99 для типов отдельный хидер - дань совместимости со всяким архаичным говном.
Аноним 23/05/20 Суб 17:29:20 #342 №1699048 
>>1699044
>uint32_t eroha_size_in_nm;
>fread(borda, sizeof(huetred_t), n, fborda)
>fread(borda, SZ_HUETRED, n, fborda)
конечно же
Аноним 23/05/20 Суб 17:30:51 #343 №1699050 
>>1699046
>дань совместимости
так пусть просто сделают не хэдер, а keyword-ы ...8/16/32/64t зашьют, МНЕ ТАК ПРИЯТНЕЕ БУДЕТ)
Аноним 23/05/20 Суб 17:32:18 #344 №1699052 
>>1699044
>void ∗borda = calloc(n, SZ_HUETRED);
еще один фикс
Аноним 23/05/20 Суб 17:35:15 #345 №1699057 
>>1699050
В то время у всех уже были свои кейворды под типы фиксированной ширины, чаще всего - разные по названию, всегда - зависиящие от компилятора. Вынесение стандартных кейвордов в хидер позволяло не ломать старый код. Насколько Си обратно совместим, я как-то увидел сам, скомпилировав древний Дристон 30-летней давности под современный микроконтроллер.
Аноним 23/05/20 Суб 17:41:15 #346 №1699064 
>>1699044
По сетке всё кладется, потому что теоретически есть платформы, которые могут читать-писать только выровненные по слову данные. Если паковать всё по байтам, ты получишь штраф на доступ к полям - их придется выделять из слова сдвигами и and-ами - и нарушение атомарности доступа к словам. Короче, если знаешь, что делаешь - используй битовые поля или расширения компилятора.
Аноним 23/05/20 Суб 18:13:26 #347 №1699108 
>>1699050
А ничего, что киворд станет ЗАРЕЗЕРВИРОВАННЫМ,
поэтому многое ПОЛОМАЕТ?
Аноним 23/05/20 Суб 18:41:20 #348 №1699154 
Лучше бы сделали параллельную ветку С, без необходимости в совместимости с абаками из 70х. Да есть куча либ, которые сразу так просто не заведутся, но это поправимо.
Просто современный С, куча бы народу перешло. Rust вообще не то
Аноним 23/05/20 Суб 19:11:56 #349 №1699183 
>>1699154
По-моему, Си не улучшают, т.к. сами стандартизаторы языка считают, что лучше б он сдох. Иначе трудно объяснить, почему в ни в C18, ни C20 нихуя нового нет. Тут уже впору говорить не об удобном Си, а о легковесном Расте.
Аноним 23/05/20 Суб 19:18:53 #350 №1699198 
>>1699183
Потому что в С уже есть все, что нужно. Добавлять всякий синтаксический сахар никому не нужно. Также у них есть перед глазами пример С++, когда в язык пихают фичи и он превращается в кошмар.
Аноним 23/05/20 Суб 19:25:00 #351 №1699218 
>>1699198
Беда C++ не в обилии фич, а в совместимости с C и вывертах шаблонов. Если бы Кресты использовали дженерики вместо шаблонов и будь у них более удачный синтаксис - была бы у народа к ним вечная любовь. А так, оба языка будто специально хотят выставить программиста дураком.
Аноним 23/05/20 Суб 20:17:14 #352 №1699266 
>>1699064
> теоретически есть платформы, которые могут читать-писать только выровненные по слову данные
Почему теоретически? Есть ARM 32-битный, есть PowerPC, есть SSE в том же x86 со всеми его movaps.
Аноним 24/05/20 Вск 01:59:06 #353 №1699619 
> int * const ptr
Нахуя?
Аноним 24/05/20 Вск 03:46:31 #354 №1699643 
>>1699619
Обычно нинужно. Например, чтобы намекнуть, что это указатель на единственную переменную типа int, а не на массив.
Аноним 24/05/20 Вск 06:34:26 #355 №1699661 
c.png
Есть два вектора каких-то ресурсов. Второй vecB хранит указатель на ресурс из vecA. Когда происходит изменение vecA, то, логично, происходит смещение всех указателей в vecB.
Как такое обыгрывают гуру?
Вижу два подхода:
1) для A использовать другой конетйнер - ассоциированный динамический массив, но это чуть ударит по скорости обхода всех элементов и времени обращения к конкретному элементу. Т.е. по сути вместо ссылки на элемент A будем хранить некий хеш-id, по которому будем обращаться.
2) Умные указатели:
хранить в каждом элементе A такой же динамический вектор на те элементы B, которые его используют, чтобы при каком-то изменении структуры A, элемент мог бы обратиться к нужным элементам B и перезаписать им указатели уже на новые элементы или просто занулить.
Аноним 24/05/20 Вск 08:24:13 #356 №1699680 
>>1699057
> хидер

Лол какая мариванна тебя так научила транслитерировать слово "хедер", когда можно использовать русское "заголовок"?
Аноним 24/05/20 Вск 08:34:21 #357 №1699682 
>>1699680
какая тебе разница как он говорит, его понимают - этого достаточно
если лично ты не понимаешь - это только твои проблемы
Аноним 24/05/20 Вск 08:49:04 #358 №1699684 
>>1699682
kAa Ya LUblue kaDa mINiA PAnimAu taaK priYtno tbI HE pOversh
Аноним 24/05/20 Вск 10:08:23 #359 №1699704 
>>1698987
Да потому что C это не про файлы. В софте мелких микроконтроллеров они крайне редко применяются. Зато код на них легко переносится.
Аноним 24/05/20 Вск 10:23:12 #360 №1699707 
А ты шутник.
Аноним 24/05/20 Вск 10:27:27 #361 №1699709 
>>1699661
На элемент А может быть несколько ссылок из Б?
А обязан быть вектором?
Аноним 24/05/20 Вск 10:30:31 #362 №1699711 
>>1699684
alo yoba eta ty!?
Аноним 24/05/20 Вск 10:53:20 #363 №1699718 
>>1699709
Может, это просто ресурс. Банальный пример - это загруженная картинка.
Нет, можно заменить и другим контейнером, для этого в пункте 1 и описал, что замена на ассоциированный динамический массив. Но не хотелось бы сильно замедлять обход по ссылкам на следующие элементы и хранить единым блоком в памяти как в векторах.
Аноним 24/05/20 Вск 11:26:00 #364 №1699731 
>>1699661
3) Глупые указатели: в каждый элемент А добавляем номер первого элемента B, который на него ссылается. В каждый элемент В добавляем номер следующего элемента B, который ссылается на тот же элемент А.
Аноним 24/05/20 Вск 11:32:53 #365 №1699738 
>>1699731
интересный вариант.. наверное самый лучший пока что..
Аноним 24/05/20 Вск 12:54:35 #366 №1699808 
Что скажите про книгу "C для программистов" П. Дейтл и Х. Дейтл.?
Аноним 24/05/20 Вск 17:49:16 #367 №1700303 
изображение.png
>>1698632
Мм, спасибо, то что нужно.
>Я хуй знаю, что еще с этим сделать.
Питоновский with краду.

Просто балуюсь, но вроде удобно получилось, почти как родные for или if - буду в своих проектах использовать. Осталось только порядок развернуть.
Там внутри if(...;true) где в первой секции создаются временные объекты, аналог __leave__ вызывается в их деструкторах. Ещё думал как сделать аналог as через дефайн или синтаксис типа with(c=a,b), но так и не придумал - впрочем, он не очень и нужен.
А ещё сейчас пришло в голову глядя на std::tuple, что возможно это можно чисто через шаблон сделать - я просто не очень по шаблонам, мягко говоря - и твой подход мне понятнее.
Аноним 25/05/20 Пнд 08:02:12 #368 №1701127 
>>1699731
А у этого подхода есть какой-то англоязычный термин?
Аноним 25/05/20 Пнд 09:16:29 #369 №1701157 
>>1701127
Вряд ли. Это просто список владельцев объекта. А индексы вместо указателей позволяют экономить место.
Аноним 25/05/20 Пнд 09:24:05 #370 №1701165 
>>1701157
Ну тут место не экономится, а скорость изменения. За счет такого подхода при изменении вектора А, нужно только изменить его самого и в одном элементе вектора B изменить указатель. Но если все хранить в А, тогда надо менять всех владельцев, ссылавшихся на А.
Аноним 25/05/20 Пнд 09:38:17 #371 №1701180 
>>1701165
А, ну это называется indirection :)
Аноним 25/05/20 Пнд 19:59:00 #372 №1702324 
Какой IPC между ядром и юзерспейсом самый быстрый в Линуксе? Расшаренный буфер - это и ежу понятно, а как насчет коротких сообщений? Сигналы покатят?
Аноним 25/05/20 Пнд 21:53:42 #373 №1702450 
>>1702324
Ты толстишь или просто почву в треде так прощупываешь?
Аноним 26/05/20 Втр 00:25:45 #374 №1702630 
>>1702627 →
Аноним 26/05/20 Втр 00:28:40 #375 №1702632 
>>1702324
https://en.wikipedia.org/wiki/Zero-copy
https://lwn.net/Articles/752188/
Расшаренные буфера нинужны.
Аноним 26/05/20 Втр 00:34:12 #376 №1702636 
>>1702632
Вангую примерно об этом был спор двух старых пездюков линуса и таненбаума.
Если ты пилишь микроядро, архитектурно дрова будут общатся с ядром и юзерспейсом сообщениями, а такая абстракция почти наверняка предполагает расшаренные буфера.
Аноним 26/05/20 Втр 01:01:45 #377 №1702650 
>>1702450
В чем проблема моего вопроса, лолват? Ядро Линукса написано на Си, я думаю, здесь есть аноны, которые шарят в системном программировании в среде Линукса.
Аноним 26/05/20 Втр 03:52:28 #378 №1702703 
Блять, ебал я ваши указатели на указатели на указатели
Аноним 26/05/20 Втр 07:55:04 #379 №1702747 
>>1702324
>Какой IPC между ядром и юзерспейсом самый быстрый в Линуксе

ioctl+device file i/o

Другого нет.
Аноним 26/05/20 Втр 08:01:59 #380 №1702749 
>>1680461 (OP)
Как засунуть .dll внутрь Portable EXE?

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

Слышал про какие-то .rc-файлы, где dll-файл можно в виде resource как-то привинтить,
но чёт не пойму нифига.
Аноним 26/05/20 Втр 09:28:45 #381 №1702767 
>>1702749
STATIC LINKING
Аноним 26/05/20 Втр 09:43:00 #382 №1702775 
>>1702324
> IPC между ядром и юзерспейсом
IPC --> между процессами
Между процессами оче здорово работают пипы.

> Сигналы покатят?
Не используй сигналы для этого.
Аноним 26/05/20 Втр 09:59:29 #383 №1702783 
>>1680461 (OP)
Аноны, какой тулзой собирать проект из нескольких .so? Раньше вполне устраивал make, но вот решил замахнуться на что-то по-больше и этот самый make уже порядком заёбывает, так как каждая либа собирается со своим собственным набором флагов в собственных директориях. Если все за Cmake, то где можно почитать про написание своих сценариев, где всё по-нормальному разъжёвывается?
Аноним 26/05/20 Втр 10:05:15 #384 №1702786 
>>1702783

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

Если долбишь петон есть scons
Аноним 26/05/20 Втр 11:20:15 #385 №1702827 
>>1702783
gyp -> ninja?
Аноним 26/05/20 Втр 15:12:28 #386 №1703132 
>int short int или даже char
это мамкино оптимизаторство?
Аноним 26/05/20 Втр 15:13:37 #387 №1703137 
>>1702749
Удваиваю вопрос. Самому пришлось ебацца с ентими .rc, тот еще опыт...
Аноним 26/05/20 Втр 15:36:31 #388 №1703174 
>>1703132

2 случая

Или ты черпаешь структурой заранее известные бинарные данные из файла не проебав при этом оконечность или ты оптимизируешь под килобайты оперативы (мк/8 бит компы), в остальных случаях ты получишь невыровненный доступ.
Аноним 26/05/20 Втр 15:58:39 #389 №1703211 
>>1702324
> Inter process communication
> между ядром и юзерспейсом
> в Линуксе
Лол...
Аноним 26/05/20 Втр 16:16:42 #390 №1703231 
>>1703132

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

Синьор: unsigned char a[10000000L];
Аноним 26/05/20 Втр 17:01:25 #391 №1703321 
>>1703211
А ты не знал, что процессы в пространстве ядра могут обмениваться данными с процессами, которые исполняются в пространстве пользователя? Это троллинг такой или что?
Аноним 26/05/20 Втр 18:06:26 #392 №1703440 
>>1702636
Если ты пилишь микроядро, дрова у тебя будут примерно сбоку.
https://yarchive.net/comp/linux/kernel.html
Аноним 26/05/20 Втр 18:10:26 #393 №1703448 
>>1702749
> Как засунуть .dll внутрь Portable EXE?
Никак. Т.е., теоретически было в интернетах несколько проектов, которые рипают код из длл и делают obj, но там куча нюансов, из-за которых на практике скорее всего будут проблемы.

> где dll-файл можно в виде resource как-то привинтить
Вот так можно, но это тоже не беспроблемный костыль. Пишешь name RCDATA "mydll.dll" в .rc, компилируешь rc/windres filename.rc, с полученным filename.res/.o линкуешься. При старте делаешь FindResource/LoadResource/CreateFile куда-нибудь во временную директорию/WriteFile данных из ресурса, грузишь LoadLibrary, получаешь указатели на функции GetProcAddress. Никакого связывания через таблицу импортов, конечно же, иначе твоя программа просто не запустится.
Аноним 26/05/20 Втр 18:16:14 #394 №1703455 
>>1703321
Анончик, откуда ты возьмеш процесс (поток) ядра?
Ты драйверописатель?
Аноним 26/05/20 Втр 19:13:24 #395 №1703507 
>>1703321
>процессы в пространстве ядра
Какие процессы нах, есть треды ядра, в которых делают copy_to_user, copy_from_user.
Аноним 26/05/20 Втр 19:19:48 #396 №1703510 
>>1703455
Из API операционной системы. Это же основы синхронизации потоков. Мьютексы и Семафоры на этом строятся.
Аноним 26/05/20 Втр 20:43:41 #397 №1703603 
Где прочитать про стандартные вещи, типа оборачивания кода в хедерах во что-то наподобие
#ifndef %HEADERNAME%_H
#define %HEADERNAME%_H
...
#endif / %HEADERNAME%_H /
? Про всякие распространенные в использовании вещи, типа make, и паттернов, наподобие вышепредставленного, и зачем они вообще нужны?
Аноним 26/05/20 Втр 21:31:11 #398 №1703663 
>>1703603
В прате есть.
Аноним 26/05/20 Втр 21:58:40 #399 №1703715 
>>1703663
Спасибо.
Аноним 27/05/20 Срд 02:37:22 #400 №1703985 
>>1703321
Это называется I/O, маня, а не IPC.
Аноним 27/05/20 Срд 08:40:38 #401 №1704052 
>>1703510
Все с тобой понятно.
Аноним 27/05/20 Срд 13:13:00 #402 №1704224 
>>1703985
Нет, Маня, это IPC. Почитай про те же netlink sockets и не выебывайся, если ты не шаришь в этом.
Аноним 27/05/20 Срд 17:26:52 #403 №1704476 
14297873859250.jpg
Подскажите, плез.

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

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

https://pastebin.com/wstdHFRZ
Аноним 27/05/20 Срд 18:01:52 #404 №1704523 
>>1704476
Твоя функция обёртка получает те же типы данных, что и обёртываемая? Какой в ней смысл тогда? Что она делает?
Аноним 27/05/20 Срд 18:03:44 #405 №1704526 
>>1704476
(void *)recvbuf должно бы работать.
Ты где-то еще проебался.
Аноним 27/05/20 Срд 18:07:04 #406 №1704528 
>>1704523
В обёртке ещё пара вспомогательных функций запихано. Они не относятся к обёртываемой функции.

Разве изменение типов принимаемых аргументов функции-обёртки поможет?
Аноним 27/05/20 Срд 18:08:49 #407 №1704531 
изображение.png
>>1704476
Берёшь и без задней мысли всовываешь.
Аноним 27/05/20 Срд 18:17:53 #408 №1704542 
>>1704224
> пук среньк, иди почитай
Ясно.
Аноним 27/05/20 Срд 18:25:52 #409 №1704550 
i432.png
Почему появляется данная ошибка? Пофиксил заменив sizeof на 8, но все же интересно.
Аноним 27/05/20 Срд 18:26:13 #410 №1704553 
>>1704531
При подстановке напрямую варнинг: pointer targets in passing argument 2 of 't_data_recieve' differ in signedness [-Wpointer-sign]

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

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

Если что - прилечу на жопной тяге.
Аноним 27/05/20 Срд 18:29:34 #411 №1704558 
>>1704550
(sizeof(insigned long)) потом умножение
Аноним 27/05/20 Срд 18:30:43 #412 №1704560 
>>1704550
А stdio подключил? Или пути не правильные.
Аноним 27/05/20 Срд 18:39:52 #413 №1704573 
изображение.png
>>1704553
Тогда так. Почти без задней мысли.
Аноним 27/05/20 Срд 18:40:49 #414 №1704575 
>>1704550
Не используй sizeof в выражениях, которые вычисляет препроцессор, он не умеет:
#if sizeof(int)==4
Аноним 27/05/20 Срд 19:00:14 #415 №1704584 
>>1704575
Обычно CMAKE вычисляет sizeof и создаёт директиву препроцессора типа SIZEOF_INT
мимопроходил из крестотреда
Аноним 27/05/20 Срд 19:16:58 #416 №1704610 
i734.png
>>1704575
>>1704560
Код не мой, это qemu https://www.qemu.org/ .
Просто обычно он у меня без проблем компилировался, это на дебиан пересел сейчас, после чего появилась эта ошибка. Видимо от компилятора тоже зависит, может здесь gcc староват 8.3.
Аноним 27/05/20 Срд 19:38:30 #417 №1704637 
>>1704542
обосрался - обтекай :-)
Аноним 28/05/20 Чтв 11:27:35 #418 №1705243 
А #define RAZMERCHIQUE_H sizeof(H)
тоже мамкино оптимизаторство? Ведь компилятор же просто sizeof() на препроцессировании хуйнёт заместо макроса.
И по поводу дейта элайнмент, я сделал правильный вывод, что все примитивы желательно подстраивать под машинное слово, ну или в х64 использовать хотя бы 4 байта?
алсо такая хуйня возникает из-за того, что ЦПУ быстрее высчитывает адреса посредством битового сдвига, верно же?
Аноним 28/05/20 Чтв 11:43:24 #419 №1705308 
>>1705243
>тоже мамкино оптимизаторство
Да. Иногда улучает читаемость.
>дейта элайнмент
Значения указателей должны быть выравнены:
char buf[100];
int p = (int )buf <--------- ГРОБ ГРОБ КЛАДБИЩЕ
>все примитивы желательно подстраивать под машинное слово
Желательно использовать int, в среднем по больнице он быстрее других типов или требует меньше кода.
>ЦПУ быстрее высчитывает адреса посредством битового сдвига
Нет. Не путай с выражениями a, там компилятор всунет умножение, если sizeof(*a) не степень двойки.
Аноним 28/05/20 Чтв 13:32:38 #420 №1705522 
>>1704573
Это снова я.

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

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

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

Отправить, сука, получилось - а принять - борода.
Аноним 28/05/20 Чтв 13:44:00 #421 №1705546 
>>1705522
Зря функция ввода не возвращает число байт или признак ошибки.
hsspiHandle инициализован?
Аноним 28/05/20 Чтв 13:54:16 #422 №1705574 
>>1705546
>hsspiHandle инициализован?
Да.
Аноним 28/05/20 Чтв 14:07:05 #423 №1705586 
2020-05-28-135445436x59scrot.png
Почему пикрелейтед условия выдают разные результаты? Логика же одинаковая, просто записано по-разному.
Аноним 28/05/20 Чтв 14:45:04 #424 №1705620 
>>1705586
Не одинаковая верхнее проверяет только первый бит, при чем он может быть равен единице только если i = 0, при всех остальных i верхнее условие гарантировано не выполняется. Чтобы они были равноценны нужно как минимум ==1 заменить на > 0 и !=1 на ==0. Может еще что поправить, лень вглядываться.
Аноним 28/05/20 Чтв 19:00:56 #425 №1706012 
>>1705522
Просто на всякий случай спрошу. Ты понимаешь как работает SPI и то, что приёмник и передатчик выталкивают друг у друга данные из буферов и по кругу их гоняют?

Походу у тебя проблема не с типами. Замени char recvbuf[129]; на uint8_t recvbuf[129]; и всё делов-то, а потом обрабатывай и кастуй этот массив как хочешь после приёма.
Скорей всего у тебя проблемы с настройкой модуля SPI или с алгоритмом работы. Ты можешь с уверенностью сказать, что настройки модуля и алгоритм работы реализованы корректно?
Аноним 29/05/20 Птн 04:10:32 #426 №1706389 
la.png
>>1706012
>Ты понимаешь как работает SPI
Честно - не очень. Не беспокоит до тех пор, пока работает.

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

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

Да алгоритм, вроде, немудрёный:
1) Мастер шлёт данные каждые 100мс, проверяя флаг от прерывания на чтение;
2) получил мастер прерывание, сперва чтение, потом передача;
3) го ту п1.
Аноним 29/05/20 Птн 08:51:18 #427 №1706436 
>>1705308
>char buf[100];
>int p = (int )buf <--------- ГРОБ ГРОБ КЛАДБИЩЕ
Почему?
Аноним 29/05/20 Птн 09:11:38 #428 №1706442 
>>1706436
(там звездочки после инт были, двач их съел)
Потому что адрес char buf[] может быть невыравненным для инта.
На x86 работать будет, но медленнее.
Аноним 29/05/20 Птн 09:12:50 #429 №1706444 
>>1706442
>(там звездочки после инт были, двач их съел)
А ну ок, не догодался чёт.
Аноним 29/05/20 Птн 10:18:50 #430 №1706507 
>>1705308
>Нет. Не путай с выражениями a, там компилятор всунет умножение, если sizeof(*a) не степень двойки.
Так и вы вроде также говорите. Если размер - степень двойки, то вычисление адреса происходит через логический сдвиг влево shr, иначе через слоупочную mul.
Аноним 29/05/20 Птн 10:19:17 #431 №1706510 
>>1706507
>shl
разумеется
Аноним 29/05/20 Птн 21:07:58 #432 №1707341 
>>1706507
> через слоупочную mul
Не такая уж она и слоупочная, latency три такта, и ту можно скрыть, считая в это время что-то другое. Алсо, вычисления адреса часто делается через цепочку add и lea, это тоже относительно быстро.

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

Выравненные данные от этих проблем избавлены, потому что и границы блоков кэша, и границы страниц - все это выравнено сильнее, чем может быть необходимо процессору. Например, кэшлайн 64 байта, а максимум, что хочет процессор с AVX - это 32 байта для всяких там vmovaps.
Аноним 30/05/20 Суб 04:55:22 #433 №1707679 
C++ тред 111-й у кого-нибудь открывается?
https://2ch.hk/pr/res/1693081.html
Аноним 30/05/20 Суб 05:19:51 #434 №1707687 
>>1707679
Да.
Аноним 30/05/20 Суб 05:50:08 #435 №1707691 
>>1707679
почисти куки вилкой
Аноним 30/05/20 Суб 14:30:17 #436 №1707934 
А как адекватно оценить количество адресов в условном void(две звездочки)?
Аноним 30/05/20 Суб 14:35:34 #437 №1707944 
>>1707934
Если в конце есть что нибудь вроде \0 в строках — то берёшь размер указателя и итерируешь пока не найдёшь конец.
Если нет — никак.
Аноним 30/05/20 Суб 16:18:11 #438 №1708085 
Как спасти мертвый код от гцц?
пробовал такое:
-O0 -fno-delete-dead-exceptions,
но он всё равно вырезает нахуй
Аноним 30/05/20 Суб 17:18:46 #439 №1708167 
>>1708085
volatile
o
l
a
t
i
l
e
Аноним 30/05/20 Суб 19:35:24 #440 №1708358 
>>1707691
Чистил editmyсookoй в хроме. Нихуя. ФФ открывает нормально.
sageАноним 30/05/20 Суб 19:52:04 #441 №1708387 
>>1708358
Там скорее надо не куки чистить, а localStorage. В консоле браузера скажи localStorage.clear() или, если жалко закладки и отметки постов, десериализуй localStorage.store из жсона, удали оттуда кэши всякие, сериализуй и запиши обратно.
Аноним 31/05/20 Вск 23:00:54 #442 №1709521 
idiv на asm медленней чем div() функция? Мне нужно разделить int и получить ответ с остатком. Делал через % и / операторы и через div() функцию. Потом прочитал, что idiv инструкция делает тоже самое. Написал asm код, но в итоге он получился медленней чем div() функция и почти в 3 раза медленней чем % и /. Так и должно быть?
Аноним 31/05/20 Вск 23:17:30 #443 №1709527 
>>1709521
>Так и должно быть?
В теории - нет, на практике - да. Суть в том, что компилятор не знает, что происходит в asm-коде, так что сохраняет переменные из регистров в память, а после - обратно.
Аноним 01/06/20 Пнд 00:53:09 #444 №1709577 
Здравствуйте уважаемые.
Не знаю куда обратиться, думаю что здесь самое то.
В midnight commander, mcedit, некорректно отображает подсветку синтаксиса.
Именно что некорректно, а не выключена.
Например:
В самом конфигурационном файле Syntax, есть include c.syntax, в котором, например, int обозначен как yellow, но все что должно быть жёлтым или коричневым - белое.
Аноним 01/06/20 Пнд 02:23:18 #445 №1709603 
>>1708085
Сделай статик ссылку на функцию/класс.
Аноним 01/06/20 Пнд 08:24:21 #446 №1709704 
>>1709521
Если у тебя было x=c/10,y=c%10, то кунпелятор это заменит на одно умножение.
div() не эквивалентна паре x/y, x%y, если x<0 || y<0
Ассемблер сразу нахуй, пиши портабельный код.
Аноним 01/06/20 Пнд 11:41:08 #447 №1709781 
Насколько сложно делать формальную верификацию кода на Си? К примеру, недавно появился F* язык fstar, ориентированный на написание формально верифицированных программ. Неужели на голом Си это сложнее? Я в этом не разбираюсь, поэтому спросил.
Аноним 01/06/20 Пнд 12:16:54 #448 №1709807 
>>1709527
>так что сохраняет переменные из регистров в память, а после - обратно
Вот кстати получил БИНАРНОЕ ДЕРЕВО с этой хуйни.
Им(конпеляторам) Родина дала более оптимальный апи64, юзай регистры сразу - не хочу, хочу из пустого в порожнее переливать.
Аноним 01/06/20 Пнд 14:36:58 #449 №1709924 
>>1709807
А, кстати, забыл сказать ещё одну возможную причину. Учитывай, что компилятор может оптимизировать деление и остаток в более дешёвые битовые операции.

>Родина дала более оптимальный апи64
Ты про registercall?
Аноним 01/06/20 Пнд 17:31:47 #450 №1710224 
c2RlbGFub3VuYXMucnUvdXBsb2Fkcy81LzcvNTcxMTU5MDk5NjA0Nl9vcml[...].jpg
>>1680461 (OP)
http://ftp.altlinux.org/pub/people/mike/elbrus/docs/elbrus_prog/html/

На сайте АО «МЦСТ» появилась новость о доступности руководства по эффективному программированию на платформе Эльбрус; в нём также содержится глава с описанием системы команд «Эльбрус», ранее не публиковавшейся. Книга выпущена под лицензией Creative Commons (CC-BY 4.0) в форматах HTML (архив) и PDF;
Аноним 01/06/20 Пнд 17:40:24 #451 №1710246 
>>1710224
>Эльбрус
>эффективное программирование
/0
Аноним 01/06/20 Пнд 17:45:11 #452 №1710254 
>>1710246
Тактическое врети?
Аноним 01/06/20 Пнд 17:48:15 #453 №1710256 
>>1710224
> глава с описанием системы команд «Эльбрус»
Значит, можно написать свой компилятор? GCC или Clang сможет портироваться на эльбрус взамен их проприетарного поделия?
Аноним 01/06/20 Пнд 20:16:34 #454 №1710379 
>>1709924
>Ты про registercall?
угу. не понимаю, почему нельзя сразу с регистрами работать. даже если аргументов дохуя, то и "свободных" регистров в х64 тоже предостаточно.
Аноним 01/06/20 Пнд 20:47:37 #455 №1710410 
>>1710379
>даже если аргументов дохуя
Потому что их очень редко бывает дохуя. В конвенции вызовов x64 на винде передаются в регистрах до 4 целочисленных и 4 с плавающей запятой, в юнихах до 6 int и 8 fp. Этого более чем достаточно для большинства задач, т.к. при большем количестве параметров их обычно упаковывают в struct или объект, который в обычный регистр не влезет.

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

Вообще, одна из самых важных причин, почему нет - представь оверхед от сохранения всех этих переменных из регистров, если тебе из той функции нужно будет вызвать другую, да ещё и не с теми аргументами. А такое сплошь и рядом. Так что оставь это для узконаправленных компиляторов вроде icc, которые в это таки могут; а для компиляторов общего назначения общепринятая конвенция будет лучше в большистве случаев, и нет смысла их плодить, как былые 32-битные.
sageАноним 02/06/20 Втр 01:10:54 #456 №1710606 
>>1710410
> который в обычный регистр не влезет
Поэтому структуры компилятор отлично раскладывает по нескольким регистрам. Алсо вы тут обсуждаете ABI, но забываете о том, что ABI - это внешний интерфейс. Если функция не торчит наружу, или если торчит, но код собирается с LTO, тогда компиляторы на эту ABI не смотрят и могут творить лютую дичь.
Аноним 02/06/20 Втр 04:05:58 #457 №1710632 
Есть ли в си единый оператор else if? Или это объединение двух операторов (else, if)?
sageАноним 02/06/20 Втр 04:54:27 #458 №1710637 
>>1710632
#elif
Аноним 02/06/20 Втр 05:06:01 #459 №1710642 
>>1710637
Это директива
Аноним 02/06/20 Втр 09:49:07 #460 №1710717 
>>1710632
А зачем тебе? Зачем множить сущности, если else if отлично работает?
Аноним 02/06/20 Втр 12:29:21 #461 №1710783 
>>1710717
Исходник на 3*n байт длинее
Аноним 02/06/20 Втр 13:18:16 #462 №1710805 
#define elif else if
Как тебе такое, Илон Маск?
Аноним 02/06/20 Втр 13:44:11 #463 №1710820 
>программирование под Эльбрус
Нахуя, если весь их маркетинг уже пару лет строился на том что они эмулируют х86?
Аноним 02/06/20 Втр 16:30:59 #464 №1710962 
>>1710254
Эльбрус = Itanium. Загугли два слова, если не знаешь: EPIC FAIL.
Аноним 02/06/20 Втр 16:36:00 #465 №1710974 
>>1710962
Вот и всепросральщик ничегоненужный прибежал
Аноним 02/06/20 Втр 16:36:16 #466 №1710975 
lvhngmwzjvpif378cj77omw09k4.jpeg
Аноним 02/06/20 Втр 16:50:56 #467 №1710984 
>>1710974
>>1710975
+15
Аноним 02/06/20 Втр 16:57:13 #468 №1710988 
>>1710984
Хрю хрю
Аноним 02/06/20 Втр 17:01:50 #469 №1710995 
>>1710974
Почему ничегоненужный? Нужный, но нахуя было делать ставку на дохлого коня? Пидораха - филиал Зазеркалья?
Аноним 02/06/20 Втр 17:17:53 #470 №1711018 
>>1710995
>дохлого коня?
Чому? Дохлый конь это Интел и АМД
Аноним 02/06/20 Втр 17:20:53 #471 №1711025 
>>1711018
Что, кроме МЦСТ никуда больше трудоустроиться не удалось?
Ты бы хоть залогинился или трип-код завёл, чтобы всем было удобнее.
Аноним 02/06/20 Втр 17:24:05 #472 №1711032 
>>1711025
А ты чего так рвешься, перемога обернулась зрадой? Байкал вполне няшный, в отличии от дырявых буржуйских поделок.
Аноним 02/06/20 Втр 17:24:43 #473 №1711035 
>>1711025
Ну это ты зря. Главная вувузела предыдущих итераций Эльбруса - Бабаян - в своё время сгребла своих толковых студентов в охапку и свалила в Интел. Эльбрус делает тебя успешным!
Аноним 02/06/20 Втр 17:29:13 #474 №1711042 
>>1711035
>свалила в Интел
Карандаши точить?
Аноним 02/06/20 Втр 17:35:46 #475 №1711050 
>>1711042
Кофе носить, мамкины съебаторы на большее не способны.
Аноним 02/06/20 Втр 17:46:03 #476 №1711066 
>>1711032
Байкал - это и есть буржуйская поделка, готовые ядра MIPS и ARM со своим обвесом. Рашка в 90-е что-то там лицензировала для полного цикла производства - DEC Alpha, по-моему - но как обычно бабло освоила и нихуя не сделала.
Аноним 02/06/20 Втр 17:48:54 #477 №1711071 
>>1711066
>бабло освоила и нихуя не сделала
Ох уж это либирашье вретии1111 Вы там сюда со Швабра набижали что ли?
Аноним 02/06/20 Втр 17:51:50 #478 №1711077 
>>1711071
>Вы там сюда со Швабра набижали что ли?
Чего уж со Швабра, с Плеббита сразу.
Аноним 02/06/20 Втр 17:54:14 #479 №1711081 
>>1711077
>Чего уж со Швабра
Более токсичного и русофобского ресурса чем Швабр я еще не встречал.
Аноним 02/06/20 Втр 18:14:25 #480 №1711102 
>>1711077
А что за Плеббит? Оттуда можно скачать свежие русофобские методички?
Аноним 02/06/20 Втр 18:22:59 #481 №1711110 
>>1711071
Нет, я агент США под прикрытием. Меня твоей мамаше внедрил лично Обама, от него у меня большой чорный хуй чтобы большой чорной струёй ссать в мытищинских подъездах. Но я его прячу в звёздно-полосатых трусах, так что не понимаю, как ты меня вычислил??
Аноним 02/06/20 Втр 18:39:07 #482 №1711119 
>>1711071
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? В чём суть?
Аноним 02/06/20 Втр 18:46:57 #483 №1711125 
>>1710975
Проприетарщина не нужна.
sageАноним 02/06/20 Втр 18:48:12 #484 №1711126 
>>1710975
Пять стадий:
1) Физлицам не продаем.
2) Нет компилятора.
3) Компилятор есть, но забагованный.
4) А документацию мы вам все равно не дадим.
5) Ебись оно конем.
Аноним 02/06/20 Втр 18:50:56 #485 №1711128 
>>1711119
>Кстати поясните нахуя МЦСТ свой ёбаный путь
Потому что делать что-то толковое задача не стояла с самого начала - у МЦСТ уже были свои наработки, и кого волнует, что они говно. Они в этом не одиноки, между прочим - IBM уже ГОДЫ не может найти лохов, которые возьмутся оптимизировать всякую ебанину типа NumPy и FFMpeg под SIMD их POWER8.
Аноним 02/06/20 Втр 18:53:20 #486 №1711130 
>>1711119
>Кстати поясните нахуя МЦСТ свой ёбаный путь, когда, например, VIA делает процы на x86-x64? В чём суть?
Вроде как в качестве отмазки говорили что-то про сертифицирование процессоров для нужд гос. структур. Для иностранных процов это дорого. Своё вроде-как дешевле.
Аноним 02/06/20 Втр 18:54:53 #487 №1711132 
>>1711126
Да всё там есть, и компилятор, и документация. Смысла только нет.
Аноним 02/06/20 Втр 18:56:49 #488 №1711136 
esqg.jpg
>>1711128
>делать что-то толковое задача не стояла с самого начала
>Частная компания
Ш т а ?
Аноним 02/06/20 Втр 18:57:44 #489 №1711139 
>>1711126
>>1711128
>>1711130
Ну так подождите, пусть они хоть нормально развернутся. Я считаю это успех, после либирашьего пануванья Ельцина и Горбачева.
Аноним 02/06/20 Втр 18:58:33 #490 №1711140 
>>1711132
>Смысла только нет.
Смысла нет в Украине, а в Эльбрусе есть.
Аноним 02/06/20 Втр 19:04:56 #491 №1711147 
>>1711132
Компилятор проприетарный, документация неполная.
Аноним 02/06/20 Втр 19:11:59 #492 №1711153 
>>1710256
Нет, документация скорее всего краткий обзор. Полезной инфы почти нет.
Аноним 02/06/20 Втр 19:13:16 #493 №1711154 
>>1711119
Купили исходник, убедились, что там нет закладок. Хорошо же!
Аноним 02/06/20 Втр 19:17:26 #494 №1711159 
>>1711154
Поделка-то чья?
Аноним 02/06/20 Втр 19:21:49 #495 №1711166 
>>1711136
Весь IBM POWER держался на вывертах политики лицензирования Oracle с оплатой по числу процессорных сокетов. Пока можно было напихать больше всех ядер в один проц - всё у них было збс, сейчас x86 их по этому показателю обгоняет и малина накрылась. Такшта ничего толкового сейчас в этой архитектуре нет.
Аноним 02/06/20 Втр 19:22:06 #496 №1711168 
>>1711159
Ядро буржуйское. А поделка в целом НАША, гречневая.
Аноним 02/06/20 Втр 19:31:10 #497 №1711177 
>>1711119
>Кстати поясните нахуя МЦСТ свой ёбаный путь, когда, например, VIA делает процы на x86-x64? В чём суть?
Потому что хуй86 это легаси говно на легаси говне, и все ради того, чтобы запускать шиндошс. Выпускать RISC процессор на купленной архитектуре нормальное решение
Аноним 02/06/20 Втр 19:38:01 #498 №1711183 
>>1711177
А блядь, про МЦСТ вопрос, я думал про байкал.
У МЦСТ свой путь из-за Бабаяна, он обещал дать всем посасать и перегнать всех со своим эльбрусом, а дальше как обычно это превратилось в эпический долгострой. При этом МЦСТ это московский центр спарк технологий, то есть еще одна лиценизуемая хуитка, SPARC
Аноним 02/06/20 Втр 19:41:43 #499 №1711189 
>>1711177
Большая часть этого легаси - заморочки с кодированием инструкций и полей в специальных регистрах. Никого за пределами разработчиков ОС и компиляторов это не касается. В Интел сидят толковые разработчики - в 90-х было полно ебаной дичи типа load delay slot-ов и нерабочего register scoreboarding-а, но они такого не допускали.
Аноним 02/06/20 Втр 19:53:25 #500 №1711206 
>>1711183
Я вот сейчас листаю патенты Babaian-а 20-летней давности, и оказывается, что современный Эльбрус на них и основан. Вот только дать посасать он может только Малинке предыдущих поколений, вот незадача. И да, я Спарк перепутал с Альфой, извините.
Аноним 02/06/20 Втр 19:53:25 #501 №1711207 
>>1711189
>Никого за пределами разработчиков ОС и компиляторов это не касается.
А это ты зря. Выкрутасы с декодерами касались всех, кто хотел холодный и экономичный компутер. Говенный x87 касался всех, кому нужна была производительность с ПТ. Ну и т.д.
Аноним 02/06/20 Втр 20:03:17 #502 №1711220 
>>1711207
Если посмотришь на другие архитектуры, почти у всех инструкции фиксированной ширины 4 байта, в то время как у x86 75% инструкций в 2-3 байта (данные от 2011 года). Когда 4КБ кэш инструкций считался большим, это был крутой выигрыш. С декодированием инструкций в середине 90х всё было збс, были процы Cyrix, которые делали это без микрокода, иногда быстрее самих Интелов. Вот x87 был неудачным решением - его, походу, с калькулятора срисовали.
Аноним 02/06/20 Втр 20:13:55 #503 №1711231 
>>1711220
Да, у x86 компактный код, и это хорошо для кэша.
Да, декодеры ели большинство команд x86 без выборки микрокода.
Но, чтобы декодировать x86 в темпе 1-3 команды на такт, декодеры приходилось делать очень сложными, отсюда расход энергии.

Аноним 02/06/20 Втр 20:16:45 #504 №1711237 
>>1711081
Швабр = Хабр?
Аноним 02/06/20 Втр 20:24:23 #505 №1711250 
Prescott90nmdietext1600x1200.jpg
>>1711231
Знаешь, ты, наверное, прав - на фото выделен декодер на 4insn/cycle, чтобы выполнять 20, как сейчас, он, наверное, должен разожраться, как свинья. Ещё я бы отметил миллипиздрическое число регистров: если в 80-х это было оправдано - у ARM2 весь АЛУ выглядел, как насадка на блок регистров, то сейчас это явная лажа. А вот было ли это причиной фэйла Атомов для мобил я даже гадать не буду, знаний не хватает :(
ПЕРЕКАТ Аноним OP 02/06/20 Втр 20:42:45 #506 №1711274 
>>1711268 (OP)
>>1711268 (OP)
>>1711268 (OP)
>>1711268 (OP)
>>1711268 (OP)
Аноним 02/06/20 Втр 20:53:08 #507 №1711292 
>>1710717
Просто интересно стало.
Аноним 02/06/20 Втр 20:59:04 #508 №1711302 
>>1711237
Да
Аноним 04/06/20 Чтв 20:29:13 #509 №1713295 
>>1710805
Кстати, а можно как-то выборочно проэкспандить такую надмозговую хуету? Ну, чтоб адекватные макросы оставить.
Аноним 04/06/20 Чтв 20:31:11 #510 №1713298 
>>1711140
Вот зачем соль на рану сыпешь? Я всеми силами пытаюсь отвлечься от токсичных мыслей про эту клоунскую систему. Мне, блядь, повестке в этой ебучей Украине пришла. А я ебал терять работу.
Аноним 11/06/20 Чтв 12:25:00 #511 №1719228 
>>1711119
>Кстати поясните нахуя МЦСТ свой ёбаный путь, когда, например, VIA делает процы на x86-x64? В чём суть?

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

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

Отзывы и предложения