Этого треда уже нет.
Это копия, сохраненная 10 апреля 2021 года.

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

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

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

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль 2020, с диффами)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- №60: http://arhivach.ng/thread/610540/
- №61: http://arhivach.ng/thread/610541/
- №62: http://arhivach.ng/thread/616070/ >>1807650 (OP)
2 1818284
Открываю тред для поссать в ебало дефрагмент-шизику.
3 1818289
>>18284
Я думаю он напишет дефрагментатор памяти с блэкджеком и шлюхами.
1545108806309.webm13,6 Мб, webm,
1920x1080, 3:35
4 1818296
>>18284
Освятил тредик
5 1818303
>>18289
>>18284

Кто такой дефрагментатор шизик и почему вы его так не любите?
6 1818309
>>18296

>.cpp


Зарепортил за ЦП, на всякий случай.
7 1818311
>>18303
Похоже что тут орудует два долбоёба. Одного я не заставл, а второй первым отметился в этой теме. Не обращай внимаение - это информационный шум от детишек, считающих что они познали Си.
8 1818312
>>18303
Да это он сам и пиарит себя скорее всего.
9 1818317
>>18296
А какое отношение эта шняга имеет к данному треду?
10 1818327
ОП - ХУЙ
11 1818328
>>18296
Схоронил. Мы должны схоронить историю этого великого треда, о великом языке программирования лучше которого ничего не существует.
12 1818336
>>18311

>считающих что они познали Си.


Классическая ошибка.
13 1818338
>>18317
Шняга - это малипусик у тебя в трусишках.
14 1818351
>>18338
Мой малипусик у тебя во рту не поместится)
15 1818395
Может ли кто-нибудь посоветовать библиотеку для работы с текстом в кодировке UTF-8? (надо проводить поиск в тексте)
16 1818402
>>18395
Наверное ICU?
Для плюсов есть Unicorn-lib
17 1818403
>>18395
И вот среди этих посмотри
https://github.com/kozross/awesome-c#string-manipulation
8uoAX9gDviU.jpg69 Кб, 658x658
18 1818880
Я додик.

Чем можно коньпилировать сишный код под виндой не ставя при этом Visual Studio?

Синтаксис так понимаю можно и каким-нибудь Sublime проверить.
1509257597830.png169 Кб, 1057x319
19 1818895
20 1818898
>>18895
Понял. Попробую ГНУ.

Читал шапку и подумал что для ГНУ надо лялих ставить, а он кросплатформенный оказывается.
21 1819040
>>18898
Для гну под ОС M$\Ш1ИДОШ$ нужно ставить костыли вроде mingw и/или cygwin.
22 1819101
>>19040
tcc наш выбор под лучшую микроядерную ОС на рынке - Microsoft Windows!
23 1819128
>>18880
Можешь скачать любой компилятор с Сурсфоржа и через виндовую сосноль его использовать. Советую павершел.
24 1819132
>>18880
Запускаешь фрюшечку в виртуальной машинке и получаешь честный юних с командой cc
25 1819139
>>19132
А чего бы не MS-DOS и Turbo C Borland C?
26 1819221
>>18156 (OP)
Динамикомакака (жс+питон) пожаловала в ваш тред
Объясните плез, как обходитесь без неймспейсов? Вот если куча "импортов" (include .h-файлов), то как блять в этой мишуре разобраться?
27 1819300
>>18880
Компилятор с библиотеками, документацией, примерами и готовой собранной программой типа хелловорлда. Всё вместе 2.5 МБ. Могу скинуть если надо.
28 1819308
Ребята, а если я открываю файл в одной функции, редактирую в другой и закрываю в мейне, я совсем долбоёб или ещё есть надежда? Вывожу из функции через параметр, т.к. return занят. Что я делаю не так, адреса скачут при переходе из функции в функцию. Втолкуйте бездарю, а то всю ночь уже сижу за этим говном, ничего не соображаю. на первом пике вывод, на втором функция чтения, на третьем как это всё в мейне выглядит. Ломается при попытке записи в файл, очевидно что адреся не те, а как те сделать? Да я ещё не умею тут дебагом пользоваться, поэтому смотрите на мои художемства. Надеюсь на то, что более-менее понятно изложил суть, и на вашу помощб, о мудрые жрецы
29 1819334
>>19101
>>19040

Алсо в чем между ними примерно разница?
В перделках и удобстве?

Или в каких-то может не быть некоторых библиотек?
30 1819375
>>19308
Ты делаешь страшные вещи.
Вот тут:

Fil = &File;

Ты присваиваешь аргументу Fil) указатель на локальную переменную, находящуюся в стеке. При выходе из функции переменная File, на которую ты ссылаешься, может быть потёрта кем угодно. Всё усложнаяется тем, что она может бытьи не затёрта. Т.е. при каких-то условиях код будет работать, а при каких-то нет. Зависеть может много от чего. Короче - так делать нельзя.

Самое простое решение, чисто чтобы понять.

Замени строчку

> FILE File = NULL;


на

> #define File Fil



Если Вакакба не скушает звёздочу, то всё очевидно.
31 1819376
>>19375
Скушала таки Вакаба звёздочку
32 1819467
>>19101

> Windows


> микроядерную

33 1819469
>>19334
Да. Ответ на оба вопроса - да.
34 1819484
>>19467
На самом деле Windows очень близка к микроядерным ОС. Дело в не размере, а в используемых принципах.

Я бы даже так сказал, несмотря на то, Mac OS построена поверх Mach, Windows, возможно, имеет больше признаков микроядерной ОС.
1601455616120.png12 Кб, 595x62
35 1819491
>>19308

>printf(FileName)


Не пиши так. Это уязвимость.

>scanf("%s", FileName)


Возможен buffer overflow.

>char Again = "N"


"N" - это строковый литерал
Чему равно значение Again?

>Fil = &File


Fil - копия, т.е. измениться только копия.
Надо присвоить адрес адресу, содержащемуся в Fil, т.е. *Fil = File
Также >>19375 писал, что ∗File выделен на стеке, после вызова fopen, File будет указывать на память в куче (пикрил), но после Fil = &File указатель проёбывается, т.к. &File - адрес переменной на стеке, которая после возврата в вызывающую функцию инвалид. Fil - просто копия адреса (тоже на стеке). Т.е. с внешними значениями функция делает ровно нихуя, зато происходит memory leak. Используй санитайзеры и ворнинги
dead per dead 36 1819495
>>19308
Звёздочка филь равно файл
1545816910834.png59 Кб, 1297x555
37 1819616
>>19308
А вот если бы ты возвращал через return, то компилятор бы тебе написал в предупреждении что не так.
Без названия.jpeg8 Кб, 235x214
38 1819784
>>19484

> графическая подсистема, намертво вшитая в ядро


> Windows, возможно, имеет больше признаков микроядерной ОС

39 1819785
>>19484
Каждый раз с мамкиных баллмеровских подсосов угораю, как в первый. Дружочек, ты тредом ошибся, сирешётка-тред ниже.
40 1819787
>>19784

> графическая подсистема, намертво вшитая в ядро


Ты сказал?
41 1819789
>>19784
Лучше, чем зоопарк DE которые глючат.
42 1819889
>>19784
Ты по размеру и фичам не суди.
Главное как себя ОС ощущает и позиционирует.
Microsoft©® Windows©®™ она как девочка внутри, только чувствует себя как микроядерная ОС. Вот и все.
Так что ты тут не залупайся, цисгендерный спермобак. Никто не вправе Windows запретить считать себя микроядерной системой.
43 1819900
>>19221

> как обходитесь без неймспейсов


Префиксами имен, которыми неймспейсы по сути и являются. Совпадения имен, у которых есть префиксы, очень-очень редки, поэтому разницы особой нет. Желание сделать from xxx import yyy хоть и возникает изредка, но не настолько часто, чтобы мы из-за этого плакали.

> Вот если куча "импортов" (include .h-файлов), то как блять в этой мишуре разобраться?


Точно так же как в тысячах модулей ноды или в site-packages. Только проще, потому что leftpad принято писать, а не таскать библиотекой, и в либах остаются реально нужные вещи. Что касается хедеров, то там опять-таки проще.

>>19101
tcc - для хелловорлдов. Половины хедеров нет, хедеры из mingw приходится подправлять напильником, сообщения об ошибках максимально недружелюбные из-за примитивности парсера, багов хоть и стало меньше, но совсем они не исчезли.

>>19784

> графическая подсистема, намертво вшитая в ядро


Ядро отдельно, win32k.sys отдельно. Можно оторвать executive полностью и написать новую. Да, в ntoskrnl кроме ядра еще другие вещи лежат, как и в win32k кроме executive лежит графическая подсистема, но это только вопрос размещения в файлах, сами они слабо связаны. Точно так же было в еще в MS-DOS, там в IO.SYS лежали две разные вещи: подсистема ввода-вывода (IO) и сам MS-DOS.
44 1819903
>>19784
Есть Windows 10 Headless, впрочем не знаю как она устроена
45 1819905
>>19221
Программы на Си занимаются какой нибудь узкой специализацией и не тянут в один файл несколько предметных областей.
46 1819966
>>19221

> Объясните плез, как обходитесь без неймспейсов?


Спокойно. Просто нужно держать жёсткий нейминг переменных и функций.

> Вот если куча "импортов" (include .h-файлов), то как блять в этой мишуре разобраться?


Разобраться не сложно, если нейминг правильно сделан.
dead per dead 47 1820048
В стандартных заголовках какого-нибудь линукса творится такой ад и Израиль, что нет слов.
48 1820055
>>20048
Ах, в заголовках творится какой-то ад. Нагромождение непонятного кода, ммм. Ну все, больше на Си программировать не буду, хватит это терпеть! Долой ад в заголовках! Я за чистый код!
49 1820071
>>19787
https://pastebin.com/pDamx9CQ
ЗАПУСКАЕШ
@
ОБТЕКАЕШ
50 1820073
>>19789
У меня ничего не глючит, а конкуренция стимулирует развитие, в то время как монополия приводит к стагнации.
51 1820074
>>19889
Чулочки-то надел, болезный?
52 1820202
>>18156 (OP)
Fix that libarchive fails to return filenames for UTF-8/UTF-16 entries. The reason is that it uses locales and all that garbage, and mpv does not set a locale. Both C locales and wchar_t are shitfucked retarded legacy braindeath. If the C/POSIX standard committee had actually competent members, these would have been deprecated or removed long ago. (I mean, they managed to remove gets().) To justify this emotional outbreak potentially insulting to unknown persons, I will write a lot of text. Those not comfortable with toxic language should pretend this is a religious text. C locales are supposed to be a way to support certain languages and cultures easier. One example are character codepages. Back when UTF-8 was not invented yet, there were only 255 possible characters, which is not enough for anything but English and some european languages. So they decided to make the meaning of a character dependent on the current codepage. The locale (LC_CTYPE specifically) determines what character encoding is currently used. Of course nowadays, this is legacy nonsense. Everything uses UTF-8 for "char", and what doesn't is broken and terrible anyway. But the old ways stayed with us, and the stupidity of it as well. C locales were utterly moronic even when they were invented. The locale (via setlocale()) is global state, and global state is not a reasonable way to do anything. It will break libraries, or well modularized code. (The latter would be forced to strictly guard all entrypoints set set/restore locales, assuming a single threaded world.) On top of that, setting a locale randomly changes the semantics of a bunch of standard functions. If a function respects locale, you suddenly can't rely on it to behave the same on all systems. Some behavior can come as a surprise, and of course it will be dependent on the region of the user (it doesn't help that most software is US-centric, and the US locale is almost like the C locale, i.e. almost what you expect). Idiotically, locales were not just used to define the current character encoding, but the concept was used for a whole lot of things, like e. g. whether numbers should use "," or "." as decimal separaror. The latter issue is actually much worse, because it breaks basic string conversion or parsing of numbers for the purpose of interacting with file formats and such. Much can be said about how retarded locales are, even beyond what I just wrote, or will wrote below. They are so hilariously misdesigned and insufficient, I can't even fathom how this shit was _standardized_. (In any case, that meant everyone was forced to implement it.) Many C functions can't even do it correctly. For example, the character set encoding can be a multibyte encoding (not just UTF-8, but awful garbage like Shift JIS (sometimes called SHIT JIZZ), yet functions like toupper() can return only 1 byte. Or just take the fact that the locale API tries to define standard paper sizes (LC_PAPER) or telephone number formatting (LC_TELEPHONE). Who the fuck uses this, or would ever use this? But the badness doesn't stop here. At some point, they invented threads. And they put absolutely no thought into how threads should interact with locales. So they kept locales as global state. Because obviously, you want to be able to change the semantics of basic string processing functions _while_ they're running, right? (Any thread can call setlocale() at any time, and it's supposed to change the locale of all other threads.) At this point, how the fuck are you supposed to do anything correctly? You can't even temporarily switch the locale with setlocale(), because it would asynchronously fuckup the other threads. All you can do is to enforce a convention not to set anything but the C local (this is what mpv does), or to duplicate standard functions using code that doesn't query locale (this is what e.g. libass does, a close dependency of mpv). Imagine they had done this for certain other things. Like errno, with all the brokenness of the locale API. This simply wouldn't have worked, shit would just have been too broken. So they didn't. But locales give a delicious sweet spot of brokenness, where things are broken enough to cause neverending pain, but not broken enough that enough effort would have spent to fix it completely. On that note, standard C11 actually can't stringify an error value. It does define strerror(), but it's not thread safe, even though C11 supports threads. The idiots could just have defined it to be thread safe. Even if your libc is horrible enough that it can't return string literals, it could just just some thread local buffer. Because C11 does define thread local variables. But hey, why care about details, if you can just create a shitty standard? (POSIX defines strerror_r(), which "solves" this problem, while still not making strerror() thread safe.) Anyway, back to threads. The interaction of locales and threads makes no sense. Why would you make locales process global? Who even wanted it to work this way? Who decided that it should keep working this way, despite being so broken (and certainly causing implementation difficulties in libc)? Was it just a fucked up psychopath? Several decades later, the moronic standard committees noticed that this was (still is) kind of a bad situation. Instead of fixing the situation, they added more garbage on top of it. (Probably for the sake of "compatibility"). Now there is a set of new functions, which allow you to override the locale for the current thread. This means you can temporarily override and restore the local on all entrypoints of your code (like you could with setlocale(), before threads were invented). And of course not all operating systems or libcs implement this. For example, I'm pretty sure Microsoft doesn't. (Microsoft got to fuck it up as usual, and only provides _configthreadlocale(). This is shitfucked on its own, because it's GLOBAL STATE to configure that GLOBAL STATE should not be GLOBAL STATE, i.e. completely broken garbage, because it requires agreement over all modules/libraries what behavior should be used. I mean, sure, makign setlocale() affect only the current thread would have been the reasonable behavior. Making this behavior configurable isn't, because you can't rely on what behavior is active.) POSIX showed some minor decency by at least introducing some variations of standard functions, which have a locale argument (e.g. toupper_l()). You just pass the locale which you want to be used, and don't have to do the set locale/call function/restore locale nonense. But OF COURSE they fucked this up too. In no less than 2 ways: - There is no statically available handle for the C locale, so you have to initialize and store it somewhere, which makes it harder to make utility functions safe, that call locale-affected standard functions and expect C semantics. The easy solution, using pthread_once() and a global variable with the created locale, will not be easily accepted by pedantic assholes, because they'll worry about allocation failure, or leaking the locale when using this in library code (and then unloading the library). Or you could have complicated library init/uninit functions, which bring a big load of their own mess. Same for automagic DLL constructors/destructors. - Not all functions have a variant that takes a locale argument, and they missed even some important ones, like snprintf() or strtod() WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK I would like to know why it took so long to standardize a half-assed solution, that, apart from being conceptually half-assed, is even incomplete and insufficient. The obvious way to fix this would have been: - deprecate the entire locale API and their use, and make it a NOP - make UTF-8 the standard character type - make the C locale behavior the default - add new APIs that explicitly take locale objects - provide an emulation layer, that can be used to transparently build legacy code without breaking them But this wouldn't have been "compatible", and the apparently incompetent standard committees would have never accepted this. As if anyone actually used this legacy garbage, except other legacy garbage. Oh yeah, and let's care a lot about legacy compatibility, and let's not care at all about modern code that either has to suffer from this, or subtly breaks when the wrong locales are active. Last but not least, the UTF-8 locale name is apparently not even standardized. At the moment I'm trying to use "C.UTF-8", which is apparently glibc _and_ Debian specific. Got to use every opportunity to make correct usage of UTF-8 harder. What luck that this commit is only for some optional relatively obscure mpv feature. Why is the C locale not UTF-8? Why did POSIX not standardize an UTF-8 locale? Well, according to something I heard a few years ago, they're considering disallowing UTF-8 as locale, because UTF-8 would violate certain ivnariants expected by C or POSIX. (But I'm not sure if I remember this correctly - probably better not to rage about it.) Now, on to libarchive. libarchive intentionally uses the locale API and all the broken crap around it to "convert" UTF-8 or UTF-16 (as contained in reasonably sane archive formats) to "char*". This is a good start! Since glibc does not think that the C locale uses UTF-8, this fails for mpv. So trying to use archive_entry_pathname() to get the archive entry name fails if the name contains non-ASCII characters. Maybe use archive_entry_pathname_utf8()? Surely that should return UTF-8, since its name seems to indicate that it returns UTF-8. But of fucking course it doesn't! libarchive's horribly convoluted code (that is full of locale API usage and other legacy shit, as well as ifdefs and OS specific code, including Windows and fucking Cygwin) somehow fucks up and fails if the locale is not set to UTF-8. I made a PR fixing this in libarchive almost 2 years ago, but it was ignored. So, would archive_entry_pathname_w() as fallback work? No, why would it? Of course this _also_ involves shitfucked code that calls shitfucked standard functions (or OS specific ifdeffed shitfuck). The truth is that at least glibc changes the meaning of wchar_t depending on the locale. Unlike most people think, wchar_t is not standardized to be an UTF variant (or even unicode) - it's an encoding that uses basic units that can be larger than 8 bit. It's an implementation defined thing. Windows defines it to 2 bytes and UTF-16, and glibc defines it to 4 bytes and UTF-32, but only if an UTF-8 locale is set (apparently). Yes. Every libarchive function dealing with strings has 3 variants: plain, _utf8, and _w. And none of these work if the locale is not set. I cannot fathom why they even have a wchar_t variant, because it's redundant and fucking useless for any modern code. Writing a UTF-16 to UTF-8 conversion routine is maybe 3 pages of code, or a few lines if you use iconv. But libarchive uses all this glorious bullshit, and ends up with 3 not working API functions, and with over 4000 lines of its own string abstraction code with gratuitous amounts of ifdefs and OS dependent code that breaks in a fairly common use case. So what we do is: - Use the idiotic POSIX 2008 API (uselocale() etc.) (Too bad for users who try to build this on a system that doesn't have these - hopefully none are left in 2017. But if there are, torturing them with obscure build errors is probably justified. Might be bad for Windows though, which is a very popular platform except on phones.) - Use the "C.UTF-8" locale, which is probably not 100% standards compliant, but works on my system, so it's fine. - Guard every libarchive call with uselocale() + restoring the locale. - Be lazy and skip some libarchive calls. Look forward to the unlikely and astonishingly stupid bugs this could produce. We could also just set a C UTF-8 local in main (since that would have no known negative effects on the rest of the code), but this won't work for libmpv. We assume that uselocale() never fails. In an unexplainable stroke of luck, POSIX made the semantics of uselocale() nice enough that user code can fail failures without introducing crash or security bugs, even if there should be an implementation fucked up enough where it's actually possible that uselocale() fails even with valid input. With all this shitty ugliness added, it finally works, without fucking up other parts of the player. This is still less bad than that time when libquivi fucked up OpenGL rendering, because calling a libquvi function would load some proxy abstraction library, which in turn loaded a KDE plugin (even if KDE was not used), which in turn called setlocale() because Qt does this, and consequently made the mpv GLSL shader generation code emit "," instead of "." for numbers, and of course only for users who had that KDE plugin installed, and lived in a part of the world where "." is not used as decimal separator. All in all, I believe this proves that software developers as a whole and as a culture produce worse results than drug addicted butt fucked monkeys randomly hacking on typewriters while inhaling the fumes of a radioactive dumpster fire fueled by chinese platsic toys for children and Elton John/Justin Bieber crossover CDs for all eternity.
52 1820202
>>18156 (OP)
Fix that libarchive fails to return filenames for UTF-8/UTF-16 entries. The reason is that it uses locales and all that garbage, and mpv does not set a locale. Both C locales and wchar_t are shitfucked retarded legacy braindeath. If the C/POSIX standard committee had actually competent members, these would have been deprecated or removed long ago. (I mean, they managed to remove gets().) To justify this emotional outbreak potentially insulting to unknown persons, I will write a lot of text. Those not comfortable with toxic language should pretend this is a religious text. C locales are supposed to be a way to support certain languages and cultures easier. One example are character codepages. Back when UTF-8 was not invented yet, there were only 255 possible characters, which is not enough for anything but English and some european languages. So they decided to make the meaning of a character dependent on the current codepage. The locale (LC_CTYPE specifically) determines what character encoding is currently used. Of course nowadays, this is legacy nonsense. Everything uses UTF-8 for "char", and what doesn't is broken and terrible anyway. But the old ways stayed with us, and the stupidity of it as well. C locales were utterly moronic even when they were invented. The locale (via setlocale()) is global state, and global state is not a reasonable way to do anything. It will break libraries, or well modularized code. (The latter would be forced to strictly guard all entrypoints set set/restore locales, assuming a single threaded world.) On top of that, setting a locale randomly changes the semantics of a bunch of standard functions. If a function respects locale, you suddenly can't rely on it to behave the same on all systems. Some behavior can come as a surprise, and of course it will be dependent on the region of the user (it doesn't help that most software is US-centric, and the US locale is almost like the C locale, i.e. almost what you expect). Idiotically, locales were not just used to define the current character encoding, but the concept was used for a whole lot of things, like e. g. whether numbers should use "," or "." as decimal separaror. The latter issue is actually much worse, because it breaks basic string conversion or parsing of numbers for the purpose of interacting with file formats and such. Much can be said about how retarded locales are, even beyond what I just wrote, or will wrote below. They are so hilariously misdesigned and insufficient, I can't even fathom how this shit was _standardized_. (In any case, that meant everyone was forced to implement it.) Many C functions can't even do it correctly. For example, the character set encoding can be a multibyte encoding (not just UTF-8, but awful garbage like Shift JIS (sometimes called SHIT JIZZ), yet functions like toupper() can return only 1 byte. Or just take the fact that the locale API tries to define standard paper sizes (LC_PAPER) or telephone number formatting (LC_TELEPHONE). Who the fuck uses this, or would ever use this? But the badness doesn't stop here. At some point, they invented threads. And they put absolutely no thought into how threads should interact with locales. So they kept locales as global state. Because obviously, you want to be able to change the semantics of basic string processing functions _while_ they're running, right? (Any thread can call setlocale() at any time, and it's supposed to change the locale of all other threads.) At this point, how the fuck are you supposed to do anything correctly? You can't even temporarily switch the locale with setlocale(), because it would asynchronously fuckup the other threads. All you can do is to enforce a convention not to set anything but the C local (this is what mpv does), or to duplicate standard functions using code that doesn't query locale (this is what e.g. libass does, a close dependency of mpv). Imagine they had done this for certain other things. Like errno, with all the brokenness of the locale API. This simply wouldn't have worked, shit would just have been too broken. So they didn't. But locales give a delicious sweet spot of brokenness, where things are broken enough to cause neverending pain, but not broken enough that enough effort would have spent to fix it completely. On that note, standard C11 actually can't stringify an error value. It does define strerror(), but it's not thread safe, even though C11 supports threads. The idiots could just have defined it to be thread safe. Even if your libc is horrible enough that it can't return string literals, it could just just some thread local buffer. Because C11 does define thread local variables. But hey, why care about details, if you can just create a shitty standard? (POSIX defines strerror_r(), which "solves" this problem, while still not making strerror() thread safe.) Anyway, back to threads. The interaction of locales and threads makes no sense. Why would you make locales process global? Who even wanted it to work this way? Who decided that it should keep working this way, despite being so broken (and certainly causing implementation difficulties in libc)? Was it just a fucked up psychopath? Several decades later, the moronic standard committees noticed that this was (still is) kind of a bad situation. Instead of fixing the situation, they added more garbage on top of it. (Probably for the sake of "compatibility"). Now there is a set of new functions, which allow you to override the locale for the current thread. This means you can temporarily override and restore the local on all entrypoints of your code (like you could with setlocale(), before threads were invented). And of course not all operating systems or libcs implement this. For example, I'm pretty sure Microsoft doesn't. (Microsoft got to fuck it up as usual, and only provides _configthreadlocale(). This is shitfucked on its own, because it's GLOBAL STATE to configure that GLOBAL STATE should not be GLOBAL STATE, i.e. completely broken garbage, because it requires agreement over all modules/libraries what behavior should be used. I mean, sure, makign setlocale() affect only the current thread would have been the reasonable behavior. Making this behavior configurable isn't, because you can't rely on what behavior is active.) POSIX showed some minor decency by at least introducing some variations of standard functions, which have a locale argument (e.g. toupper_l()). You just pass the locale which you want to be used, and don't have to do the set locale/call function/restore locale nonense. But OF COURSE they fucked this up too. In no less than 2 ways: - There is no statically available handle for the C locale, so you have to initialize and store it somewhere, which makes it harder to make utility functions safe, that call locale-affected standard functions and expect C semantics. The easy solution, using pthread_once() and a global variable with the created locale, will not be easily accepted by pedantic assholes, because they'll worry about allocation failure, or leaking the locale when using this in library code (and then unloading the library). Or you could have complicated library init/uninit functions, which bring a big load of their own mess. Same for automagic DLL constructors/destructors. - Not all functions have a variant that takes a locale argument, and they missed even some important ones, like snprintf() or strtod() WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK WHAT THE FUCK I would like to know why it took so long to standardize a half-assed solution, that, apart from being conceptually half-assed, is even incomplete and insufficient. The obvious way to fix this would have been: - deprecate the entire locale API and their use, and make it a NOP - make UTF-8 the standard character type - make the C locale behavior the default - add new APIs that explicitly take locale objects - provide an emulation layer, that can be used to transparently build legacy code without breaking them But this wouldn't have been "compatible", and the apparently incompetent standard committees would have never accepted this. As if anyone actually used this legacy garbage, except other legacy garbage. Oh yeah, and let's care a lot about legacy compatibility, and let's not care at all about modern code that either has to suffer from this, or subtly breaks when the wrong locales are active. Last but not least, the UTF-8 locale name is apparently not even standardized. At the moment I'm trying to use "C.UTF-8", which is apparently glibc _and_ Debian specific. Got to use every opportunity to make correct usage of UTF-8 harder. What luck that this commit is only for some optional relatively obscure mpv feature. Why is the C locale not UTF-8? Why did POSIX not standardize an UTF-8 locale? Well, according to something I heard a few years ago, they're considering disallowing UTF-8 as locale, because UTF-8 would violate certain ivnariants expected by C or POSIX. (But I'm not sure if I remember this correctly - probably better not to rage about it.) Now, on to libarchive. libarchive intentionally uses the locale API and all the broken crap around it to "convert" UTF-8 or UTF-16 (as contained in reasonably sane archive formats) to "char*". This is a good start! Since glibc does not think that the C locale uses UTF-8, this fails for mpv. So trying to use archive_entry_pathname() to get the archive entry name fails if the name contains non-ASCII characters. Maybe use archive_entry_pathname_utf8()? Surely that should return UTF-8, since its name seems to indicate that it returns UTF-8. But of fucking course it doesn't! libarchive's horribly convoluted code (that is full of locale API usage and other legacy shit, as well as ifdefs and OS specific code, including Windows and fucking Cygwin) somehow fucks up and fails if the locale is not set to UTF-8. I made a PR fixing this in libarchive almost 2 years ago, but it was ignored. So, would archive_entry_pathname_w() as fallback work? No, why would it? Of course this _also_ involves shitfucked code that calls shitfucked standard functions (or OS specific ifdeffed shitfuck). The truth is that at least glibc changes the meaning of wchar_t depending on the locale. Unlike most people think, wchar_t is not standardized to be an UTF variant (or even unicode) - it's an encoding that uses basic units that can be larger than 8 bit. It's an implementation defined thing. Windows defines it to 2 bytes and UTF-16, and glibc defines it to 4 bytes and UTF-32, but only if an UTF-8 locale is set (apparently). Yes. Every libarchive function dealing with strings has 3 variants: plain, _utf8, and _w. And none of these work if the locale is not set. I cannot fathom why they even have a wchar_t variant, because it's redundant and fucking useless for any modern code. Writing a UTF-16 to UTF-8 conversion routine is maybe 3 pages of code, or a few lines if you use iconv. But libarchive uses all this glorious bullshit, and ends up with 3 not working API functions, and with over 4000 lines of its own string abstraction code with gratuitous amounts of ifdefs and OS dependent code that breaks in a fairly common use case. So what we do is: - Use the idiotic POSIX 2008 API (uselocale() etc.) (Too bad for users who try to build this on a system that doesn't have these - hopefully none are left in 2017. But if there are, torturing them with obscure build errors is probably justified. Might be bad for Windows though, which is a very popular platform except on phones.) - Use the "C.UTF-8" locale, which is probably not 100% standards compliant, but works on my system, so it's fine. - Guard every libarchive call with uselocale() + restoring the locale. - Be lazy and skip some libarchive calls. Look forward to the unlikely and astonishingly stupid bugs this could produce. We could also just set a C UTF-8 local in main (since that would have no known negative effects on the rest of the code), but this won't work for libmpv. We assume that uselocale() never fails. In an unexplainable stroke of luck, POSIX made the semantics of uselocale() nice enough that user code can fail failures without introducing crash or security bugs, even if there should be an implementation fucked up enough where it's actually possible that uselocale() fails even with valid input. With all this shitty ugliness added, it finally works, without fucking up other parts of the player. This is still less bad than that time when libquivi fucked up OpenGL rendering, because calling a libquvi function would load some proxy abstraction library, which in turn loaded a KDE plugin (even if KDE was not used), which in turn called setlocale() because Qt does this, and consequently made the mpv GLSL shader generation code emit "," instead of "." for numbers, and of course only for users who had that KDE plugin installed, and lived in a part of the world where "." is not used as decimal separator. All in all, I believe this proves that software developers as a whole and as a culture produce worse results than drug addicted butt fucked monkeys randomly hacking on typewriters while inhaling the fumes of a radioactive dumpster fire fueled by chinese platsic toys for children and Elton John/Justin Bieber crossover CDs for all eternity.
53 1820220
>>20202
И чо?
54 1820250
>>20071
||=== Build неудачно: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
1601541229910.png833 Кб, 800x800
55 1820304
>>18156 (OP)
Насколько оправдано учить C для Data Science?
Есть ли вообще какое-то применение няшной Сишки в Data Analysis, Big Data Analysis, (короче говоря, там, где сейчас доминируют Python, R и Julia)?
56 1820315
>>20304
Нинасколько.
Конечно, все кишки питонов/р/юли/любого-фреймворка-чилсодробилки написаны на си/плюсах, но это именно инженегровые задачи, имеющие посредственное отношение к датасаенсу.
57 1820337
>>20315
Да я просто думал, что если знать Сишку, то можно её прямо в Юльке вызывать, а это + к скорости расчетов
58 1820342
>>20315
А, ну и заметил вот что: если пакет для какого-нибудь R переписывают с этого самого R на C/C++, то время расчетов уменьшается раз в 10-50 минимум, без шуток. Поэтому и стало интересно.
59 1820386
>>20337

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

>>20342

Увеличив тем самым в 10-50 раз время разработки и поиска багов.

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

Как пример - видеоигры, там если на топ пеке нельзя поиграть в 4к60фпс - тебя скорее всего обоссут и накидают минусов в стиме, по этому как минимум движок игры должен быть написан на крестах и хорошо оптимизирован.

А вот если какая-нибудь опердень ускорится с 5 секунд до двух - этого юзер "тетя маня" особо не заметит, а вот времени ты въебешь намного больше и когда наступит время релиза ты с удивлением для себя увидишь, что рынок поделен продуктами конкурентов и все обсуждают именно их.
60 1820413
>>20386

>


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



> Увеличив тем самым в 10-50 раз время разработки и поиска багов.


А в чем проблема написать аналоги функций R на Сишке, оставив им те же имена? Так и баги проще ловить, и скорость - топ. Банально, подключаешь библиотеку yoba_c, функции которой перекрывают стандартные и вперёд. Благо что в R можно свои функции вообще не писать, а ебашить макросы Scheme-style. Соответственно, если в маленькой функции на C явных багов нет, то их не будет и в макросе.
61 1820493
62 1820501
>>20304
C нужен для разработки ПО для обезьян задействованных в дата саенс. С это про другое. Твой сраный эр, пайфон написаны на высокоуровневом С. Сечёшь мою мысль? Тот питух, что тебе писал про игровые движки — лох, чмо, дегенерат. Ffi, игровые движки, хуйню какую-то наплел олень малолетний.
63 1820576
>>20501

>обезьян


Дл тех самых, что в отличии от инженеро-чмохов делают бизнесу деньги?
64 1820595
>>20386
Лол, а в R легко искать баги?
65 1820636
>>18880
MinGW GCC
66 1820652
>>20342
А если этот сишный код как следует отпидорасить, и вынести всё что можно вынести на GPU — можно получить такой же прирост даже относительно кода на C.
Только всем похуй, датасаенс — это про хуяк-хуяк скриптик накидал, за пару часиков посчитал, гистограмку нарисовал и забыл, а не про долгую еблю с выдрачиванием перформанса.
67 1820744
>>20595
Сравнительно да. В любом случае, всегда можно найти пакет, который делает то же самое, но в нём этого бага нет, зато есть 100500 других, которые ты не заметишь и которые похерят цифры в твоих данных.
68 1821342
ЧТО ОН ХОЧЕТ ОТ МЕНЯ? КАКОЕ ЕМУ ВЫРАЖЕНИЕ НАДО? Я УЖЕ ДВА ДНЯ НЕ МОГУ ПОНЯТЬ ЧТО ОН ОТ МЕНЯ ХОЧЕТ
image.png1 Кб, 73x37
69 1821350
>>21342
Это что за говно.
70 1821351
>>21350
НУ ЛУП, А ЧТО?
71 1821354
>>21351
Где ты его взял, блядь. Есть for, while, do..while./ Какой наху loop statement , ты дурак?
72 1821356
>>21354
БЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ
73 1821357
ПАЦАНЫ НЕ САДИТЕСЬ КОДИТЬ ЕСЛИ ВЫ ЗАЕБАЛИСЬ
74 1821373
>>21351
А ЗА ЛУПОМ ЧТО?
75 1821376
>>21373
ПУПА
76 1821396
>>21356
Вот когда ты исправшишь loop на for будешь ещё два дня не поймёшь почему программа падает иногда.
77 1821409
>>21342
Что за заloop?
И как оно брать данные с массива на стеке, не зная что там вообще внутри лежит, и сравнивать с нулем?
79 1821476
>>21474
Добавил еще *storage == EOF
80 1821832
>>21474
Так уже получше. Во всяком случае точно не упадёт, если указатель в функцию передашь валидный. Хотя лучше проверить вместе с isspace и на конец строки.

У тебя в предыдущей версии в условии использовался || а надо было &&.
81 1821847
>>20576

Пендюх, бизнесу делают мани те, кто пишет софт. Дата саенст окромя теории математической нихуя не могут. Весь их вклад — это реализация блоков воедино в уже готовом софте. Это как рнр макаки от мира математики.
82 1821861
>>21832
Перехожу на малоки уже через 11 задач.
83 1821888
Чуваки я правильно всё понимаю?
ch = getchar() -> Ввожу в инпут igor\n, куда уходят gor\n? Если я вызову функцию типа fgets(string, n, stdin) эта часть уйдет в неё? Эти литералы стоят в стаке и ждут функцию которая принимает ввод? Или они в буфере? Или стак это буфер? Помогите долбоебу.
84 1821896
>>21888

>куда уходят gor\n?


В буфер входного потока (stdin)
85 1821909
>>21896
Т.е fgets цепляет из буфера остатки которые getchar() не прочитал.
86 1821931
>>21909
да.
87 1821959
>>21931
Спасибо. Я об этом ваще забыл.
88 1821967
Какие шансы устроиться крестовиком в какую нибудь контору, если у тебя есть нормальный опыт, даже проги которые ты написал и ты учавствуешь в олимпиадах, но у тебя 9 классов?
Я готов закончить вышку ради работы на плюсах. Мне 22 просто проебался немного по молодости.
89 1822046
>>21967
Ну, все зависит от прохождения собеседования и если контора не будет интересоваться твоим образованием. Но опять же, на собеседовании могут спросить про какое то перемножение матриц, и ты обосрешься без образования, даже школьного.
У меня при трудоустройстве никто не спрашивал об образовании, никто даже не интересовался какой вуз я закончил и какое направление. Думаю нас таких много.
90 1822117
Ньюфаг итт.
Есть программа: int main(){}.
Пробовал компилировать ее
clang -Oz -nostlib
и
clang -O0 -nostlib
и она один хуй весит 9.2 кб
Вопрос: какого хуя?
91 1822123
>>22117
В первом случае 9352 байта, а во втором 9360 байт, если быть точным. Что в этой программе, которую я уже не знаю как сделать проще, весит так много? Еще заметил, что все мои хелловорлды от 5 до 200 строк всегда весят 16-19 кб. Что помимо стдлибы занимает большую часть экзекутабла?
92 1822129
>>22117
В исполняемом файле присутствуют адреса линкуемых либ, присутствуют GOT и PLT таблицы, для динамического резолвинга названий функций и загрузку нужных динамических библиотек(грубо говоря) с нужными функциями.
Так же main не является точкой входа фактической дл ОС, а конец ее не является выходом из процесса, и из-за этого есть ещё crt*.o файлы которые компилятор линкует к исполняемому файлу почти всегда.
Все это так называемый Сишный рантайм, без него никуда в обычных ОС, но это можно отключить флагами компилятору/линковщику.
93 1822136
подскажите что выучить (какие мануалы, какие либо прорешать) по с или с++ чтобы устроиться в nasa ?

нужно ли уметь на с закодить всего дональда кнута?

или нужно на с сортировки кодить?

или что вообще нужно уметь на с, чтобы вкатица в nasa ?
dead per dead 94 1822211
>>22117
man elf
objdump -sxd a.out
dead per dead 95 1822245
Кстати, в историческом a.out заголовок занимал 16 байт. Вот цена прогресса.
96 1822249
>>22136

> подскажите что выучить (какие мануалы, какие либо прорешать) по с или с++ чтобы устроиться в nasa ?


Всё. Надо выучить всё.

> нужно ли уметь на с закодить всего дональда кнута?


Да, и Дональда Трампа тоже.

> или нужно на с сортировки кодить?


Можно кодить и не сортировки.

> или что вообще нужно уметь на с, чтобы вкатица в nasa ?


Надо уметь всё.
97 1822262
Пачаны решил тут вкатитьтся в микроконтроллеры как хобби, но прежде чем закупать компоненты, решил как-то все опробовать софтварно, Поставил ряд пакетов: avrdude gcc-avr avr-libc binutils-avr gdb-avr разобрался как компилировать, получаю файл .hex который можно уже записать на контроллер, Но хотелось мы найти какой-нибудь визульныйсимулятор контроллера, где мог бы понакидать компонентов на платку, взять свой скрипт, и посмотреть как все работает. Есть что-нибудь подобное да под линукс?
98 1822266
>>22249

Конкретнее плиз
99 1822298
>>22266
*
Звёздочка
Wildcard
All
sage 100 1822316
>>22245
Странно обсуждать единицы байт, когда бинарники по сотне мегабайт стали нормой.
101 1822332
>>22266
Ну смотри, можно еще уметь не все, а только половинку но тогда не совсем в NASA возьмут, в ASSA возьмут

♂ SLAVE, GET YOUR ASS BACK HERE! ♂
102 1822478
>>19308
>>19308
Лол, а це таке fil? Правильно понял, что она в статическом скопе или это какая-то нех?
>>19375
Так ведь можно FILE ptr fil = NULL вне функции и в самой функции - просто fil = file. И в рантайме файл можно будет править/закрыть где угодно.
103 1822479
>>22316
Скорее напоминание того как мало раньше добавляли служебной инфы в бинарь. Впрочем, a.out предельно простой формат, там иначе и быть не могло.
104 1822481
>>22332
У МЕНЯ ЕСТЬ ♂ DEEP ♂ DARK ♂ FANTASY ♂, МЕЧТАЮ НАПИСАТЬ МИКРОЯДРО ПОХЛЕЩЕ ЧЕМ В WINDOWS И ПОХЛЕЩЕ ЧЕМ L4Ka::Pistachio НА ЯЗЫКЕ ♂ СИ
105 1822487
>>22481
>>22332
♂ это только wchar_t?
мимо-ньюкек
106 1822596
>>22481

>L4Ka::Pistachio НА ЯЗЫКЕ


Лучше можно. Но только, наверное, на ассемблере. И всё равно по спецификации L4X2. Т.е. закодировать можно лучше, а вот спроектировать уже нет.
107 1822608
>>22596
Спроектировать можно лучше, но тогда уже выйдет ядро Linux
dead per dead 108 1822668
>>22316
Это не норма, так же как и статическая сборка не норма.
Определение нормы: посчитай средний размер бинаря на твоей системе. Это сильно меньше, чем 1е8
изображение.png41 Кб, 1644x282
109 1822700
>>22262
Я в бородатые времена использовал САПР Proteus для этих целей, там можно собирать схемки на микрухах, заливать на них hex файлы и смотреть как они отрабатывают, очень годная тема. Но она для винды и не бесплатная. А так можешь посмотреть что-то из списка на пике, может найдёшь что-нибудь.
110 1822719
>>22608
Это заблуждение. И вообще глупо сравнивать. L4 оперирует только временем и памятью. Ядро Linux это полноценное ядро с файловой системой, сетевой подсистемой, вытеснением страниц и множеством драйверов. Ты вообще не понимаешь о чём говоришь.
Это как сравнивать кирпич и дом.
Подумай это.
111 1822728
>>22668
Ты точно понимаешь как работает среднее арифметическое?
Достаточно пары программ в 10-100 Мб - игры, блендер, офис - чтобы такое перекрыть тебе понадобится миллион линукс-вей 10кб бинарников.
112 1822780
>>22719
Я выбираю дом.
Тем более он сделан из нормальных кирпичей ответственных за память и время.
А не какой-то кусок говна из под немецкого исследовательского центра.
Претензии?
Я прочитал фулл спецификацию микроядра L4 и их API. Меня не впечатлило, наоборот выглядело бесполезно без остального софта, чисто бесполезное микроядро, ну и по классике - безопасность на руки программиста кладётся. То есть немцы даже не парились. Тупое говно тупого говна.
Ну и код чекал, такое говно конечно написать - это надо уметь.
image.png26 Кб, 693x336
113 1822809
>>22780
Ну это просто твоё "красноглазие" говорит.
Был один true Linux, да и тот стал маргинальным.

> Я выбираю дом.


Другого от юзера ожидать не приходится.
114 1822811
>>22780

>безопасность на руки программиста кладётся


А вот это прокомментируй.
115 1822816
>>22809
Что значит тру линукс?
116 1822817
>>22811
Ну он тут прав.
117 1822820
>>22816
Slackware же. Один из старейших линуксов из ныне живущих. Где-то ровесник Красной Шапки и Дебиана. Знаменит тем, что не прогибается под моду, а чисто идёт по классическому Unix way. За что и поплатился падением популярности.

> Ну он тут прав.


Чем?
118 1822828
>>22820
А Макось не тру линукс?
119 1822834
>>22828
100% POSIX-compliant - это всё что я скажу про Mac OS.
Впрочем, как и линуксы и BSD.
sage 120 1822853
>>22828

>А Макось не тру линукс?


The state of C and ASM threads in 2020, спасибо юнит фактори за это
121 1822855
>>22809

>true Linux


А что для тебя true Linux? Чтоб консолечка и текстовый инсталлятор и ну это пакеты были простым архивом, и конфиги текстовые, да? Другого от туповатого дегрода ожидать не приходится.

>Другого от юзера ожидать не приходится.


Мать твоя юзер :)
А я вполне себе портирую ядро Линукс на другие железки на работе, маня.

>>22811
Ну основной способ передачи данных между сервисами в микроядер это посылка сообщений. Валидность сообщений кладется на руки программиста. Грубо говоря ты можешь послать хитровыебаное сообщение и обвалить нахер всю ОС.
Для сравнения у меня после kernel panic ядро линукс продолжало работать, после пропуска события, recovery из внештатной ситуации вполне работал.

>>22820

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


Ясно. Можешь больше не писать. Мне все понятно.

>>22828
https://www.opengroup.org/openbrand/register/brand3581.htm
Заплатили бабло Apple, ось у них true unix как бэ де юре.
Де факто любая ос которая имплементит posix может пройти сертификацию и стать true unix, было бы желание и деньги.

>>22834
Читай матчасть.
image.png370 Кб, 640x512
122 1822857
>>22855

>А что для тебя true Linux?


В глаза долбишься? Это Slackware.
И Патрик хуй ложил на systemd. А вы прогнулис.

>туповатого дегрода


Клоун, следи за базаром.

>А я вполне себе портирую ядро Линукс на другие железки на работе


Да мог бы и не признаваться. И так видно что ты обезьяна. Портирует он. Ха ха. Ну на назови ДВЕ железки, куда ты портирровал ядро Linux.

>Грубо говоря ты можешь послать хитровыебаное сообщение и обвалить нахер всю ОС.


Сразу видно что ты читал, но не понимал. L4 поддерживает три типа данных в сообщения - регистры сообщений, "строки" и memory mapping. Сможешь придумать сценарий как послать "хитровыебанное" сообщение?

>Для сравнения у меня после kernel panic ядро линукс продолжало работать


Пикрелейтед.
Ну и как бы тебе напомню что большинство микроядер позволяет сценарий запуска драйвера в выделенном адресном пространстве. Разумеется, с просадкой производительности. Но при этом kernel panic уходит в историю.
123 1822883
>>21847
Какой-то зоопарк, я ебал, о чем вы спорите вообще? Одни делают вещи невозможное возможным, другие делают возможное нужным, и так по кругу. Воистину манямирок с какими-то односторонними иерархиями в голове. Ты еще скажи, что философы паразитируют на достижениях физиков, и стрелочка не поворачивается.
124 1822885
>>22857

> >А что для тебя true Linux?


> В глаза долбишься? Это Slackware.


> И Патрик хуй ложил на systemd. А вы прогнулис.


У меня OpenRC в генту, впрочем не вижу ничегo плохого в systemd. Проблемы?

> >туповатого дегрода


> Клоун, следи за базаром.


Давай, клоун, поясняй что ж плохого в systemd?

> >А я вполне себе портирую ядро Линукс на другие железки на работе


> Да мог бы и не признаваться. И так видно что ты обезьяна. Портирует он. Ха ха. Ну на назови ДВЕ железки, куда ты портирровал ядро Linux.


Две борды внутреннего использования на MIPS.

> >Грубо говоря ты можешь послать хитровыебаное сообщение и обвалить нахер всю ОС.


> Сразу видно что ты читал, но не понимал. L4 поддерживает три типа данных в сообщения - регистры сообщений, "строки" и memory mapping. Сможешь придумать сценарий как послать "хитровыебанное" сообщение?


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

> >Для сравнения у меня после kernel panic ядро линукс продолжало работать


> Пикрелейтед.


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


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

Дуй, маня, отсюда. Маловат ещё.
sage 125 1822887
>>22857
Ебать ты долбоеб, земля тебе пухом, братишка.
126 1822892
>>22855
Мне тоже кажется что Макось это тру Юникс.
image.png58 Кб, 512x309
127 1822898
>>22885

>в генту


Уровень красноглазия зашкаливает.

>Две борды внутреннего использования на MIPS.


Ну так я и говорю - обезъяна. Не приписывай себе чужих заслуг, Linux на MIPS портирован более 20 лет назад. https://opennet.ru/docs/HOWTO/MIPS-HOWTO.html

> Да, посылаю сервису запрос, оно кидает дальше невалидное сообщение.


Ты так и не ответил, как повалить. Пример невалидного сообщения приведи.

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


Ну путай микроядро и ядро. Ещё раз - микроядро просто предоставляет абстракции для процессов, нитей, сообщений и мапинга памяти. Ему вообще похрен что передаётся в сообщениях.

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

>Маловат ещё.


Можешь прикинуть мой возраст, если впервые Linux я установил в 1995 году. С дискет.
128 1822906
>>22885
И, кстати, вот на это можешь не отвечать:

>>>1822898


>>>Linux на MIPS портирован более 20 лет назад.



Я представляю трудозатраты на портирование на новое железо. С точки зрения "вкатывальщиков" это уровень Бог. Но бородатые дяди не оценят. Если без троллинга, обычная задача для обычного программиста.
129 1822922
>>22898

> >в генту


> Уровень красноглазия зашкаливает.


Будто слака это не красноглазие

> >Две борды внутреннего использования на MIPS.


> Ну так я и говорю - обезъяна. Не приписывай себе чужих заслуг, Linux на MIPS портирован более 20 лет назад. https://opennet.ru/docs/HOWTO/MIPS-HOWTO.html


Ты тупой? Ты точно тупой. Я завел борду, а не архитектуру. И ты ещё тут что-то мне пишешь? Можешь нахуй сходить, маня.

> > Да, посылаю сервису запрос, оно кидает дальше невалидное сообщение.


> Ты так и не ответил, как повалить. Пример невалидного сообщения приведи.


Прям сейчас сяду и начну писать код под это говно. Делать мне нехуй для тупого дурачка с борд хуиту писать.

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


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


А зря. Это его основная проблема.

> Открою тебе серкет, но только тебе. При кривом дизайне того, что крутится поверх микроядра, возможна другая проблема, о которой ты не упомянул - flooding. Если какой-то процесс "сойдёт с ума" и начнёт спамить сообщениями. Вот это может быть проблемой. Но повторюсь - при кривом дизайне ОС.


Это кривой дизайн микроядра такое допускает.

> >Маловат ещё.


> Можешь прикинуть мой возраст, если впервые Linux я установил в 1995 году. С дискет.


По-моему ты просто родился в 1995 и так цепляешься за эту цифру
Я в это время универ закончил.
130 1822925
>>22906
Куда сложнее завести gcc/binutils/glibc для новой архитектуры.
Ядро портировать на обычную risc архитектуру дело пары месяцев.
А вот смержить в апстрим дело пары лет.
131 1822932
>>22922
Чел ты ахуенен, хочу быть таким же крутым как ты.

мимокрок
132 1822934
>>22922

>Будто слака это не красноглазие


Sllacware это unix way.

> Я завел борду


Так это не повод для гордости.

> Это его основная проблема.


> Это кривой дизайн микроядра такое допускает.


Если бы ты ещё чего-нить в этом понимал. Пиздеть - не мешки ворочать. А дрвйвер-то хоть один написал под Linux? Вот так чтобы под новое железо, а не тупо переопределить адреса портов.

> Я в это время универ закончил.


Я тоже.

>>22925

>Ядро портировать на обычную risc архитектуру дело пары месяцев.



Ну хуй знает. В одно лицо за пару месяцев это не сделаешь. Если новая именно архитектура, то пару месяцев это только чтобы оно собралось. А затем год(ы) чтобы заработал стабильно.
Безымянный.png63 Кб, 1362x1014
133 1822981
Почему я такой тупой? Я не смог догадаться до такого простого решения. Пришлось подсматривать.
изображение.png104 Кб, 474x383
134 1822985
>>22981
Аааааа щас меня будет бесить то что моё решение не сработало. СУККААААААААААААААААААААААА
Безымянный.png43 Кб, 1362x1013
135 1822992
Почему это решение обречено на смерть?
136 1822997
>>22981
Идея очевидна, даже не читая код, сразу догадался, что там будет, хоть я и мимокрок-питонист. Но блять, насколько же СИ тяжело читать и понимать код, это пиздец.
137 1823003
>>22997
Это типа стартовые задачки, которые легкие, легче блять не найти. Нужно написать самому все строковые функций которые в библиотеке есть.
image.png20 Кб, 482x438
138 1823025
139 1823028
>>23025
ДА БЛЯТЬ ЧУВАК КАК? КАК?
изображение.png134 Кб, 408x431
140 1823030
>>23025
Точно блять можно же было еще один поинтер заюзать, сукаааааааааааааааааааааааааааааааааааааааааааааааааааааа
sage 141 1823082
>>23025
О, самое адекватное решение той задачи
image.png20 Кб, 483x439
142 1823148
>>23082

>О, самое адекватное решение той задачи



Увы, нет. Его вариант может портить стэк. Вот так безопаснее.
143 1823155
Блядь, хуйня какая-то, думал оптимизирую, а получилась хуйня
144 1823159
>>23155
Всё равно пишешь платформозависимо, от чего бы вссемблерную вставку не сделать?
145 1823162
>>23159
Та не, я думал именно шоб конпелятор придумал какую-то дешевую проверку, чтоб в слове есть нулевые байты
146 1823167
>>23155
Попробуй
MOV RDI, RAX
MOV RCX, -1
XOR AL, AL
REPNE SCASB
NEG RCX
MOV RAX, RCX

>>23162
Бранчи могут поломать конвейер. Вероятно что компилятор это понимает. Хотя скорее всего я гоню. По скорости всё равно так не выиграешь - укзкое место это обмен между памятью и процессором. Как только данные попали в кэш, твой вариант оптимизации смысла не имеет.
147 1823204
>>23155
Хуй будешь?
Безымянный.png25 Кб, 477x451
148 1823220
ПАЦАНЫ Я ПОЧТИ СДЕЛАЛ ЭТО МОЖЕТЕ ОБОССАТЬ НО Я ДОВОЛЕН
https://pastebin.com/Tus0xpWY
dead per dead 149 1823349
>>23220
Обосрамус в самом начале, где ты char сравниваешь c eof, который -1. Со знаковым ч это сработает на символе del, с беззнаковым - никогда.
1552764091318.png20 Кб, 327x402
150 1823368
>>22981
Рисуй какие нибудь такие схемки - все станет довольно очевидным.
image.png819 Кб, 895x505
152 1823420
Всё же Конрад Лоренц был прав. Это конечно оффтопик здесь, но тем не менее. Это я про перенос агрессии. Вот например у голубей. Одно дело когда грубит гуру в сторону ламера, дабы наставить его на путь истинный. И совсем другое дело когда в бессильной злобе бесится воинствующая безграмотность. В общем, когда мозги закипят над решением сложной задачи, почитайте Конрада Лоренца - мир станет понятнее.
153 1823422
>>23349
Окей поставлю повтор ввода пока пользователь не напишет quit.
154 1823423
>>23349
Хотя в линухе всё работает. Ctrl+D выходит по маслу. В каждой системе же свой EOF. Я потом добавлю Quit.
155 1823425
>>23368
Да я думал типа абстрактное мышление прокачивать, в голове продумывать. Буду рисовать чо.
156 1823429
>>23420
На примере Линуса мы узнали что никакой разницы, и грубящий гуру так же получает леща.
157 1823434
>>23429

>мы


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

Нет никакого "мы". Не успокаивай себя.
sage 158 1823440
>>23420
Никто не принимает долбоящерские идеи говенного микроядра? Нассали в рот и в жопу и никакого ощущения что кому-то есть дело до твоей писанины? Сожалею.
Может ещё накинь статеек, может 1 анчоус прочитает их, сидя на толкане. Если кому-то вообще есть дело до твоей писанины, шизик))
.jpg11 Кб, 408x431
159 1823445
>>23420
Никому не грублю, я вообще NPC но если будет сложная задача, буду сидеть пока не сдохну или не решу.
1574521086280.png165 Кб, 1181x841
160 1823449
>>23434

>Не "мы"


Ну если _ты_ не узнал - то это только твоя неосведомленность, конечно.
sage dead per dead 161 1823450
>>23423
Просто напечатай значение EOF, а потом перечитай man gets.
162 1823452
>>23420

>выдающийся австрийский зоолог и зоопсихолог[6], один из основоположников этологии — науки о поведении животных


Ясно. Ну я предпочитаю с животными не работать. Хотя нет, попугайчик на плече сидит когда код пишу.
163 1823471
>>23450
Я знаю что такое EOF. Не факт что в системе он будет -1, у каждой системы своё значение. А gets мне зачем перечитывать? Это строковая функция.
164 1823472
>>23449
Сотворили себе кумира и носитесь с ним.

Лучше посмотри на картинку и охуей.
Единственное что могу сказать - только полгода прошло с того момента, как с этого сервака перешли на другой и он сейчас в резерве. До этого он обслуживал десятки тысяч запросов ежедневно.
sage 165 1823473
>>23471
Ясно, можешь не продолжать.
image.png55 Кб, 826x521
166 1823474
167 1823476
>>23472
То что у тебя аптайм большой никак не позволяет гению агриться в сторону других.
168 1823477
>>23452
Смотри на плечи то насрет
169 1823479
>>23471
Толсто.
170 1823480
>>23476
Позволяет. Ты даун и пидорас.
171 1823481
>>23477
Специальные погоны ношу.
изображение.png10 Кб, 966x92
172 1823482
173 1823483
>>23480
А ты - в бессильной злобе бесится воинствующая безграмотность.
174 1823484
>>23481
Я их оторву и мы вместе пойдем на бал. В мою честь... И салюты там будут в мою честь...
Ой блять
175 1823485
>>23479
>>23473
Два долбоеба лол
176 1823486
>>23482
Ну если у тебя gets и getchar это одно и то же...
(А разве gets не депрекейд?)
177 1823487
>>23482
>>23485
Учитесь, сынки
Может у вас отвалится хвост
И вы сможете написать что-то сложнее hellyo wirld
178 1823488
>>23486
Во первых где я сказал, что gets это одно и тоже, а во вторых я его даже не использую в коде, это какой то чувак жопой читает.
179 1823490
>>23486
Он виндовопробитый очкопетух.
У него s_gets = s от слова безопасный секс
180 1823491
>>23487
Что?
181 1823492
>>23491
Что?
16013982925660.png263 Кб, 534x401
182 1823494
183 1823497
>>23488
Блджад ну может ты другой анон тогда, я отвечал в ветку где gets в коде на скрине
184 1823498
>>23476

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


А кто гений? Торвальдс?

Ну вот смотри. Условно людей в этой теме можно поделить на несколько категорий. Одни стремящиеся, они никому не грубят а лишь впитывают информацию. Мне вот симпатичен вот этот анон ->>23445

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

И есть какой-то пёс, которой скулит, но выдаёт ноль осмысленной информации. При этом, судя по ответам, кроме фекалий его пасть ничего не выдаёт. Биомусор, короче.

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

Если что, то вот эти посты мои -
>>23025
>>23148
>>23167
185 1823500
>>23484
Осталось самолеты посчитать.
186 1823503
>>23420
Ну смотри, все хипстеры - это пидоры. А пидоры - говно. Вот эти все ваши подвороты, жидкие бородки, смузя, вот все эти "прогрессивные" идеи феменизма, толерантности, бигендерства, экофашизма, БЛМ, куколд-движение, ненависть маскулинности, вот эта вся любовь к JS и React.JS, любовь к разработке "ПАЛЕЗНЫХ СЕРВИСАВ", катание на пидорскутере и ненависть к мужским мощным авто с ДВС выдает в этих всех людях говно-пидоров и вообще червей. Психолухи, инфоцигане, бизнес-КОУЧИ, в принципе, в ту же когорту.

Смотри, я сагрессировал чутка.
187 1823504
>>23497
Вот моё говно -> >>23220
s_gets это версия gets но без проблем оригинала. Там отбрасывается \n заменой нулем если лимит не достигнут чтобы не дублировалась новая строка в getchar() в будущем. EOF юзается если нужно выйти из системы, всё по Пратовскому учебнику. Кстати я уже дописал что делал.

https://pastebin.com/y4tCvUCW
изображение.png307 Кб, 500x541
188 1823506
>>23504
А да забыл добавить, можете обосрать и обоссать
изображение.png88 Кб, 360x173
189 1823511
>>23504

>EOF юзается если нужно выйти из системы

190 1823514
>>23482
Ладно, я понимаю что ты зеленишь. Поэтому напишу как есть на самом деле.
getchar() возвращает int. Это больше чем char, поэтому там может быть или char, или EOF. Будет он -1 или не будет действительно неважно.
gets() возвращает указатель на ту же строку, если прочитал успешно, или NULL, если был EOF или другая ошибка.
191 1823517
>>23423
ctrl-D это EOT, а не EOF, код 04 в ASCII
192 1823520
>>23503
Ух сколько же тут микроагрессии.
Пойду выпью клубничный смузи и подолблюсь в жопу, повейпив чутка.
193 1823521
>>23503

> бизнес-КОУЧИ


На этом месте рука непроизвольно потянулась к пистолету.

Не, этология заебатая хорошая наука. Многие книги по этой теме интереснее приключенческой фантастики и детективов. С трудами этологов по качеству и полезности могут сравниться лишь "талмуды" с описанием железа и протоколов.
194 1823524
>>23517
Осеннее послабление да?
The ^D character (aka \04 or 0x4) is the default value for the eof special control character parameter of the terminal or pseudo-terminal driver in the kernel (more precisely of the tty line discipline attached to the serial or pseudo-tty device).
195 1823526
>>23514
Короче хватит читать жопой, ты не понимаешь, что какой то шизик жопой прочитал код, заменил у себя в бошке getchar() на gets() и думает, что не обосрался, но на самом деле просто не хочет признавать.
Для справки, никто сука не говорил иначе. Все прекрасно знают как всё работает. Просто банальное слабоумие паскододебила говорит за себя.
196 1823529
>>23526
Какой еще getchar(), шиз? Покажи пост с кодом где использовался getchar. Использовался s_gets.
изображение.png248 Кб, 300x300
197 1823531
>>23349
Господи какой же еблан
199 1823536
>>23531
Сам ты еблан. А я старательный.
200 1823537
>>23520

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



Удачно подхватить спид, пидрила.
15854928531320.jpg46 Кб, 583x583
sage dead per dead 201 1823539
Какой же stdio сложный... и опасный.
Как и весь си.
202 1823540
>>23536
Хуево получается чот. Маняхинатор блять.
203 1823541
>>23524
Мать твоя жопу послабила, вот мы ее и ебем
Спасибо за инфу
204 1823542
>>23539
Как гомопедрильный seax? Я думаю ты в этом профессионал.
205 1823545
>>23537
Следи за своим батей.
А я пойду писать кастомный солюшен под фриртос с использованием mqtt esp32 bluetooth mesh сетей. Тебе такое даже и не снилось.
206 1823548
>>23545
конечно, у меня ведь есть работа, поэтому у меня не так много времени чтобы в понедельник сидеть мамке систему автополива велосипедить для дачки.
207 1823552
>>23532
Глаза протри, это gets
208 1823554
>>23521
Возможно.
Но я на дух непереношу всяких Петь Хуесосиповых, Хуязов Шлюхбудтиновых, Трахформаторов (оно это непонятное, блять, хоть знает что это за устройство такое, трансформатор?!) и т.д. Атсасизатора в ту же парашу (ну, хоть один взял себе псевдоним, который чуть-чуть, но отображает суть - человек, который связан с говном но, вообще, ассенизатор - уважаемая профессия, в принципе).

Ну а забугорные инфоцигане... Как я понимаю, суть их не лучше. Только они не так в открытую чушь несут и все, собственно, за это им только и респект.
209 1823555
>>23548
А я не систему автополива делаю. Я делаю станцию для лифта у себя в доме.
210 1823559
>>23552
Жопочтеца не исправит даже могила
211 1823563
>>23555

>Я делаю станцию для лифта у себя в доме.


Так это задача не для программирования, а для разработки оптимального алгоритма. Закодировать это даже школьник способен, а вот разработать какой-то новый оптимальный алгоритм под эту тему, это уже не совсем тривиально. Это ж надо держать баланс между расходом электроэнергии, чтобы лифт попусту не гонять, и временем ожидания лифта.
212 1823569
>>23548
Factorio IRL
213 1823584
>>23548
Ага. Дуй на работу, раб!
РНН.
Только сишечка, только микрухи, только хардкор дома.
А ты там пахай на дяденьку за копеечку.
А я вот выйду на стартап и заработаю мешок золота.
214 1823587
>>23584

>только микрухи


Через пару лет будут пылиться на полке в шкафу. Как-то так.
sage 215 1823589
>>23563
Маразматик в треде, все в транзистор!
Ты дурак? Какой нахуй расход электроэнергии, открыл электричество на электромотор и он крутит, все! Кнопку тип в кабине нажал и тащит его на определенный этаж. Какой тут нахуй алгоритм, шизик? Ты ещё скажи что ты хотел бы отдефрагментировать стек.
216 1823592
>>23587
А вот и нихуя!
sage 218 1823599
>>23595
Даунецкий выблядок.
Очередной прорывдаже сказал бы взрыв ДНР в области микроконтроллеров принес.
219 1823603
>>23589
А если кнопку нажал и вышел, застрял, умер, МОРГ, гроб, кладбище? Или нажал все этажи? Или нажал с нижнего этажа и людям сверху нужно спуститься, а тебе выше их подниматься? Зачем еще раз ехать вниз, когда можно подняться на нужный этаж выше вызванного, высадить и спускаться вниз? Короче много вариантов.
220 1823605
>>23595
Судя по все ебалай пишет, у него сажа по кд включена. Мог бы и не тратить время на уебанца.
221 1823618
>>23599
Хрюн, тред сборщиков клубники там ->
sage 222 1823619
>>23605
А ты то программировать умеешь? Мне кажется ты банальный лох-вкатывальщик, который нихуя не умеет. А я вот указан как разработчик в паре общемировых и известных проектов, в том числе и на их сайтах указан как разработчик. Так что засунь свою культяпку себе в жопу и помалкивай там, если не сделал для опенсоурса и рынка ПО столько, сколько сделал я.
223 1823636
>>23619
Пруфы тащи или иди нахуй.
224 1823657
>>23619
Что ты только что сказал обо мне? Ты маленькая сучка. Чтобы ты знал, я вышел из матфака МФТИ с отличием и медалью. Как только я вышел из универа с красным дипломом, меня тут же повели за руку на рабочее место с зарплатой от 200к без испытательного срока как стажера с годовым опытом. Меня тренировали самые лучшие умы фирмы, я ходил среди них как равный и программировал процессоры как профессионал. Благодаря мне ты наверняка, маленькая колхозная тварина сейчас читаешь это сообщение. В отличие от тебя, говноеда нищука, я никогда не работал над попенсурсными проектами, ибо я не такой неудачник как ты. Я уважаю своё время и ресурсы. Подумай еще раз, ублюдок, перед тем как писать мне, божественному со-создателю современной линейки процессоров интел. Пока я пишу здесь, мои коллеги спрашивают совета. Я бы обоссал тебя десятьютысячными способами, но не желаю тратить время на тебя, жирного уродливого девственника. Если бы ты только знал, на что себя обрекаешь, не писал бы такие глупые комментарии мне, твоему идеалу, которым тебе никогда не стать. Ты проклятый идиот. Обоссан.
225 1823662
>>23657

>матфак МФТИ


Что это за шарага?
sage 226 1823682
>>23657

>пук


Ебать у тебя полыхнуло, лошок.
Без пруфов ты подзаборная шваль и твоё слово нихуя не стоит
227 1823693
>>23682
Сказала беспруфная пиздабольная колхозница
sage 228 1823697
>>23693
Я не твоя мать. Ты путаешься, ахахаха
Безымянный.png60 Кб, 1267x858
229 1823707
Почему в конце умножает на 10? Надо делить чтобы вышло норм число. (Про вариант - '0' знаю) просто через свич пробую лол
https://pastebin.com/nuWMMPyx
230 1823741
>>23707
Ты умножаешь на 10 в цикле для перевода числа в следующий разряд. Но ты это делаешь всегда, в том числе и когда работаешь с единицами уже.
231 1823743
>>23563
>>23589

> станция управления лифтом


> ESP32


> MQTT


> Bluetooth


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


> ОЛГОРЕТМ ШТОБЫ ИКАНОМИТЬ ЛИХТРИЧИСТВА!!!1!1!



Парни... Вы серьезно? Какой, нахер, ESP32 в станции управления лифтом?) И, тем более, какой там нахрен мктт и бт?)))

Бля. Двач такой двач)
232 1823749
>>23741
Оставил на потом, пока работает с делением. Но сегодня голова уже ебобо. Потом найду косяк перепишу. Спс.
233 1823751
>>23743
А потом говорят через 20 лет. УУУ ЛИФТЫ КАК В САВКЕЕЕЕЕ
234 1823752
>>23603

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


Уебок так вот из за кого меня сначала увозит вверх на пару этажей где пытается втиснуться баба срака, вместо того чтобы просто доставить меня хекку на первый. Надеюсь вам таким лифт оторвет яйца и вы не будуете размножаться.
235 1823753
В Швеции вроде лифты вон уже без дверей и кнопок, там искуственный интеллект сам выбирает куда ехать ЛОЛ
236 1823755
>>23743
Ну связь между кабиной и блоком управления по блютузу, можно поставить ретрансляторы и организацию на базе мэш сети, esp32 стоит дёшево и влепить их можно на каждом этаже. Управлять мотором можно через драйвер с мосфетом для ардуины, вполне тока в 5а хватит, радиатор можно прилепить. Даже если какой-то этаж выйдет из строя, то система все равно будет продолжать работу. Высокая отказоустойчивость достижима. А общение по блютузу можно сделать безопасным посредством lwip over bluetooth и сделать шифрованный канал связи на TLS. Главная esp32 будет обслуживать RESTful сервер, к которому будут обращаться остальные этажи. Ну и все написать можно на FreeRTOS.
237 1823757
>>23751
А потом, возможно, не через 20 лет этот лифт, нахуй уезжает в потолок (естественно, с последующим сотрясений мозга у пассажиров). А потому что станция на esp32 повисла нахуй и ей все до пизды.
238 1823760
>>23755
Двачую.
Кстати, предлагаю убрать ещё цепи безопасности дверей кабины и шахты. Это абсолютно не нужно, а то это как в этих старых лифтах.
239 1823761
>>23757
А можно приделать внешний watchdog таймер, и если есп32 не успела сбросить этот таймер, блок управления лифтом перезагружается путем сброса электричества. Удобно. Современные технологии рулят!
240 1823762
>>23760
А зачем цепи? Хватит и обычного прочного металлического троса.
241 1823767
>>23762
Лифту и трос не нужен - он когда падает, наклоняется и клинит об стенки шахты.
242 1823769
>>23767
А можно колесики с тормозами поставить и чтобы они со стенами лифта соприкасались.
243 1823772
>>23767
Двачую, нахуй ловители. Тоже для старых пердунов.
244 1823774
>>23769
И двери на пружинах, с автодоводчиками.
245 1823775
>>23762
Смотри, короч, сейчас в 2к20 в тренде лифты на ремнях, можно, крч, ремней понаспиздить где-то и на ременном приводе запилить.
246 1823777
>>23775
Кожаные ремни?
247 1823780
>>23777
Вообще, эти ремни делают из полимера, армированного стальными тросиками (кстати, благодаря им работает подобие СПК, но для ремней). Но будем использовать, какие найдем... Хоть даже и из кожи.
248 1823782
>>23774
Можно просто лифтера посадить.
249 1823783
>>23780
С кожаными ремнями у нас будет настоящий ♂️мужской лифт♂️, с ♂LEATHER BONDAGE♂️ и ♂️FUCKING SLAVES♂️
250 1823785
>>23782
А вот и лицо на должность ♂️FUCKING SLAVE♂️ в этой системе
Безымянный.png68 Кб, 1268x864
251 1823787
Всё, рачьё закончило 11 главу. Путешествую в 12 Storage Classes, Linkage, and Memory Management. Наконец-то.

https://pastebin.com/CMV2SRMw
252 1823802
>>23782
>>23785
Кстати, да, будет аутентичненько, лифтер как в лифтах раньше было. Будет возить людей ♂️TWO BLOCKS DOWN♂️.
253 1823807
>>23802
А потом из выхода говорить ♂️FUCK YOU♂️
254 1823808
>>23802
За ♂️THREE HUNDRED BUCKS♂️ поедет ♂️TWO BLOCKS DOWN♂️
Чтобы выебать всех ♂️BOY NEXT DOOR♂️ на этаже
255 1824145
Ньюби квешн пак не обоссыте, плез:
1) История о том, что массив функциональных указателей - не лучшая идея из-за неработающего в таком случае бранч предиктора, правдива или нет?
Ведь намного же красивее(и быстрее?) (foo)[offset], чем case(key_func)...
2) Почему с метками нельзя работать как с функциональными поинтерами?
3) Компелятор всегда присваивает энумерациям значения, начиная с 0,1,2,....?
4) Как компелятор выбирает тип для (s)size_t?
dead per dead 256 1824149
>>24145

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


Как правило.

> 2) Почему с метками нельзя работать как с функциональными поинтерами?


Чтобы нельзя было впрыгнуть в случайную точку функции извне. В гцц есть &&

> 3) Компелятор всегда присваивает энумерациям значения, начиная с 0,1,2,....?


Да

> 4) Как компелятор выбирает тип для (s)size_t?


В заголовке определены как знаковый и беззнаковый типы, сравнимые по ширине с адресом.
dead per dead 257 1824160
>>24145

> Ведь намного же красивее(и быстрее?) (foo)[offset], чем case(key_func)...


Расписываю.
Если функция локальна, то case 1: f(х);
может подставить f или по крайней мере специализировать передачу аргументов. Если нет, то два варианта. Если свич скомпилирован в табличный переход, то это хуже, чем массив функций: время уйдет на выборку адреса ветки из таблицы, переход на ветку и потом на вызов функции. Если же скомпилирован в условные переходы, то тут поможет предсказатель.
258 1824236
>>24149

>сравнимые


Сравниваемые?
259 1824254
>>24145

> Ньюби квешн пак не обоссыте, плез:


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


> Ведь намного же красивее(и быстрее?) (foo)[offset], чем case(key_func)...


Да. А вообще сложная тема так как процессор черный ящик по факту.
На суперпродвинутых процессорах как у х86-64 может быть оптимизация которая узнает фактический адрес прыжка(без самого прыжка), и начинает оттуда исполнять инструкцииА потом привет spectre/meltdown
На всяких процессорах попроще(in order) видел по чертежам(на гитхабе полно), что при на наступлении на бранч или прыжок по адресу просто конвейер сбрасывает состояние и прыгает втупую на новый адрес, не заранее, а уже по факту, и никакой разницы там не было.

> 2) Почему с метками нельзя работать как с функциональными поинтерами?


По факту нельзя. Есть расширение gccмне кажется оно есть на любую возможную хотелку
https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html

> 3) Компелятор всегда присваивает энумерациям значения, начиная с 0,1,2,....?


Нет, можешь сам задавать значение каждого элемента же.

> 4) Как компелятор выбирает тип для (s)size_t?


Ручками при сборке, при выборе архитектуры.
260 1824260
>>24254
*Бля, в глаза ебусь.
По дефолту с 0 нумерует метки, но можешь сам указать нумерацию свою.
261 1824805
>>24254

вообще, компиляторы могут делать лютое колдунство, например, вместо реального колла, проверяет равенство адреса в поинтере и адреса функции, и при совпадении просто переходит на заинлайненную версию функции (со всеми плюшками заинлайненной функции), ну а если не равно, то честн прыгает на адрес. В связи с этими инлайн-оптимизации у меня такое ощущение, что сейчас стоит отходить от стандартного сишного шаблона (.h - заголовок и .c - реализация), а тупо херачить хедер онли библиотеки, шоб компилятор мог всё агрессивно заинлайнить.
262 1824806
>>24254

вообще, компиляторы могут делать лютое колдунство, например, вместо реального колла, проверяет равенство адреса в поинтере и адреса функции, и при совпадении просто переходит на заинлайненную версию функции (со всеми плюшками заинлайненной функции), ну а если не равно, то честн прыгает на адрес. В связи с этими инлайн-оптимизации у меня такое ощущение, что сейчас стоит отходить от стандартного сишного шаблона (.h - заголовок и .c - реализация), а тупо херачить хедер онли библиотеки, шоб компилятор мог всё агрессивно заинлайнить.
263 1824869
>>24806
Пример покажи вот этого:

>проверяет равенство адреса в поинтере и адреса функции, и при совпадении просто переходит на заи

264 1824871
>>24806
Ты наверное пытался описать tail call но у тебя вышло так коряво, что это выглядит еще дороже (лишние проверки)
265 1824875
>>24805
>>24806
Имеет место быть такое уже на самом деле. Компиляторы нынче пиздецки умны.

>>24869
Я другой человек. У меня другой прикол был. Проект на Си на работе. Довелось заглянуть в релизную сборку с O3 на gcc 5.4.0(весьма олдовый уже), с включенными LTO и прочим. Был ивент луп, в котором перебирались структуры соединений, в структуре были функциональные указатели на обработчики (что-то закинуть в коннект, извлечь). Я был удивлен тем, что весь ивент луп был заинлайнен со всеми возможными функциями. inline принудительно не написан везде.
О3 оптимизации были выбраны путем лоад тестинга, так как показали наибольший перф. Ну и кодогенерации такая, что фиг вообще можно что-то понять где находится что в бинаре.
266 1824885
>>24875
Принудительного инлайна нет лет 5 - он игорится.
Алсо инлайн это не всегда плюс - код может чаще вызывать кэшмиссы.
267 1824896
>>24885
Ну там компилятор старый был. Продакшен на centos6, а за версию gcc ручаться не буду, возможно там и старее 5.4.0. У меня в контейнере гцц 5.4.0 стоит, что-то более новое проект не собирает в силу определенных причин.
268 1824903
>>24885

ну это понятно, что инлай - для компилятора, как звонок -для учителя, лол
а как ввобще заинлайненная функция может вызвать больше кэшмиссов, по сравнению с обычным вызовом (не говоря уже о вызове по указателю)? ваще, конечно, хер знает, но мне кажется для современного проца идельный вариант - линейный код с простыми невложенными джампами. локальными джампаи, может. колл, по идее, может вызвать кэшмис(из-за нелокального доступа к памяти) , с другой стороны, колл на статический адрес наверняка предсказывается и соответствующая страничка префетчится в кэш. колл по указателю тоже (по идее, после нескольких вызовов проц выучит, что там реально только несколько функций реально используется, или же, банально, в хотлупе соответствующие странички не успеют из кэша вылезти).
У заинлайненной функции, однако, плюс в том, что не нужно исполнять ритуалы передачи аргументов по ABI, со всеми значениями работаем тупо на месте, оставляя компилятору максимальную свободу либо регистровой оптимизации, либо тупо раработы на прямо горяченькой вершине стека. Должно работать ещё лучше, если функции написаны в функциональном стиле, лол, без изменения аргументов.
269 1824922
>>24903
Достойный ответ. Интересная мысль.
sage 270 1825439
>>24885

> Принудительного инлайна нет лет 5


Есть forceinline/always_inline, который в разном виде умеют все. А inline нужен в основном для особого отношения к static inline в хедерах.
271 1825742
Прив, поинтересуюсь у коллег. Понятное дело, что в этом треде преобладаем мы, C-шники. Но и представители других направлений могут свободно отвечать на заданные вопросы.
Какую IDE или текстовый редактор используете для написания кода под основу / на прод? Различаются ли выбранные инструменты (продукты) в зависимости от ОС? По возможности свой выбор подкрепите аргументами.
272 1825749
>>25742
Уже полгода сижу на связке 10+WSL+визуальная студия, полет нормальный брат жив
273 1825768
>>25742
Visual Studio. Алгоритмы отлаживаю в ней, а на таргете уже никакой среды нет - пакетная сборка.
274 1825769
>>25742
Любой рандомный дистрибутив Linux и любой редактор с поддержкой lsp(vscode, vim, kate, etc).
Если не используешь тонкие особенности линукса, то можно юзать wsl, иногда вполне валидный код для Линукса будет в нем падать. Wsl2 должен быть ещё лучше, но если он включен, то могут в системе отвалится любой другой виртуализатор. Нужно будет слегка поебаться с этим.
275 1825779
>>25769

>vscode


Которая с Visual Studio имеет общего только две буковки в названии.
276 1825819
>>25779
Так пишешь будто Visual Studio это что-то адекватное и нормальное. По-моему у вас там на платформе нету других вариантов что-то другое юзать безболезненно.
277 1825841
>>25819
Испокон веков весь embedded пользует Visual Studio.
s.png74 Кб, 816x587
278 1825882
279 1825884
>>25841
Работал на 2 embedded проектах - ни разу ни у кого винды не видел. Кто-то считает что-то стандартом, а кто-то про это говноедство стандартизированное не слышал.
280 1825929
>>25884

>Работал на 2 embedded проектах


Тут улыбка чеширского кота.
Небосьв России/СНГ? Я тебе толкую за международную практику.
281 1825937
>>25929
Я тебе за США говорю.
282 1825943
>>25937

>Я тебе за США говорю.


Ну удачи. Я как бы не отрицаю возможноть разрабатывать в чём либо другом. Но эффективность разработки будет от полутора до трёх раз меньше. Так-то и в vi можно кодить, а отлаживать а gdb. Но гораздо эффективнее переносить уже отлаженные решения на железо, чем ковырять с JTAG. Что не исключает ковыряния c JTAG на финальной стадии.
283 1826014
>>25769
>>25779
Меня ещё волнует причина отказа от имплементации VS под системы, базирующиеся на Linux. Пусть проприетарно и закрыто - буду пользоваться продуктом.
VSC субъективно не нравится только посредственной скоростю работы и чрезмерным потреблением ресурсов машины. На сегодняшний день работаю с вышеупомянутым редактором.
284 1826020
>>25943

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


С редактором она на порядок выше, потому что не надеешься на отладчик и ебашишь сразу корректный код, который при этом еще и хорошо отлаживается просто чтением логов. Это водораздел между просто хорошим программистом и рокстаром.
285 1826046
>>26020

>не надеешься на отладчик и ебашишь сразу корректный код,


Самогиптноз это конечно хорошо.
15984345191980.jpg77 Кб, 600x800
286 1826068
>>26020

>С редактором она на порядок выше,


Джвачую, сколько говноиде ломали код при рефакторинге, а говноподелия Джетбрейнс заслуживает только лучи поноса.
287 1826100
>>26068
CLion лучшая IDE на планете!!1
288 1826112
>>26046
Если бы мы на форуме музыкантов сидели, и они были бы как программисты, пришел бы профи и сказал, что он с листа ноты читает и импровизирует охуенно - а ему такие в ответ, да не, невозможно, самогипноз, я так не могу. Потому что тяжело представить, что человек шел к чему-то много лет, ты же не шел - вот и все не шли. Вот тут такая же хуйня. Я не могу читать ноты с листа, и я даже знаю, что мне, как любителю смысла нет этому учиться годами, но бля, как же это было бы охуенно и удобно.
Но в программировании-то я профи в том смысле, что мне бабки платят. Есть смысл улучшать скиллы постоянно - они ковертируются как минимум в свободное время. При чем такие скиллы, которые помогут мне и через 10 лет, а не очередной фреймворк, который сдохнет через 2 года. И ты не развиваешься, если не напрягаешься, ты развиваешься, если напрягаешься и постоянно ставишь себе новые цели. И вот если поставить себе задачу не пользоваться отладчиком и идешным автодополнением - ты, внезапно, научишься писать код без отладчика и автодополнения, при чем за несколько лет скилл вырастет очень сильно - ровно до того момента, пока тебе не станет это делать комфортно, а ты не будешь срывать дедлайны и отставать от коллег. Можешь не верить. Но факт остается фактом.
И дальше IDE будешь воспринимать как трехколесный велосипед - типа ну да, можно не балансировать, но неудобно же нихуя.
Кстати, ровно по этой же причине множество любителей IDE совпадает с множеством говорящих, что студия - лучшая IDE. Потому что из всех программистов вендоблядок, сидящий в студии на одном-единственном языке, выученным в универе, и сидящий на нем последние лет 10 - это самый ленивый и не развивающий себя тюфяк из всех возможных.
При чем такой может неплохо знать сишку - потому что учить сишку доставляет удовольствие, а вот страдать и самоулучшаться - не доставляет, а редактор или там никсы освоить требует все-таки усилий.
289 1826117
>>26112

>которые помогут мне и через 10 лет


Сколько тебе будет через 10 лет?
290 1826122
>>26112
ПИШУ КОД БЕЗ ИДЕ
@
ОТЛАЖИВАЮ ПРИНТАМИ
1601211078147813003.jpg261 Кб, 1052x789
291 1826123
>>18156 (OP)
Кстати, мне вот IDE нравилось, VS2005 топчик была, потом начали появляться тормознутые монстры, да и я стал ближе к Богу. Вот проект на Qt где идет микс cpp и qml подобие js, документашка в md, еще нужно простые текстовики править, а еще есть вывод json и sql запросы, плюс править make и кое какие скрипты на bash, кек.
292 1826128
293 1826131
>>26112
Есть разряд людей - говнохранители.
Они обычно привыкнут к чему-то одному. И начинают топить за это без всякой на то причины. Шаг влево или вправо им трудно даётся.
294 1826132
>>26128
Ты хотел сказать 22?
295 1826136
>>26128
>>26128

Вот ты споришь со мной, а я первую программу написал в год твоего рождения. На BASIC.
296 1826138
>>26136
И что из этого должно следовать?
297 1826142
>>26138
Что у меня опыта чутка побольше.
Конечно при условии что всё это время я продолжал программировать и познавал новое.

Вообще об IDE и языках глупо спорить. Каждый кулик своё болото хвалит. Но если кто вкатывается. то лучше Visual Studio он не найдёт. В том числе и для начальных этапов разработки под встраиваемые системы.
sage 298 1826149
>>26136
"Ой мля, я такой умный, ведь я ещё успел написать код на basic в 90е, и вообще тру линукс это слака, а если не слака - это красноглазая дрочь, я закончил в 90е какую-то шарагу и я этим выебываюсь, и студия лучшая ИДЕ - я СКОЗАЛ, ведь я дольше живу, не согласен? а ты проживи с моё, и я так много постигаю всего нового, но примера привести не могу, ведь я такой умный, вам просто не понять"
299 1826152
>>26149

>примера привести не могу


Ну давай я тебе расскажу за один из проектов.
Дело было в далёком 2002 году. За год до этого мы, команда из четырёх разработчиков, реализовали по спецификации некое семейство протоколов, затем портанули его на Linux и на WinCE.
Это предыстория. А затем нам прислали железку от Texas Instruments и кросс-компилятор к ней. Внезапно оказалось что на этой архитектуре размернорсть char оказалась 16 бит. Со всеми вытекающими из этого проблемами. Славно тогда поебались, но таки запустили свою имплементацию.

А ты такое железо щупал?
300 1826155
>>26142
Я с тобой согласен, анонче. В студии не сидел, но вот турбо паскаль надцать лет назад мне очень нравился. Такой кайф жать F9! Со воеменем я взялся за реальные задачи и пересел в командную строку.
301 1826158
>>26142

>Что у меня опыта чутка побольше.


Аргумент про возраст - это вежливый эквивалент "твою мамку ебал", пустая фраза, не говорящая ни о чем, кроме, собственно, желания доминировать. И такую хуйню как раз любят люди, которым сказать нечего. Классика: https://zadolba.li/story/110

>Конечно при условии что всё это время я продолжал программировать и познавал новое.


Так об этом мой пост. Опыт - штука с падающей отдачей, и если ты не создаешь себе целей, которые генерируют тебе батхерт от тяжести освоения - ты стагнируешь. И научиться работать без отладчика - это простая и понятная цель, которая потом окупится. Если ты к 40 не научился и работа в IDE для тебя в 1.5 раза быстрее - то что ты вообще делал все это время. Для меня это большой вопрос. Мне не важно, кто где работает, но я настороженно отношусь к людям, которые пишут, что они в IDE работают сильно быстрее.
sage 302 1826167
>>26152
"Ой мля я такой охуенный я щупал такие вещи что тебе даже и не снились пизду сестры, ну это там АЖ char 2 байта ебать ВСЕ В СИ ТРЕДЕ ПРОСТО ВЗЯЛИ И ВЫШЛИ НАХУЙ ОТ ТАКОЙ СЛОЖНОСТИ"
303 1826168
>>26158
Да походу это какой-то маняфантазер местный, учится на 2 курсе ПТУ и мечтает о программировании железа.
304 1826170
>>26158

> И научиться работать без отладчика


Отладка по JTAG это отладчик или нет? Или там в UART логи записать?
305 1826171
>>26170
Отладка это исключительно когда делаешь это в Visual Studio

40летний маразматик из этого треда
306 1826176
>>26171
Хуйня ты.
307 1826181
>>26152
по стандврту char 1 байт, дядя
308 1826183
>>26181
>>26181

Я тоже так думал. Но если всё пойдёт как всегда - тебе сейчас объяснят.
309 1826185
>>26123
имхо, удачные были vs 6, vs 2010, vs 2017
310 1826186
>>26181
+30 лет в сфере)))
+22см))
+Visual Studio единственная лучшая ide)))
+Лучшие гей клубы Москвы)
+Дядя мне за сорок)))
+Char на железке 16 бит, уууух)
311 1826190
>>26185

>vs 6


Да, это как Delphi-7, на держались до последнего.
312 1826193
>>26186
>>26186

>Char на железке 16 бит


Че за бред?
313 1826196
>>26183
а без этого не обойтись, ибо
typedef char BYTE;
314 1826198
>>26193
ждем ответа от пенсионера, че у него за целевая платформа была такая
315 1826199
>>26196
Макросики есть жи
317 1826208
>>26201
Как-то сегодня спокойно урок прошёл. Никому даже морду ещё не набили.
318 1826211
>>26201
Ну не конвенциональный размер. Просто самый меньший размер в системе. Только почему он с размером со short я без понятия. Для этого и создали макросики.
319 1826213
>>26181
А чар - минимум 8 бит, сынок
320 1826216
>>26198
Да 100% какой-то доисторический монстр по типу TI DSP
321 1826263
>>26213
хуита какая-то, по моим сведениям чар - минимум 0-127
322 1826287
>>26213
8 битным он будет на х86.

>>26263
>>26181
Ссылку на свой стандарт. 0-127 чар у него, лол.
323 1826309
>>26181

>по стандврту char 1 байт, дядя



тебя, видимо, пере ЕГЭ не учили что сишный байт не обязательно 8 бит (но не меньше)

3.6
1 byte
addressable unit of data storage large enough to hold any member of the basic character set of the
execution environment
2 Note 1 to entry: It is possible to express the address of each individual byte of an object uniquely.
3 Note 2 to entry: A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit.

5.2.4.2.1 Sizes of integer types <limits.h>
1 The values given below shall be replaced by constant expressions suitable for use in #if preprocess- ing directives.
Moreover, except for CHAR_BIT and MB_LEN_MAX, the following shall be replaced by expressions that have the same type as would an expression that is an object of the corresponding type converted according to the integer promotions. Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
— number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8
324 1826310
>>26309

— maximum value for an object of type unsigned char UCHAR_MAX 255 // 2^8 − 1
325 1826637
>>26287
ДА ОН ТРОЛЛИТ ЧУВАК ТЫ НА ДВАЧЕ СИДИШЬ БЛЯТЬ
326 1826638
пиздец идиоты пошли
327 1826639
>>26310
Ну зачем же ты его так обоссал а?
328 1826640
>>26310
Вообще если у них чар 2 байта то пускай будет, зачем вмешиваться че то доказывать там?
329 1826641
>>26310
Додики кривоглазые не могут отличить байт от бита, сука, нахуй им че то доказывать расписывать тут сука
330 1826741
>>26640
Он не два байта, а один, просто байт жирный, 16-битный.
331 1826745
>>26741
А какой порядок октетов использовался, если вообще была возможность адресовать раздельно верхнюю и нижнюю часть этого "байта"?
332 1826749
Язык программирования — это совокупность локальных функциональных интерфейсов (составляющих частей языка), оснащенных функциями, входящими в специфические структуры значений. В процессе выполнения интерфейса функция принимает определенные функции, а функции принимают определенные функции.
333 1826762
Таким образом, в основе функционального устройства языка лежат два логических принципа: принцип построения интерфейсов и принцип компоновки функций и связей[ 243 - Хеккелес М. И., Баруздин А. В. Логика языков программирования. — СПб.: Питер, 2008. С. 39– 40.].
334 1826771
>>26310
Ты бы прочитал сопроводительный абзац, зеленый.
Там прямым текстом написано что это implementation defined и значения в табличке должны быть заменены настоящими.
335 1826792
Шел 5433 стандартосрач в ситреде

АСТАНАВИТЕСЬ
336 1826799
>>26792
Причём срач на тему, которую порешали 20 лет назад в виде stdint.h
337 1826807
>>26799
Ща бы писать int_least8_t вместо char (а int8_t это опционально отстутствующий на платформе тип)
338 1826812
>>26741
Ну охуеть теперь байт 16 бит, до чего еще шиза доведёт?
339 1826817
>>26807
Дураёбина, ты понимаешь, что раньше на системах char и int были одного и того же размера, не потому, что так надо, а потому, что нужно было отличие между символами и цифрами? Теперь ответь, нахуя мне использовать символ, где мне нужна цифра?
Хотя судя по всему ты рак который даже не знает что такое макросы и с чем их едят.
340 1826819
>>26817

>нужно было отличие между символами и цифрами


>цифрами


Ясно
341 1826821
>>26819
Хуясно иди читай базу пидор
342 1826823
>>26821
Тебе бы учебник за 3-й класс почитать.
343 1826827
>>26823
Приебывайся к словам дальше кретин ебаный, хотя если ты не улавливаешь смысла то можешь впринципе идти нахуй, я тебе объяснять ничего не буду, ибо в чем смысл раку что-то говорить вообще.
344 1826830
>>26771
Сказал зеленый даун.
345 1826831
>>26827
Децибел, если ты решил в лезть в терминологический спор, то у тебя нет права на ошибку в теминах. Цифры, блять, у него.
346 1826832
>>26309

>сишный байт не обязательно 8 бит


На этом можно закончить. Еблана исправит могила короче.
347 1826833
>>26831
Иди нахуй долбоеб. ДА ЧАР ЭТО 16 БИТ ВСЁ ОТЬЕБИСЬ.
348 1826836
>>26832
Если тебе доставляет радость писать непортируемые программы - так и скажи.
С таким же успехом ты можешь удивляться почему твоя чудо программа работает в линуксе но не компилится под виндой.
349 1826838
>>26833
Че ты разнервничался то? К тебе никто и не доебывался, это ты на людей кидаешься.
350 1826841
>>26836
О маняпрограммист поворачивает стрелочку, найс.
>>26838
Пошел нахуй еще раз. Сколько раз тебе повторять мань?
351 1826842
>>26827
Причем ты сам доебывался когда кто то перепутал чар с байтом - а чего же ты к себе не применил те же принципы про улавливание смысла?
352 1826843
>>26838
Ты не человек, ты уебанец.
353 1826844
>>26841
Там занято тобой.
354 1826845
>>26836
Портируемость - это миф, в любой мало-мальски серьезной программе будет много специфичного для конкретного компилятора/платформы кода.
355 1826846
>>26842

>перепутал чар с байтом


Дальше можешь не продолжать. Я понимаю осенняя шиза все дела.
356 1826847
>>26845
Ты еще скажи, что переносимость кода - это миф. Нормально делай - нормально будет
357 1826850
>>26845
Какая может быть портируемость у рака? О чем речь вообще если у этого идиота самая меньшая единица памяти, т.е чар разница между системами? Она не 1 байт как на любой системе, а может быть размером 16 бит. Пусть использует себе такое определение, но не пиздит про портируемость.
358 1826851
>>26845
Если для ракообразного чар и инт это одно и то же.
359 1826852
>>26846
Учи матчасть. Это не одно и то же.
360 1826853
361 1826854
>>26845
Ну да, для криворучки вроде тебя - это миф.
Есть кроссплатформенные либы, которые можно скачать в виде исходников и сразу подключить.
И написанные такими, вроде тебя, у которых размер чара прибит гвоздями.
362 1826855
>>26852
Господи. Какой же пиздец.
363 1826856
>>26855
Чел, ты...
364 1826858
>>26856
Ооо ну все я понял что ты за зверь. У вас че каникулы начались?
365 1826860
>>26850
Честное слово, вот я вообще не ебу, какой размер у кэра блядь, но есть же uint8_t для бинарной хуйни типа протоколов. Кому вообще нужно знать размер таких типов и зачем. Та же маняхуйня, как приоритет операций.
366 1826863
>>26860

> есть же uint8_t


Не ту.
Это опциональный тип.
367 1826865
>>26863
И что блядь? Переходишь на новый компилятор, где почему-то нет этого типа, тратишь целых 10 секунд на его определение.
Аутисты ебаные, лишь бы посраться по поводу какой-то маняхуйни. Хррртьфу
368 1826867
>>26865
Ой бляяяяя
369 1826868
>>26867
Аутист порвался
370 1826869
>>26836
Линукс не нужен.
371 1826872
>>26860
Ну например чтобы не использовать char вместо int когда он нужен. Общее понимание размеров в системе тебе даст понятие где и когда тебе использовать тот или иной тип. Если не нравится есть другие языки программирования. Так-же в разных процах своя размерность типов, поэтому придумали stdlib. Например в одной системе int был 8, в другой 4. Разделили, сделали short. Потом пошло снова, short теперь 8, а int 16. Кстати до этого еще байт называли словом. Чтобы не было непоняток сделали стандарт, где прописали просто, что short меньше int, int меньше long. Если нужно было точное определение типа, его засовывали либо в typedef, либо подключали stdint, где куча макросов которые определяют размер в твоей системе. Удобно при портирований. А так да, разницы никакой, если ты не паришься на счет утечек памяти ит.д или той же оптимизаций. Но считать char и int одним и тем же это тупость.
372 1826873
>>26872

>поэтому придумали stdlib


Ой не stdlib а stdint.
373 1826875
>>26836
Ты даже не понимаешь сути обсуждения, рак.
374 1826877
>>26872
Сколько же у тебя каши в голове

>до этого еще байт называли словом


Слово это слово оно никуда не делось (64-битные процессоры оперируют 64-битным словом, и это никак не влияет на размер байта)

>short меньше int


Short не меньше int. Short меньше ИЛИ РАВЕН int.
375 1826878
>>26877

>Short не меньше int. Short меньше ИЛИ РАВЕН int.


Пруфы? Или шиза порвалась снова?
376 1826881
>>26877

>до этого еще байт называли словом


>Слово это слово оно никуда не делось (64-битные процессоры оперируют 64-битным словом, и это никак не влияет на размер байта)

1560656069068.png150 Кб, 707x503
377 1826884
378 1826888
>>26881
Тебе поплохело? Врача вызвать?
379 1826889
>>26872

>Ну например чтобы не использовать char вместо int когда он нужен


Нахуя он нужен в 2020 году, когда даже контроллер за 100 рублей в розницу может в полноценные 32 бита? ASCII строки хранить?
Для байтоебли есть uint8_t, по которому сразу видно, что на любой платформе он будет восьмибитным ансайнд типом. Создавай любые бинарные структуры, сериализуй, десериализуй, обмазывайся байтиками сколько влезет. А если ты всерьез держишь в голове мысль о том, что "вот тут я использую short, но не потому что у меня 2 байта в бинарном файле, а потому что мне нужен тип с минимальной гарантией в 32767 значений...", то за такое убивать нужно. То есть наличие таких знаний в голове - гарантированный признак задрота-мудака.
380 1826895
>>26889

>Для байтоебли есть uint8_t


Это опциональный тип.
Есть только uint8_least_t и uint8_fast_t. Которые, конечно, могут быть и 16-битными. Если процессор 16-битный онли.
381 1826897
>>26884
Ну и где там написано, что short не может быть меньше int?
382 1826900
>>26888
Тебя читать научить полоумный?
изображение.png14 Кб, 612x20
383 1826901
384 1826902
>>26897
Пойми уже что в программировании используются четкие определения.
Там написано что он может быть меньше или равен.
Если он равен, то он не меньше, а значит, нельзя исходить из предположения что он всегда меньше.
385 1826903
>>26901
Че сказать хотел?
386 1826904
>>26889
Нужно различие, хотя бы потому, чтобы было такое понятие как строка.
387 1826906
>>26900
Чел, никто кроме олигофренов не называл байт словом.
Байт ВСЕГДА был короче слова.
388 1826907
>>26902
А ну ок.
389 1826910
>>26906
Ну да ну да 8 битных процессоров никогда не существовало, ИДИ НАХУЙ!
390 1826911
>>26889
short используют тогда, когда хотят именно short, а не твои маняфантазии про 2 байта.
В нормальных языках вообще можно заводить типы на любые диапазоны чисел, хоть на 13..37
Но тут только так.
391 1826913
>>26910
Это частный случай, когда они совпали.
392 1826918
>>26913
Нет, словом реально тогда называли байт.
393 1826920
>>26918
Может быть какие то рачки и называли. Зачем распространять?
изображение.png47 Кб, 1232x224
394 1826926
>>26920
Без комментариев. Сочувствую, что тебе мудаки поднасрали в голову.
1533530559582.png35 Кб, 1691x177
395 1826927
>>26926
Ты опять путаешь чары со словами, мудило?
Вот тебе в твоей википидории написано английским по белому - байт использовался для обозначения части МЕНЬШЕ ворда.
396 1826929
>>26927
Бля ты читать внатуре не умеешь.
397 1826930
>>26929
Вот это проекции.
image.png97 Кб, 900x949
398 1826932
>>26889

>Нахуя он нужен в 2020 году, когда даже контроллер за 100 рублей в розницу может в полноценные 32 бита?


Вот вообще бесплатный, но у него нет поддержки операций 8 и 16 бит.
399 1826933
>>26930
Короче напишешь когда осознаешь что обосрался.
400 1826936

>The C language defines a byte to be the number of bits used by type char , so one can have a system with a 16-bit or 32-bit byte and char type.


Как же я жидко обосрался. Признаю, я долбоебина.
401 1826937
>>26911

>short используют тогда, когда хотят именно short


Аутисты-долбоебы хотят
402 1826938
>>26933
Перечитывай скрин с этого >>26927 поста, я тебе спецом подчеркнул красненьким.
403 1826940
Ну вы тут разбушевались. PDP-11 под который писали первый компилятор Си, был 16 битным процессором. И по сути там было только 2 типа short(он же int в те времена) и char. 16 и 8 бит соответственно. Впрочем названия целое и символ были взяты не зря. Подразумевалось что размер будет меняться. Поэтому char может быть 8, может быть 7, а может быть 16 бит.
404 1826941
>>26938
Там не написано, что байт меньше слова дефакто. Там написан случай, где byte меньше word.
405 1826942
>>26941
Там написано что байт был по определению придуман как часть ворда.
406 1826944
>>26942
А char? Как часть строк которых де-факто нету в Си?
407 1826945
>>26942
Нет там это не написано это блять. Иди учи английский кретиныч.
408 1826947
>>26937
Шикарный аргумент.
>>26940
Да не потому что размер будет меняться, а потому, что char был придуман для символов. char для символов, int для целых чисел.
409 1826950
>>26945
Я тебе красненьким все подчеркнул.
410 1826954
>>26947

> Да не потому что размер будет меняться, а потому, что char был придуман для символов. char для символов, int для целых чисел.


Ну где-то так да. А для тех кто хочет именно оперировать размерами типов как количеством бит - есть stdint.h
411 1826955
>>26944
Нет, а что?
412 1826957
>>26955
Да, а нет что ли?
413 1826958
>>26950
Если ты читать не умеешь это не мои проблемы. Ты шлешь аргумент, но лупиш в ворота. Я прав, ты тупой. Байтом называли слово. ИГРА В ФУТБОЛ ОКОНЧЕНА ПАЦАН.
414 1826960
>>26958

>пук

415 1826992
>>26812
Юноша, отвлекитесь на минуту от своих подворотов. Вы знаете такие архитектуры, как pdp-10, cdc6600, бэсм-6?
416 1826995
>>26944
"de facto netu v si"
417 1827000
>>26992
Я знаю intel core i7. А остальное и не нужно!
418 1827008
>>27000
Джаваскрипт тебе ждет, родной!
419 1827012
>>27008
Пойду покомпилирую код на Javascript тогда, тем более мне сказали что так возможно в Javascript треде.
420 1827079
полезное обсуждение

но все же хотелось бы услышать от пенсионера что за платформа была где char (байт) был 16 бит

не флейма ради
422 1827100
>>26637
Ну ладно в /po или отбитом наглухо /b. Но не на этой же доске, тем более в таком треде. Я понимаю если бы веб-макак js/python/php троллил, что у них нихуя не объекты, а строготипизированный типы данных.

Эпоха декаданса наступила. Двач погрузился во тьму дегенератов выращенных разведенками.
423 1827102
>>27100
Зато какой движ тут в треде был, такая дискуссия ни о чем. Почитать было весело. Спасибо обоям
424 1827103
>>27100
Спасибо что упомянул на чем веб макаки пишут, а то бы подумали что ты один из них ахах вот троллинг бы получился да))) жыес ваще макакены еп)
425 1827108
>>27102
Нафиг не нужны такие движухи. Зочется общения есть /soc или те же /po, /b.

>>27103
Не смешно шутишь парниша
426 1827109
>>27108
Ящитаю вообще надо делать тест на входе в тред, если человек считает что char может быть только 8 бит - не давать постить.
1491007841676.png64 Кб, 765x660
427 1827112
9-битный чар, со значениями 0..511
428 1827116
>>27098
угу
в общем, на некоторых мейнфреймах и платах dsp, char имел не 8 бит

а еще стандарт posix все же требует 8 бит в char
429 1827117
>>27112
угу
image.png90 Кб, 225x225
430 1827122
>>26831

>Децибел


прослезился подливой
431 1827142
>>27116

> а еще стандарт posix все же требует 8 бит в char


И это даже хорошо. 9 битный char выглядит маргинально
432 1827144
>>27122
Просрался слезами с твоих щюток.
433 1827161
А знаете в чем самый сок?
Если CHAR_BITS == 32
То sizeof(uint32_t) == 1
Потому что sizeof возвращает размер в байтах
А байт по стандарту равен CHAR_BITS битам.
434 1827178
>>27161
Этот слишком много знает
435 1827215
>>27108
Ты дегенерат сука ебучий ещё смеешь произносить слово СМЕШНО?
436 1827294
еще странно, что в языке системного программирования, нет типа "байт" byte, но подразумеваеться что байт - это char "символ"
Ritchie.png34 Кб, 834x138
437 1827324
>>27294

> системного


Исторически, Си - язык общего назначения и машинно-независимый притом.
438 1827352
>>27324
Зачем мне это вообще нужно было знать? Я хотел игры делать, почему я сижу теперь читаю списки архитектур процессоров и их размеры слов, занимаюсь байтоеблей, углубленными изучениями терминов. Что за хуйня, ловушка джокера?
439 1827363
>>27294
Скорее всего чтобы путаницы не возникало, т к ascii коды как-бы в "uint8".

>>27352
Жиза. Если хотел игорей, то не нужно отвлекаться, а практиковаться в их направлении. Остальное потом.
440 1827366
>>27352
Ты же хочешь быстрый код в игоре?
Тебе придется выбрать ширину КАЖДОЙ сука целочисленной переменной.
441 1827392
>>27324
Системный язык и general-purpose language это не антонимы если что
442 1827406
>>27392
Конечно. Но byte в системе типов? А это сколько бит? Да, на pdp-11 это 8. А на pdp-10 сколько?
http://pdp10.nocrew.org/docs/instruction-set/Byte.html
443 1827426
>>27406
Тогда зачем ввели CHAR_BIT макрос с размером чара? Может они так отождествляют размер байта, байт и тип char?
444 1827456
>>27363
>>27366
Понимаете, суть в том, что я подсел на эту хуйню. Я хочу дрочить термины по кд. Я на игле.
445 1827480
>>27324
угу, но, бля, спроектирован он для pdp11, а в остальных системах уже костыли прикручивали..
446 1827514
>>18156 (OP)
почему сишникам-мидлам дяди в целом платят меньше и востребованность на рынке аналогично меньше, чем например у каких-нибудь фронтэндеров и растоебов?
447 1827521
>>27514
Про растоебов хз, а фронтэндерам гораздо проще объяснить и показать менеджерам чем они занимаются и за что им платить деньги.
448 1827624
>>27456
Ты идешь по улице и зависаешь на пару минут с закрытыми глазами, мечтая о высокооптимизированной игре на языке Си?
449 1827628
>>27514
Сфера уменьшаетсячасть разработки уходит с Си на другие языки, тут думаю не секрет. Плюс ненаглядность результата. Ну что-то там на железке или в консольке. Не интересно. Всем бы приложение на телефон или сайт показать с красивой кнопкой.
450 1827635
>>27514
>>27514

>в целом



По России?
451 1827690
>>27215

>Ты дегенерат сука ебучий



Ты че кобыла ебаная охуела? Ты с кем так базарить удумала, ты ондатра плешивая, лошадь зарыганая. Ты хуев блатных обсосалась дурочка ебаная? Ты шотдура ебаная писюн возле кареньуого почувствовать захотел? Да? Мускульное кольцо тебе помассировать хуем? Дичь ты ебаная иди на хуй пидор хуеглот спермохлеб. Вафельница ты дурная.
452 1827707
>>27690

>пук


Ясно. Ты хотя б Си знаешь как мужик блатной или ты плешивый подшконарный мудень?
453 1827715
>>27690
Уныло ругаешься. Слышал брань куда покрепче.
454 1827827
>>27690

>Мускульное кольцо


Маскулинное?
455 1827850
>>26792
Как будто бы что-то плохое.
456 1827855
>>27827
Двачую, хипстеры и фемки (бляди ебанные), трахгендеры (не люди) не нужны. Мы за маскулинность и мужество в этом треде.
457 1827966

>suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]


Ну и что вы скажете на это, стандартоёбы?
458 1827995
Будьте добры, дайте ссылку на задачи, которые анон тут решает.
Вот та, например, где из строки пробелы надо убрать.
459 1828007
>>18156 (OP)
Как вы доки пишите? Какие инструмены пользуете?
460 1828008

>register pok-pok dpsrc;


>f(&dpsrc);


>...


>error: address of register variable ‘dpsrc’ requested



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

>>27995
Шапка -> Керниган&Ритчи. Конкретно эта задача - в конце первого чаптера, вроде как.
461 1828010
>>28008

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


Так в этом смысла нет. Изначально register было задумано для оптимизации. При этом, если склероз не изменяет, нет гарантии что переменная будет размещена в регистре.
462 1828014
>>28010
>>28010

>Изначально register было задумано для оптимизации.


Условно в одной функции у меня три указателя, которые должны меняться очень часто в рантайме. Один из них (наиболее активный) и был помечен register.

>При этом, если склероз не изменяет, нет гарантии что переменная будет размещена в регистре.


Да, всё так, это лишь компилятору рекомендация. Хотя вроде в каком-то возможно старом стандарте и было жесткое соответствие, но я тоже неуверен.
463 1828058
>>28014
Клопилятор Ричи размещал первые три такие переменные в регистрах. При встрече амперсанда он ругался, с тех пор это и пошло.
464 1828071
>>27514
чел, программисты вообще нахуй не нужны щас
в россии щас больше половины выпускников-инженеров выпускаются с ай-ти специализацией в дипломе, это не считая вкатывальщиков
то что за раст или за реакт больше платят, тебя вообще ебать не должно, тк на одну вакансию тысячи кандидатов
465 1828074
>>28071
но программирование интересное хобби, ты можешь им заниматься в свободное время
работать дворником, уборщиком, убирать говно за стариками, чистить толчки.. такого типа работы ибо на кассу возьмут молодуху, а охранником мента на пенсии..
с этой точки зрения интересней изучать языки lisp-семейства, ml-семейства, декларативные языки наследники prolog, языки основаннын на автоматическом выводе типа, тот же haskell, чисто ооп языки типа смоллтолка и эйфеля, куча всего интересного
эмбеддед сишка слишком простое и занудное дело чтобы быть хобби
466 1828075
>>27514
1. Почти нет аутсорса с западными зарплатами
2. Есть огромное количество 35+ дядь, которые уже не будут переучиваться, зато у них дети и ипотека, поэтому будут получать сколько дают

Короче хуевый выбор сишка для заработка денег, ее нужно знать просто для собственного развития
467 1828076
>>28075

>1. Почти нет аутсорса с западными зарплатами


Какой же дурак на аутсорс выложить Си проект? Зато перекатиться легче.
468 1828083
>>28074

>программирование


>изучать языки


Это разные вещи. Языки изучают всякие аутисты, которые особо не программируют ничего интересного
469 1828157
Чем компильнуть (желательно онлайн) С код, чтобы проверить поведение на big-endian хосте?
tavo rot naoborot.PNG37 Кб, 679x348
470 1828158
Анон, такой вопрос, почему gcc выебывается, и при выводе ошибок в консоли, он вместо кириллицы хуету эту выдает. Что за непонятки с кодировкой, заебался угадывать что он говорит
471 1828160
>>28158
Enjoy your Шindoшs кодировка.
chcp укажи в консоли правильно
472 1828165
>>28158
Документ сохраняй в кодировке cp866 если хочешь кириллицу читать в сосноле. Этот
>>28160 хуйню советует.
473 1828168
>>28165
Это не документ, это ковычьки у самого гцц. Все правильно советуют - надо chcp 65001, chcp 1251 или chcp 866 (скорее последнее), чтобы отображалось нормально.
474 1828187
>>28157
PostgreSQL, Midnight Commander или... https://github.com/ralienpp/deco
475 1828189
>>28158

>почему gcc выебывается


Visual Studio так же выёбывается. Забей на русский в консоли. US ASCII это как латынь в фармацевтике и медицине.
476 1828195
>>28008
А если памяти нет? Где он вообще ее должен выделять?
А многопоточность?
477 1828250
>>28158
Используй bash, дятел.
gcc это пердоподелка для пердоконсоли, которые как правило юникодные utf-8, а виндозная консоль не умеет в юникод.
478 1828304
>>28074
Ну, вот у меня сейчас эмбеддед сишка хобби. Ничего занудного в этом нету, весело и интересно.
479 1828307
>>27628
Этого двачую.
Сейчас век ебучих золотых оберток.
Идеи для приложений говно редкое, я вам скажу. Но, сука, такое ощущение что клиенты нихуя не допирают до этого самостоятельно и продолжают вваливать в это деньги.

Кто этим всем говнищем пользуется - я хуй его знает.

мимо, к сожалению, мобильщик
480 1828312
>>26910

>Ну да ну да 8 битных процессоров никогда не существовало



8-битные процессоры это сраный новодел из второй половины 70х.

Да та же кратность 8 битам это сравнительный новодел от IBM и её линейки System/360 которую совок потом копировал.
481 1828926
>>28304
Поделись весельем, что делаешь, на чём и чем?
482 1829034
>>28926
Да дрочу вприсядку, и иногда пишу hello world с мигающим диодом, весело пиздец.
483 1829152
>>28926
Ебу DS18B20 по one wire с помощью таймеров и дма, как один из примеров.
484 1829209
>>28926
Отклеилось, сорри.
Пишу на си. Юзаю мейк. Иде - силайон (говно без симейк, но да похуй).

Что ещё делаю... Ну, хочу сбацать саундтрек из псковского порно с помощью зумера и тех же таймеров+дма.

Также вот сегодня потихоньку читаю доки на ssd1306.

Алсо, этот пидор, >>29034, это не я. Это какой-то гомодрил тебя захотел подъебать.
485 1829224
Будет ли это повторным очищением одной и той же памяти?

int a;
int
b;
a = new int[5];
b = a;
delete[] a;
delete[] b;
486 1829226
>>29224
Звездочки при объявлении указателей съелись макабой.
487 1829232
>>29224
Вылетит с ошибкой.
488 1829233
Сисуны кто нибудь имел дело с libjpeg? Как этим говном ебаным пользоваться, это просто пиздец какой то а не API.
489 1829239
>>29233
жри что дают, свинья
зато бесплатно
жри и причмокивай
и не смей жаловаться
умный дядя за тебя столько работы сделал
а ты тут ебало скривил
490 1829240
>>29224
Да. Конечно, будет вторым освобождением уже освобождённой памяти. Что приведет к падению данной программы, кстати.
Ты же присваеваешь не кусок памяти во второй раз, а указатель на нее. Т.е., по сути, адрес.
491 1829241
>>29239
А можешь мне чуть-чуть пососать, пожалуйста?
Ну так... Потилибомкать чуть-чуть чисто... пока молофья с моего конца не закапает... Ну так, чисто по-дружески...
492 1829449
>>29241
съеби животное
493 1829596
>>29449
Понял, снимаю штаны, открывай рот.
Кстати, я тут утром дрочил и забыл смыть подзалупный творог :( Прости, а? Ну это ж мой, а? Ты ж его всегда любил...

Анон, заранее благодарю тебя за эту работу! :3
494 1829597
>>29209
Алсо, сорри, утром был на нервах. Забыл написать про МК - STM32F103
495 1829637
>>29233
А что не так с ней собственно? Глянул на апи, вроде ничего сложного, если обычная задача по типу открытия картинки требуется.
496 1829639
>>29209

> Отклеилось, сорри.


> Пишу на си. Юзаю мейк. Иде - силайон (говно без симейк, но да похуй).


А в попку даёшь? Пользоваться - clion себя не уважать. Надо ставить Visual Studio.

> Что ещё делаю... Ну, хочу сбацать саундтрек из псковского порно с помощью зумера и тех же таймеров+дма.


Лучше бы сайт сделал, чем очередное нинужно.

> Также вот сегодня потихоньку читаю доки на ssd1306.


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

> Алсо, этот пидор, >>29034, это не я. Это какой-то гомодрил тебя захотел подъебать.


Сам ты гомодрил. Наебываешь тут людей и обманываешь. Говоришь что дрочишь в присядку, а потом пытаешься сойти за нормального наркомана.
497 1829662
>>29639
А ты, как я посмотрю, гей-хипстер со смузистическими наклонностями? Свою жиденькую рыженькую пиздобородку причесал? А подворотики? А смузи выпил? За фемок утром прокричал? А права окружающей среды и бигендеров защитил? А, так не гей? Ну, по тебе не скажешь... А что ты тогда на митинге зеленых тригендеров делал, а? Ааа, БЛМ? Так тебе, может быть, по щам нужно?

Я-то в жепу не даю, я, скажем так, гомофоб. А силайон пользуюсь так как я сильно альфач чтобы разобраться с вимом.
498 1829700
>>29662

> А ты, как я посмотрю, гей-хипстер со смузистическими наклонностями?


Ну да. А ты завидуешь?

> Свою жиденькую рыженькую пиздобородку причесал?


Естественно, и андеркат сделал.

> А подворотики?


А зачем их причесывать?

> А смузи выпил?


А то. Вкусно пиздец.

> За фемок утром прокричал?


Да, прям с утра, каждый день в окно кричу "слава фемкам!"

> А права окружающей среды и бигендеров защитил?


Конечно же. Использую гендернейтральный компьютер от компании Apple.

> А, так не гей?


Я гей. Тебя смущает?

> Ну, по тебе не скажешь...


Ты поехавший? Я пидор.

> А что ты тогда на митинге зеленых тригендеров делал, а?


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

> Ааа, БЛМ?


Люблю ниггеров.

> Так тебе, может быть, по щам нужно?


А может тебе надо по щщам, поехавший?

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


Какой нахуй вим? Надо использовать Visual Studio. Ровные поцоны только студию юзают.
499 1829704
>>28250
Крч, смена кодировок в нативной шиндовой cmd давала нечитаемое месиво, либо кириллицу вообще не отображала. Если кому нужно, проблему решил установкой ConEmu и chcp1251
500 1829705
>>29700

Ты не ровный пацан потому что ты за пидоров, фемок и, тем более, блм.

Тебе по щам, ты тело не по понятиям. Не пацан. Пидор-баба, пиздец.

А я вот чай люблю. Вкусно пиздец. И смузей не нужно.

Послушай вот, может ты ровнее станешь и начнёшь превращаться в нормального пацыка (хотелось бы): https://youtu.be/zLWF6G6AQNk
501 1829721
>>29705
Я не он,он не я.
Visual Studio заебись.
Макось - фуфло.
gcc в целом неплох, чтобы собрать то, что было протестировано и отлажено в Visual Studio.

https://youtu.be/0r3xvd-dloU
https://youtu.be/AqS4aNi0HQY
https://youtu.be/8LhkyyCvUHk
https://youtu.be/foGkU6x3eSE
https://youtu.be/9_Iq9CWuqMM
https://youtu.be/D4y_acTR0MY
https://youtu.be/GcpPg9n-EzQ
502 1829741
кароче только вкатился в с. сижу на кодварсе таски выполняю и увидел в тестах макрос для определения длины массива.

#define ARRAY_SIZE(x) (sizeof x / sizeof 0[x] / (size_t) !(sizeof x % sizeof 0[x]))

вдупляю уже 2 часа в это и не могу понять как это блядь работает.
что за sizeof 0[x], че это за наркомания нахуй. в gdb хуй поинспектишь, помогите разобраться плз
503 1829747
>>29741

>что за sizeof 0[x],


ты точно не попутал x[0] ???
504 1829749
>>29747
это одно и тоже, внезапно можешь проверить
505 1829750
>>29741

> #define ARRAY_SIZE(x) (sizeof x / sizeof 0[x] / (size_t) !(sizeof x % sizeof 0[x]))



Ничего необычного. Просто написано уебками чтобы запутать.
Можно упростить в:

#define ARRAY_SIZE(x) (sizeof x / sizeof x[0])
506 1829751
>>29747
>>29750
ебануться можно, спс
507 1829791
>>29750
Может там выравнивание?
508 1829803
>>29637
Задача еще проще,получить на вход жпег прочитать и сжать обратно с задаваемыми опциями.
программа минимум:

void jpgopt(unsigned char* src_jpg, unsigned long src_size)
{
struct jpeg_decompress_struct srcinfo;
struct jpeg_compress_struct dstinfo;

jpeg_create_decompress(&srcinfo);
jpeg_create_compress(&dstinfo);

jpeg_mem_src(&srcinfo, src_jpg, src_size);
jpeg_save_markers(&srcinfo, JPEG_COM, 0xFFFF); //сохраняет метаданные по битовой маске

jpeg_read_header(&srcinfo, TRUE); // хуй знает что хуй знает зачем

jvirt_barray_ptr хcoef_arrays = jpeg_read_coefficients(&srcinfo); // еще какую то хуйню читает и возвращает указатель.

jpeg_copy_critical_parameters(&srcinfo, &dstinfo); //копирует цветовой профиль, уровень сжатия итд в выходную структуру

unsigned char хout_jpg;
unsigned long out_size;

jpeg_mem_dest(&dstinfo, &out_jpg, &out_size); //out_size заполняется, out_jpg почему то пустой пустой

jpeg_write_coefficients(&dstinfo, coef_arrays); //то же самое что jpeg_compress(&dstinfo); только с какими то коофициентами
}

Код позаимствован из jpegtran из состава libjpeg-turbo, в оригинальной библиотеке насколько я понял jpeg_mem_src/dst вообще не предусмотрен, есть только jpeg_std_src/dst ошибки предлагается обрабатывать через лонгджамп. Все функции как черный ящик в котором что то проиходит со структурами, то есть без изучения кода самой библиотеки догадаться что оно делает не представляется возможным, как и написать код без примера (у меня даже и с примером не получается).
Понятно что оригинальную библиотеку написали в дремучих годах и все современные реализации/форки тупо тянут совместимость, но API тем не менее ультрауебищное написанное каким тоо мудаком
508 1829803
>>29637
Задача еще проще,получить на вход жпег прочитать и сжать обратно с задаваемыми опциями.
программа минимум:

void jpgopt(unsigned char* src_jpg, unsigned long src_size)
{
struct jpeg_decompress_struct srcinfo;
struct jpeg_compress_struct dstinfo;

jpeg_create_decompress(&srcinfo);
jpeg_create_compress(&dstinfo);

jpeg_mem_src(&srcinfo, src_jpg, src_size);
jpeg_save_markers(&srcinfo, JPEG_COM, 0xFFFF); //сохраняет метаданные по битовой маске

jpeg_read_header(&srcinfo, TRUE); // хуй знает что хуй знает зачем

jvirt_barray_ptr хcoef_arrays = jpeg_read_coefficients(&srcinfo); // еще какую то хуйню читает и возвращает указатель.

jpeg_copy_critical_parameters(&srcinfo, &dstinfo); //копирует цветовой профиль, уровень сжатия итд в выходную структуру

unsigned char хout_jpg;
unsigned long out_size;

jpeg_mem_dest(&dstinfo, &out_jpg, &out_size); //out_size заполняется, out_jpg почему то пустой пустой

jpeg_write_coefficients(&dstinfo, coef_arrays); //то же самое что jpeg_compress(&dstinfo); только с какими то коофициентами
}

Код позаимствован из jpegtran из состава libjpeg-turbo, в оригинальной библиотеке насколько я понял jpeg_mem_src/dst вообще не предусмотрен, есть только jpeg_std_src/dst ошибки предлагается обрабатывать через лонгджамп. Все функции как черный ящик в котором что то проиходит со структурами, то есть без изучения кода самой библиотеки догадаться что оно делает не представляется возможным, как и написать код без примера (у меня даже и с примером не получается).
Понятно что оригинальную библиотеку написали в дремучих годах и все современные реализации/форки тупо тянут совместимость, но API тем не менее ультрауебищное написанное каким тоо мудаком
509 1829805
>>29803
Ерунду пишешь.
510 1829808
>>29791
Там вызывают деление на 0, когда размер масява не делится на размер элемента (у наркоманов)
511 1829821
>>29805
Чому? В современных сишных (да и не только) библиотеках есть более менее общий принцип построения, тут же какой то венегрет.

Алсо, сейчас посмотрел в турбожпег есть оказывается свой API, который как раз уже вменяемый.
512 1830076
>>29721
Смоуки хороши. И hot stuff Донны Саммер.
513 1830350
>>28158
Кодировка cmd не совпадает с кодировкой выводимых сообщений от gcc. Что насчёт того, чтоб юзать Git Bash, Windows Terminal?
514 1830353
>>29224
Обозначение указателя забыл поставить, дружок.
Да и проверку на NULL (nullptr) сделать было бы неплохо.
515 1830464
>>30353

>Да и проверку на NULL (nullptr) сделать было бы неплохо.


Не нужно. Прекратите.
517 1830541
>>30464
почему же?
518 1830706
>>30516
Уууррраааа, їбати!!!
Ми це здобули!
Щиро дякую!
519 1830817
>>29821
Потому что ты нашел какой то дурацкий пример
Вот тут никаких setjmp https://github.com/md81544/libjpeg_cpp/blob/master/jpeg.cpp
520 1836070
>>29808
В макросе же "!" (отрицание) стоит. Если результат от деления будет 0, то в конце выражение обратится в 1. По итогу произойдёт деление на единицу. Появляется вопрос. Когда же результат выражения будет обращаться в конце в нуль (должно произойти деление на 0 по сути)? - Правильно, когда будет ненулевой остаток (>= 1).
Мне понятен принцип работы 3-его действия, но не понятна цель (зачем так сделали). Неужели для запутывания читающих код?
Массивы же однотипные. Мы, конечно, можем записать разные типы через приведённые указатели (void *), но тип технически будет один и тот же (размеры элементов равны). Получается, что ненулевого остатка ожидать не стоит. Получается, что обсуждаемая часть кода бесполезна? Разве не так?
Тред утонул или удален.
Это копия, сохраненная 10 апреля 2021 года.

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

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