Двач.hk не отвечает.
Вы видите копию треда, сохраненную 16 ноября 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C Programming Language.png78 Кб, 792x1023
C Programming Language #49 /clang/ # OP 1500890 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

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

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

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 2017 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://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

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

- №46: http://arhivach.ng/thread/461169/
- №47: http://arhivach.ng/thread/475391/
- №48: http://arhivach.ng/thread/495505/ >>1480534 (OP)
2 1500894
Вкатился. ньюфажик
3 1500970
подскажите как можно подключать библиотеки в turbo c++, borland 3.11, codeblocks, mingw 64 32 686, хочу делать проги для винды, чтобы без плюсов ++ чтобы был размер проги мелкий. Возникает проблема когда подключается библиотека, а там c++ а я не хочу ++. Нужно следить за библиотеками. Например я хочу работать с файлом базы sqlite, писать и читать в базу. Хочу сделать progu.exe для винды
4 1500973
знаю что когда подключается <libxxx.h> и когда в кавычках "libxxx.h" тогда это по разному. Не очень понятно как мне подключить библиотеки скаченные с гитхаба. Видел слово linker...
5 1500974
прога написанная на c может не заработать если название файла proga.cpp, поэтому нужно название proga.c. c++ - это когда вверху iostream подключается
6 1500975
чтототам.h - header file... это выглядит непонятно я забыл что это... ну там еще чтототам.c
7 1500977
я хочу делать проги исключительно на с без плюсов, потому что не люблю oop mvc, это детский сад
8 1500979
интересно сделать проги чтобы были кнопки, GUI, GUI в терминале консоли, TUI. Хочу чтобы проги красивые были, не как в cmd, через scanf
9 1500985
хочу чтобы взять TK, wxwidgets, чтобы было без winapi.
image.png417 Кб, 615x400
10 1500988
Анон, ты ебанулся?
11 1500989
также хочу создать простую прогу на winapi, чтобы было без библиотек, посмотреть на размер в килобайтах, там вообще будут библиотека подключаться из папки винды C: system32 ну там где файлы винды лежат
12 1500992
>>00988
в чём?
13 1501015
помогите найти супер материалы в интернете для моего случая. i can read english and watch youtube videos.
14 1501023
>>00979

> GUI в терминале консоли, TUI.


ncurses

Не забудь обычную консольную с параметрами написать, а то я потом в пайплайн не смогу вывод отправить.
15 1501025
Анон, ты ебанулся? [1]
16 1501031
>>01025
da ;-)
17 1501174
>>1500691

>В винде хэндлы принципиально ничем не отличаются


Хэндлы не отличаются, файлы отличаются. Файлы - дисковые, потоки - не файлы. Мир живет на винде, использует терминологию винды. Терминология с мейнфоеймов 70-х годов неуместна, устарела и только мешает, сбивая с толку.
Как пример, повторю: Там написано "при запуске любой программы на Си создаются хэндлы консоли", это прямая ложь. Нет, не создаются, ибо последняя ОС общего назначения с форсированной консолью была DOS, которая уже давно неактуальна.

>Виндой мир не ограничивается


Да, мир ограничен юниксами, в которых консоль всегда как в DOS. А в виндовс таких ограничений нет, поэтому учить людей нужно соответственно.
18 1501184
>>01174

> при запуске любой программы на Си создаются хэндлы консоли


> это прямая ложь


Смотрите, неосилятор не осилил даже винду! Сишные stdin/stdout/stderr CRT открывает при инициализации ввода-вывода вне зависимости от того, WinMain там у тебя или еще что-то. Если ты соберешь GUI-программу, сделаешь в ней puts("Hello, world!"); и запустишь ее как hello.exe > output.txt (можешь из консоли, можешь в STARTUPINFO хэндл передать - похуй), как ты думаешь, что будет в output.txt?
19 1501188
>>01184
Запускал из консоли, printf ничего не выводит пока не переделаешь проект под консоль с main. Кто не осилил? Ты неосилил. Кто пиздит? Ты пиздишь.
20 1501203
>>01188
Хотя, попробовал перенаправить в файл и действительно туда выводит, но не на экран. Так что был неправ, всё создается и даже работает, наполовину. Только нахуй оно такое нужно в реальном мире, блокнотиком в файлы подглядывать. Ручками-то понятно можно всё напердолить, но речь шла по-умолчанию.
21 1501231
>>01174

>Да, мир ограничен юниксами, в которых консоль всегда как в DOS.


Няшки, на хуй вы этого ребенка-олигофрена кормите? Пусть в ЖС или Питухон пиздует
22 1501236
>>01203
- Очень удобно для логгирования
- Внезапно, даже в гуишном приложении можно создать окно консоли вручную, тоже отличная штука для отладки
23 1501323
>>01231
Я тебе в рот ссал няшка блять
24 1501326
>>01203

>нахуй оно такое нужно в реальном мире, блокнотиком в файлы подглядывать


Именно так в реальном мире и надо, а не смотреть простыни текста на экране.
25 1501351
Аноны, где у винды искать эквиваленты этим системным вызовам?
windows.h ?
26 1501353
>>01174

>Мир живет на винде, использует терминологию винды.


Мир живет на никсах. Винда - экзотическая нишевая поебень.
>>01188

>Запускал из консоли, printf ничего не выводит пока не переделаешь проект под консоль с main.


Если бы stdout не было, printf бы просто упал.
27 1501363
>>01351

>эквиваленты этим системным вызовам


У ней нет, в WinApi
28 1501604
>>01203

> Только нахуй оно такое нужно в реальном мире


Я же тебе сразу сказал, что это вендопроблемы. Компилятору Си абсолютно похуй, что ты там себе налинковал, и создает ли тебе винда консоль или нет. Он все инициализирует, потому что у него в стандарте так написано. Если GetStdHandle() выдаст правильный хэндл - все заработает, не выдаст - не заработает. При редиректе шелл в STARTUPINFO.hStdOutput кладет хэндл файла или пайпа, поэтому все выводится, а без редиректа в hStdOutput NULL, и консоли тоже нет, поэтому ты ничего не видишь.

>>01351
В msvcrt (т.е., и в Visual Studio, и в MinGW) кое-что реализовано (#include <io.h>), в рантайме Pelles C реализовано почти все, что реально используется. Но вызывать такие функции нужно с подчеркиванием (_open) или линковаться с oldnames.lib (в Pelles C можно /Go). Но лучше всем этим не пользоваться и писать слой с абстракцией от ОС самостоятельно (поверх вот этих POSIX вызовов в nix, поверх Windows API в винде).

> системным вызовам


Именно системные вызовы (а не функции, в которые они обернуты) у каждой ОС свои, а в винде у них еще и номера от билда к билду меняются.

> windows.h


Да, если тебе эквиваленты, то в Windows API есть CreateFile/ReadFile/WriteFile/CloseHandle/DeleteFile, и для них нужно инклудить именно windows.h.
29 1502324
getc, getchar, gets(deprecated), scanf нахера их столько? еще с приставкой f есть, я прост запуталс юзать мне scanf для задач со строками или те которые get
30 1502331
>>02324

> нахера их столько


Макросы и оберточки с неявным stdin. Юзай то, что тебе удобно.
31 1502360
>>02324
Gets депрекейтед потому что небезопасен и позволяет хацкеру переполнить буфер и залить шеллкод. Getchar получает не строку а символ, другая функция просто. Для скорости используй безопасную версию gets
32 1502452
>>02360

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


Объясните пожалуйста, где тут небезопасность? Программа локальная, запускается на компьютере. Откуда тут возьмутся хакеры и зачем им что-то переполнять в случае если есть?
33 1502457
>>02452
Не хочешь - не надо, но когда с помощью твоего кода случайно взломают твой анус - не жалуйся
34 1502460
>>02457

>с помощью твоего кода случайно взломают


Повторяю вопрос. Объясни, каким образом кто-то взломает через твою программу?
35 1502466
>>02460
Тётя Срака приведёт Ванечку, начитавшегося Касперски, посадит за твою пеку. И в следующий раз как тебе захочется увидеть "Privet, <username>!", тебе в ебало прилетит "<username> - pidr ebuchi".
36 1502480
>>02460
Ты забудешь что код дырявый и установишь его на твой анус. А потом кто-то попробует ввести 100 килобайт текста вместа имени пользователя и твой анус упадет. Хммм, подумает хакер, и напишет шеллкод.
37 1502481
>>02466
Скажи, дебил, как ты живешь такой тупой? Если в твой компьютер влезли посторонние, это УЖЕ взлом. Зачем им твоя ссаная программа со ссаной "небезопасной" функцией, если они УЖЕ имеют твой компьютер в момент получения доступа.
38 1502485
>>02480

>анус


Спасибо, я понял что та дебил, можешь не продолжать. Подожду адекватных ответов. Надеюсь меня удивят и произойдет чудо взлома через ничто.
39 1502498
>>02485
Очевидно, имеется ввиду файлстрим, привязанный к сокету.
40 1502507
>>02452
Ну например ты используешь gets в суидном бинарнике и получаешь локальное повышение привилегий. Или ты часть пайпа, который обрабатывает недоверенные данные (мы ведь все любим линукс?). Или сокеты, да.
NO.jpg203 Кб, 3198x1799
41 1502519
>>02507

>мы ведь все любим линукс?

42 1502540
>>02498
>>02507
Перепись куколдов, отвечающих неадекватному школьнику
43 1502618
>>02498
Чего? Эсли очевидно, почему так скромно и мутно выражаешься? Что за это программа такая? Для чего предназначена? Кто и как взломает? ГДЕ ОЧЕВИДНЫЕ ОТВЕТЫ ПРО ОПАСНОСТЬ ВЗЛОМА? Почему я слышу только вялое блеяние в ответ на вопрос об этих ко-ко опасных фенкциях, про которые все уши прожужжали, даже компилятор радостно сообщает, но ответа где эта мифическая опасность нет?

>>02507
Какие привелегии, что ты несешь? Еще раз: Программа на компьютере, ты знаешь значение этого слова - ПЕРСОНАЛЬНЫЙ КОМПЬЮТЕР, он твой блять, какие привелегии, ты сам себя взламываешь? Остановись поехавший, компьютер и так твой!

Так, еще раз. Внятно четко и по делу: ЧТО ОПАСНОГО В ЭТИХ ТАК НАЗЫВАЕМЫХ "ОПАСНЫХ" ФУНКЦИЯХ? КТО ТЕБЯ ВЗЛОМАЕТ У ТЕБЯ ДОМА ГДЕ. ТЫ И ТАК ХОЗЯИН, ИДИОТИНЫ?
44 1502625
>>02618
Этот господин прав. Никто из нас так и не дал действительно адекватного ответа. Но ничего, есть идея, ща подожди...
45 1502626
>>02618
Иди нахуй.
46 1502631
>>02625

>не дал


Только ты этого школочмоню кормишь.
47 1502635
>>02631
"Иди нахуй" тоже мой пост, есичо. Это задумка такая. Юмор же. Ну?..
48 1502636
>>02635
Так иди, школопетух.
49 1502638
>>02625
Значит чуда не будет, а жаль. Не весело убеждаться лишний раз, что люди - безмозглые дроны, лишь как попугаи повторяющие залитую в пустую башку бессмыслицу.

А как насчет этого?
>>01604

>Но лучше всем этим не пользоваться и писать слой с абстракцией от ОС


Еще один мифический единорог, про который все пиздят, но никто не видел - "мультиплатформенность".
Объясните, пожалуйста, это слово означает наличие нескольких платформ. ТАК ЧТО ЭТО ЗА ТАКИЕ ПЛАТФОРМЫ? Линукс, линукс, и еще макос (очередная сборочка линукса)? Вот ты, тупая сука, пиздишь про мультиплатформенность, но существует всего две реальные платформы - ЛИНУКС и ВИНДОВС. Но ты же, тупая линуксоидная скотина, не будешь делать под винду, ты винду не любишь или вообще ненавидишь? тебя хуй заставишь собрать под винду. ТАК КАКОГО ХУЯ ТЫ ПРОПАГАНДИРУЕШЬ МУЛЬТАПЛАТФОРМУ, ТО ЕСТЬ ПОДДЕРЖКУ ВИНДОВС ТОЖЕ, А ЗНАЧИТ ЗАБОТУ О ВИНДОВС И ЛЮБОВЬ К ВИНДОВС, КОГДА НА САМОМ ДЕЛЕ ТЫ ВИНДОВС НЕ ЛЮБИШЬ. ТЫ СУКА ГОВОРИШЬ ПИСАТЬ КОД С ПОДДЕРЖКОЙ ВИНДОВС, ХОТЯ НЕ СОБИРАЕШЬСЯ ЕЁ ДЕЛАТЬ. КАКОГО ХУЯ, ЛИЦЕМЕРТАЯ СКОТИНА? ТЫ ТУПОЕ ГОВНО САМ СЕБЕ ПРОТИВОРЕЧИШЬ В ОДНОЙ В/ФРАЗЕ, ДЕБИЛ.
50 1502639
>>02638
Пиздец, этот ребенок не только долбоеб, но еще редкостная зануда.
51 1502640
>>02639
Ща, падажи, убоги подтянуться и начнут ему объяснять, лол
52 1502642
Тут кто-нибудь для PSP пишет?
Хочу хэллоуворлдами поразвлекаться, но один за одним наборы для девелопмента вставать не хотят из-за проёбанных пакетов. Из вариантов - бубунта и арч.
53 1502644
>>02639
Я так понял, чуда снова не будет и всё сказано правильно?
"Тупые хомяки тупо хомячат, не мешай нам быть тупыми, зануда", так? Ну окей, не буду. Я же не навязываюсь, просто хотел спросить, ведь это было всего лишь личное впечатление, мог и ошибаться. Неприятно не ошибаться в таких вещах.
54 1502647
>>02644
На хуй иди, лол
55 1502806
Почему на этой хуйне ебаной решений задач в интернете нет??? Всё нс ++ обоссаном.
56 1502822
>>02638

>безмозглые дроны


>пустую башку


>тупая сука


>тупая линуксоидная скотина


>сука


>лицемерная скотина


>тупое говно


>дебил


Пофиксил. Много воды было.
57 1502823
>>02806
Каких задач?
58 1502826
>>02823
сумма от 1 до N
59 1502829
>>02826
N(N-1)/2
60 1502830
>>02822
А на сегодня всё. До новых встреч!
61 1502833
>>02829
надо полностью с инклудами и прочим говном и вообще задач дохуя для шараги надо а нихуя не гуглится
62 1502836
>>02833
А потом ты придешь через 5 лет с тредом типа "пацаны как вкатиться". Учись, студент, сам, подобные задачи это самое важное в твоей жизни.
63 1502839
>>02836
я не хочу мне надо чтобы меня не пидорнули до сесии и всё
64 1502841
>>02826
А при чем тут Си? Я понимаю, что ты другой анон и рофлишь, но подозреваю, что тот анон хочет разбирать готовые решения примерно таких задачек конкретно на Си. Так вот...
>>02806
Задачи - это одна книга книга, а определение языка - другая. Если ты не умеешь в абстрактное мышление, дедуктивный подход, псевдокод и т.д. и т.п., то ты просто проебываешь время. Лучше плотно займись какой-нибудь гуманитарной деятельностью и поспеши обеспечить себе адекватное будущее, чтоб не словить кризис среднего возраста. Я желаю тебя счастья, анончик. Алсо, попробуй в искусство, может зайдет.
65 1502843
>>02839
Ааа, как-то не подумал об этом..
66 1502844
>>02839
Сейчас 23 октября. Учись сам
67 1502845
>>02841
да хороший совет итак так делаю пытаюсь в рахе нихуя нет всё самому через ебаное превозмогание
68 1502846
>>02844
не хочу
69 1502855
>>02846
Тогда иди нахуй
70 1502858
>>02855
сама
71 1502860
>>02841

>Если ты не умеешь в абстрактное мышление, дедуктивный подход, псевдокод и т.д. и т.п


Докладываю - именно такой, но уж универские задания по программированию решаются легко если не надо математики во всем ее ужасе.
72 1502966
f() {
pthread_create(..., &func, (void*)NULL);
...
}
g() {
for (...) f();
}

Как сделать, чтобы функция func вызввалась каждый раз в треде, не создавая отдельный? Если я вызову f() в цикле N раз, то создастся N тредов. Нужно вводить счетчик и хуярить pthread_exit?
73 1502975
>>02966
Откуда такая идея? pthread_create - это тебе не fork + exec, где заем ядра и замена кода - 2 разных вызова, и можно делать фокусы.
74 1502978
>>02975

>заем ядра цроца


фикс
75 1502979
блядь, какая же у меня хуйня получается при формулировке мыслей, больше не буду отвечать, кринж кринжовый
76 1503134
>>02822
Спасибо за классический образчик поведения тупого скота.
Показываю на пальцах.
Вопрос:

>Привет, подскажите сколько будет дважды два?


Ответ 1:

>Будет пять, няша, заверено экспертами математиками. Обращайся еще, всегда рады помочь!


Дебил:

>Спасибо, друг!


Ответ 2:

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


Дебил:

>гринтекст пофиксил Нахуй иди.



Свойство скота - преобладание чувств над разумом. Как видно в посте по ссылке и приведенном выше объяснении, пациент выбрал из ответа только эмоциональную составляющую и реагирует только на неё. Разум подчинен эмоциям. Вежливый пост с ложной информацией принят, а правильный пост, но неприятный - отвергнут. Вот почему скот тупой, таким образом живут животные, они не умеют рассуждать в принципе и подчинены эмоциями, прямо как этот дебил, не поднявшийся выше собаки, только рычит и тявкает выражая недовольство, а на человеческий диалог анализом информации не способен.
77 1503161
Объясните, почему юниксоиды и всякие GNUтые пердолики любят Си.
78 1503166
>>03161
У них 1 мозг на колонию
79 1503291
>>02638

>очередная сборочка линукса


Ебать у шкилы манямирок. У тебя всё, что написано с оглядкой на POSIX = линукс, зумер?

>тебя хуй заставишь собрать под винду


Вообще-то это винда посылает всех нахуй и не поддерживает общепринятые стандарты, лол.
>>03161
Его вообще много кто любит, причин куча: легко написать компилятор под что угодно, легко (хоть и весьма вербозно зачастую) заинтерфейсить с чем угодно, достаточно просто и его знают все. Такой питон от мира байтойобства.
80 1503312
>>03134
В посте написана хуйня, но возражать тебе - примерно как возражать куску говна. При чем тупому куску говна, который возражений не поймет.
81 1503433
>>03291

>Вообще-то это винда посылает всех нахуй и не поддерживает общепринятые стандарты, лол.


>Винда: 99%


>общепринятые стандарты: 1%


> винда не поддерживает общепринятые стандарты



Бля, смеялся
82 1503436
Смотрите что нашел:
http://zonakoda.ru/
Интересно пишет, разжевывает понятия, с примерами. Строковые литералы я только у него и понял вообще.
83 1503452
>>03433
Во-первых, понятно, что ты школьник, и у тебя существует только десктоп, но в мире-то почти вся разработка крутится вокруг серверсайда, исключение только геймдев (да и тот стремительно переезжает в облака, ещё через несколько лет у производителей видях драйвера под никсы станут приоритетными над десктопными). И тут сплошной линукс да бсд, я вообще хз кто использует шиндовс сервера кроме додиков из наших госструктур и какого нибудь совсем дремучего ынтерпрайза с кучей легаси из времён, когда джава ещё не выебала и не высушила дотнет так, что мс как побитые шлюхи сделали его кроссплатформенным, лол. Но кто-то и макос на серверах юзает, притом платит достаточно, чтобы ахуевшая эпл поддерживали эту хуйню, кек.

Во-вторых, 10% занимает тот же мак. Если писать, например, пользовательскую гуёвую софтину для заработка денег — я бы поставил на эти 10%, лол.

В-третьих, в мобилках и планшетах винда отсосала и мс от неё отказалась уже официально, весь этот рынок за линуксом и бзд.

В-четвёртых, Windows Subsystem for Linux как бы намекает, что мс чувствует жепой, что обычные юзеры забивают на пека и скоро это будет исключительно рабочий инструмент, у котороо от былой славы не останется и 10%.

Так что учи линукс, сынок.
sage 84 1503464
>>03452
Классическая книга, с которой нужно начинать изучение линуксов и си: https://web.mit.edu/~simsong/www/ugh.pdf
85 1503479
>>03464

>в шинде баги старых версий симулируют в новых версиях )0


>а в линюксах ниграв убивают)0


Классная книжка, почитаю на досуге.
1444760839643.png223 Кб, 1126x369
86 1503550
87 1503552
>>03550
У тебя /s/ протек
88 1503555
>>03550
Когда работку начнешь искать тебя ждет сюрприз в виде сплошного линукса.
89 1503556
>>03555
когда я искал очередную работку, у меня было требование - никакого ебучего линукса, наелся им, только винда + вижуал студия. И как же я счастлив, что я ее нашел, и работаю третий год с кайфом.

Мимо из соседнего треда с плюсами
90 1503558
>>03556
Ты тот хуй у которого кресты говно? Даа, с кайфом
91 1503559
>>03558
я тот хуй, у которого кресты отличный язык
92 1503564
>>03556
А там где норм зарплаты - везде линукс, беда-беда. Кроме разве что самого Майкрософта.
93 1503565
>>03564

>работы зарплаты


Ты разделом ошибся, чушок. Тут про программирование.
94 1503566
>>03550
Он тебе про серверсайд, а ты ему статистику про десктоп кидаешь, ну что ты за еблан
Все и так знают, что большинство людей домохозяек и игродаунов, держу в курсе в мире юзают шинду, но это не имеет никакого отношения к работе в айти
95 1503567
>>03566
Большинство давно юзает андроид на телефонах и смарттв.
96 1503568
>>03567
Все твои однокурсники так делают?
97 1503572
>>03550
А вот и любитель пообсуждать бинарники. Что, педролишь срачельник? Не забывай наносить смазку, бггг
98 1503581
>>03452
Когда завезут человеческую поддержку все сортов железа, тогда и приходите. А то или кулер не вращается, или иксы падают на старте, распидорашивая каким-то образом даже текстовый режим. И вино допилите, да.
99 1503583
>>03581
Пердоль, у меня все работало на шести разных ноутах, мне кажется ты что-то сделал не так.
100 1503605
>>03581
Пусть сначала завезут концепцию "драйвера". Чтобы можно было отдельно ставить, удалять, выбирать нужную версию, и всё это для каждой железки в отдельности. Иначе это ссаный андроид, только не от производителя телефона под его железо, а совсем конченый, не понять для какого железа, поэтому всего напихано, и остается только молиться что твоё заработает, ведь повлиять никак. А если не заработает, читать сайтики где перечислено "нинужное" железо, "сам лох, нито имеешь, бгг", кек.
101 1503727
>>03134
А если из твоего поста убрать оскорбления, то получится еще большая хуйня.
sage 102 1503729
>>03452
Хуй знает что ты за хуйню несешь, все уже давно на мс серваках сидят, любой линукс говно дырявого говна. Пока сруникс комьюнити закапывает себя в си-легаси говне, майкрософт пилят реальную ось.
103 1503732
>>03134
Какая-то толстота с отрицательным выхлопом. Высрать на короткий рофл длинную псевдосерьезную хуету... Я даже хз, кто тут кого забайтил.
104 1503734
>>03727
В посте нет оскорблений. Там есть выдвинутый тезис, его обоснование и предложение прокомментировать. А между строк приправлено эмоциями, выражающими личное отношение. Ведь пишет человек, а не бездушная жестянка, нет ничего странного выразить себя заодно. Это называется свобода слова, за которую, хвала богам, на данного типа анонимных бордах не наказывают.
Как видишь, повторюсь, оскорблений нет, т.к. в посте нет других людей, только сам говорящий и его отношение к им же высказанному тезису. Если же каких-то третьих лиц высказанная позиция оскорбляет, это проблемы уже их личные, не надо валить с больной головы на здоровую.
105 1503738
>>03734
Ну, допустим, я перечитал и убедился, что из смысла там только

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


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


Дальше что? Развлеки меня, анон.
106 1503751
>>03734

>Ведь пишет человек, а не бездушная жестянка


Пишет истеричка, к которой нет уважения в обществе байтоебов. 95% поста эмоции.
107 1503791
Подскажите пожалуйста. Запускаю вычисление факториала с рекурсией из учебника Дейтелов, в С-Free 5 до 12 значения нормально идут, потом ерунда какая то вывожу ULLONG_MAX 4294967295. Запускаю в браузере все нормально. Система Winxp, Pentium Dual озу 2 гиг. Где посмотреть чтобы понять почему?
Screenshot 2019-10-24 at 14.23.58.png1 Мб, 2880x1800
109 1503801
>>03550
Ко мне как к яблочному анальному рабу это ебать как относится, дружок.

>>03558
Нет, друг, это я тот чел работающий с крестами, у которого кресты говно. Даже по сравнению с уёбищной динамикопарашей обжс, они сосут что по синтаксису (а ведь это код на с++17, которого в проде днём с огнём не сыщещь, и ирл всё куда хуже), что по фичам (ведь даже в обжс уже хуй знает сколько лет уже есть модули, блядь).

>>03581
Я тебе про серверсайд, ты мне про иксы. Ну не еблан ли?

>>03729
Кто все-то? Ты один здесь нахуй.
110 1503804
>>03556

>только винда


Классно наверно, когда весь мир на цмейке сидит, а на твоей ос он никогда ничего не резолвит, да?

>вижуал студия


Дотнетовская лагающая параша.
111 1503806
>>03801

>Нет, друг, это я тот чел работающий с крестами, у которого кресты говно


Так ты бы сразу писал, что ты эплопидорас. ДАЖЕ, лол.
14215760931735433985.png461 Кб, 598x544
112 1503811
>>03806
Ебать школьника порвало. Ничего, дружок, поебёшься пару лет с шиндовсом, потом так же с линуксом на десктопе, а там уже и на барский макбук накопишь.
113 1503819
>>03811
Objc-обезьяна, иди гуй рисуй, гуй сам не нарисуется
EGaZ6wXU8AIwjp.jpeg50 Кб, 780x439
114 1503831
>>03819

>Objc-обезьяна


Нипапал.
Ничего, шкильник, я же говорю — накопишь и на человеческую технику когда нибудь. Не плачь.
sage 115 1503832
Ну дела, уже яблокопидоров в тред заносит, пиздец. Иди в джаватред сри, уебок.
116 1503836
>>03831
У меня одни видеокарты стоят дороже всего твоего железа, лалка
4e880c97054586ea910c0a6af5e9c2c9.jpg117 Кб, 807x481
117 1503842
>>03832

>Иди в джаватред сри


>тем временем под шинду есть 2 полноценные иде


>одна на джаве другая на дотнете


Лольнул.

>>03836
То чувство, когда мамка дала денег на видяху, а рандомный проект что на цмейке, что хоть на мейке собрать без 5 часов ебли всё равно не сможешь.
Screenshot2019-10-2415-05-13.png26 Кб, 587x300
118 1503845
>>03842
Да-да, мамка мне за гугл клауд платит
1902181202257095322cropv3600x400.jpg36 Кб, 600x400
119 1503848
>>03845

>сам занимается вебмакакингом


>считает всех пидорасами и даунами


>и срётся за плюсы в ц треде


Кстати, не подскажешь, где там шиндовс? Его же все поголовно на серверсайде юзают.
120 1503850
>>03799
спасибо
sage 121 1503864
>>03842
Тупой дегенерат-дебил, не знает, что визуалстудио полностью поддерживает и интегрируется с cmake. А еще она написана на плюсах. Про какие ты там иде вообще говоришь? Говноподелия от жидбрейнс, которые виснут по несколько минут?

Пиздец, как же я лолирую с этого яблодебила, он еще и боевые картиночки использует, ну дегенерат же очевидный.
122 1503870
>>03842

>тем временем под шинду есть 2 полноценные иде


а под мак больше?
123 1503874
>>03870
Столько же. Правда одна из них нативная и не лагает.
>>03864

>поддерживает и интегрируется с cmake.


Тупой школьник даже не понимает, о чём я говорю. Какая нахуй интеграция с вс? Я об этом хоть что-то говорил, долбоёб?

>А еще она написана на плюсах.


Была, году так в 2010, сейчас там львиная часть — говноподелие на дотнете уровня жидбраинс, причём плюсы по сравнению с шарпом там в состоянии какого-то рудимента из ануса.
124 1503880
>>03874
роскожи про иде на маке.никогда его в руках даже не держал
125 1503896
>>03864

>Говноподелия от жидбрейнс, которые виснут по несколько минут?


Не запускай ПО для серверной разработки на калькуляторе 8 гб оперативки и 4 ядра
image.png660 Кб, 2584x1672
126 1503908
>>03880
Боль.
127 1503927
>>03896

>ПО для серверной разработки


Это какая-то тонкота?
128 1503930
>>03896
Для какой нахуй серверной разработки? ИДЕ от жидбраинс уже умеют работать как тонкие клиенты к серверу с запущенной там иде или что?

Покупать ебаный ядерный реактор для редактора текста = быть дауном.

>>03896
Иде как иде, нечего сказать.

>>03908
Да нет, не боль. Нюфаги устраивают набеги потому что не в курсе, что его необходимо устанавливать с сайта эпла, и через аппстор его не обновить на следующую мажорную версию, он ломался и ломается при такой установке всегда, лол. Но маркетологам похуй, и такая возможность почему-то есть.
129 1503937
>>03930
Если хочешь модным быть, купи айфончик в Apple Store
Но можешь на эти деньги купить то, чего нет ни у кого в школе
Красные носки-носочки, целые четыре пары, а не три
Для кошерных ступней оболочки цвета догорающей зари
А теперь подумай, сколько дров мог бы купить на эту сумму
Для несчастных стариков, с которых он одежду снимает безумно
130 1503963
>>03874

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


> Я об этом хоть что-то говорил, долбоёб?


Не говорил говоришь? У меня любой смейк проект в 2 клика собирается, дебил.
131 1503965
>>03930
Джвачую, поделия говнобрейнса нинужны
132 1503973
>>03963
>>03804

>Классно наверно, когда весь мир на цмейке сидит, а на твоей ос он никогда ничего не резолвит, да?


Перечитай и подумай, о чём я писал, и при чём здесь твоя ебучая вс.
>>03965
Как и говно на дотнете.
133 1504050
>>03973

> >Классно наверно, когда весь мир на цмейке сидит, а на твоей ос он никогда ничего не резолвит, да?


Ты сам это придумал?
134 1504090
>>04050
Нет, просто собирал проекты у которых не 0 зависимостей.
135 1504270
>>04090
А оно разве ресолвит? Я не пользуюсь, но собирал чужой код и без нужных пакетов компиляция просто падала. Что зо ресолвинг у вас?
136 1504293
Прошу прощения, что пишу это здесь, но я хочу найти работу и понял что C для этого не очень годиться, если не разбираться в радиотехнике и микроконтроллерах.
Как после C вкатываться в другие языки? Они какими-то ущербными все кажутся.
137 1504295
>>04293

>Как после C вкатываться в другие языки? Они какими-то ущербными все кажутся.


Через боль и страдания
138 1504404
Аноны, есть ли какие-нибудь best practices или небольшая опенсорсная прога, где можно подсмотреть реализацию, чтоб программу можно было использовать такими способами?
$ sort -i unsorted.txt
$ cat unsorted.txt | sort
$ echo 7 6 3 1 2 5 | sort -o sorted.txt
139 1504429
>>04293
Перекатывайся в плюсы. на плюсах уже можно работать.
140 1504450
>>04270
Сказочник, как у тебя могла падать компиляция, если цмейк не найдя нужных либ в системе не генерирует нихуя, ммм?
141 1504451
>>04429
Вот тут двачую но они всё равно говно.
142 1504455
>>04404
Проверяешь argv[1] на наличие ключей "-i", "-o". Если есть, то достаешь из argv[2] значения и работаешь с ними. Если нет, то читаешь весь argv и пишешь в массив, который надо сортировать.
143 1504630
>>04455
В последних двух командах идет перенаправление потока ввода, читать надо не из argv, а из stdin
144 1504659
Я нубас в этом вашем программировании, почему не работает

> #include <stdafx.h>


> E1696не удается открыть источник файл "stdafx.h"


Не могу нагуглить решение. В настройках пробовал включить предварительно скомпилированные заголовки, все равно шлет нахуй. Работаю в VS 2019
145 1504662
>>04659
создавай чистый проект всегда в студии. И ничего более, никаких консольных приложений
146 1504664
>>04404
https://stackoverflow.com/questions/9642732/parsing-command-line-arguments-in-c
Если -i и -o отстуствуют, устанавливаешь как -i файл stdin, а как -o файл stdout. Эти файлы уже открыты и объявлены в недрах стандартной библиотеки
image.png12 Кб, 817x98
147 1504667
>>04662
Хуйня какая-то получается все равно
148 1504668
>>04667
В настройках проекта выбираешь платформу All, тип сборки All, выключаешь Precompiled headers, профит.
149 1504707
Есть гайды по написанию кода на ардуино через Cmake? Загрузчик их всё равно нужен, но размер проги из их иде слишком большой, да и сама среда не нравится
150 1504735
>>03874
>>03864
Вывод: все скачиваем имакс!
151 1504772
>>04707
А какую проблему ты собираешься решить использованием CMake?
152 1504938
>>04772
Не видишь чтоле — бинарник цмейком уменьшать собрался и с иде сруливать.
153 1504998
>>04450
Групо выразился. Там билдскрипт который всё делает, и он падал пока руками не установил в менеджере пакетов нужное. Так вопрос, что там у вас этот симейк ресолвит если у меня ничего не ресолвит?
154 1504999
>>00890 (OP)
Симейк говно, мейк нормасик
155 1505001
>>04659
Если в проекте включены предварительно скомпилированные заголовки, тогда создаешь этот файл в папке с твоим проектом и меняешь код на

> #include "stdafx.h"


в кавычках. Угловые скобки ищут файл в библиотечных каталога, такое нужно для системных инклудов, но не твоих собственных.

Или же просто убери в настройках проекта эти пред-компилированые заголовки и удали строчку

> #include <stdafx.h>


В таком случае этот файл не нужен и естественно пытаться его инклудить тоже не надо. Тем более его в системных библиотечных инклудах всё равно нет и не будет, лол.
1533873581926.png1 Кб, 988x18
156 1505002
>>04999
Объясни это.
157 1505010
>>04659
Потому что его нет? Если нет, создай или убери инклюд

>>05001
>>05001
stdafx.h это стандартный файл для прекомпилированых заголовков в студии, он локальный, его надо включать в кавычках.
158 1505011
>>04998
CMake ресолвит, но нужно чтобы либы где-то были и CMake'у нужно сказать где
159 1505019
>>05011

>ресолвит


Значение знаешь? Если нужно тыкать носом вручную, значит ничего не ресолвит.
160 1505024
>>05019
Ресолвить - штука сложная. Ты ему тыкаешь где у тебя какой-нибудь libxyz установлен, а он находит там cmake модули, импортирует таргеты, ты делаешь target_link_library и вуаля, у тебя и инклюдлые пути прописаны, и правильные библиотеки подлинкованы для каждой конфигурации.
161 1505025
>>04293
Странный ты. Когда видишь другие языки, в которых миллион возможностей, в которых не надо писать велосипеды, ущербным кажется именно си.
162 1505031
>>05002
cmake && make лол, симейко дебилы
163 1505080
>>05025
А их хрен освоишь, потому что привыкаешь к простоте Сишки, и везде пытаешься писать как на ней.
Хотя скорее просто я тупой.
164 1505104
>>05080
Когда много пишешь на Си, кое-какие паттерны нарабатываются, которые первое время пердолишь вручную "смотрите, белоручки, как я умею", потом макросами, а потом понимаешь, что кресты - это охуенно. Отчасти потому, что совсем не лишают тебе возможностей Сишки, с оговоркой на дополнительные касты.
165 1505110
>>05104
Не спорю, охуенно. Но ООП не осиливается.
166 1505129
>>05110
Его вроде в крестах и нет, ООП в джаве и шарпе. Зато в крестах мерзкие шаблоны.
167 1505155
>>05129

>Его вроде в крестах и нет


Вся суть детей из этого трхеда
168 1505297
Помогите, у меня осилятор сломался.

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

По каким ключевым словам вообще гуглить все это колдунство?
169 1505304
>>05297

>выражение со сдвигом


Лол, это что за говно ты читаешь? Меньше/больше или равно
170 1505306
>>05304
Русский перевод K&R
изображение.png108 Кб, 1000x331
171 1505309
>>05304

>выражение со сдвигом

172 1505311
>>05309
Сдвиг это сдвиг << >>, а <= >= это другое
scale1200.jpg304 Кб, 1130x1200
173 1505317
Двач, крик души епта! КОНТРОЛЛЕРЫ! STM32!! ARM!!!

Подскажите какие-нибудь учебники и курсы (можно платные) по STM32!

Как освоить эти ебаные контроллеры? Мне советовали курить даташиты, но как блять по даташитам ботать с нуля? Непонятно нихуя же. Это все равно что студенту-юристу не дать учебник, а дать сразу УК РФ, там же всё написано.

Повторяю вопрос: где взять УЧЕБНИК по STM? Чтоб с нуля, для нуба, было последовательно разжевано, по темам, от простого к сложному, с примерами кода.

И второй вопрос: а где вообще этому системно обучают? В колледжах, на каких-то курсах или где? Или какие-то особые люди-программисты сразу рождаются с этим знанием? Именно такое ощущение сложилось. Помоги, двач, погибаю! По работе очень надо
174 1505318
>>05311
Ну да, другое.
Но зачем сдвиг нужен в определении сравнения?
175 1505320
>>05318

>Но зачем сдвиг нужен в определении сравнения?


Хуету пишут
176 1505321
>>05317

>STM32


Купи за 200р Пердуно и начни вкатываться с него, светодиодом поморгаешь, дальше все поймешь.
177 1505325
>>05320
А как правильно записать?
178 1505327
>>05325

>А как правильно записать?


Что записать?
изображение.png106 Кб, 989x338
179 1505328
>>05327
это
181 1505332
>>05318
Это не определение сравнения, это приоритет операций. Что считается первым, что вторым. Не забивай голову, это никто не помнит и ставит скобки
ogog1487921519226077644.jpg50 Кб, 1200x628
182 1505335
>>05321

Ты, блять, меня троллишь? Ну зачем ты так
183 1505349
>>05335

>Ты, блять, меня троллишь?


Ну я с Ардуино пердолюсь, материалов много, читай не хочу. STM32 те же яйца, только в профиль.
184 1505351
>>05317

>Повторяю вопрос: где взять УЧЕБНИК по STM


Тут спросить https://2ch.hk/ra/res/314976.html (М)
А вообще с такими навыками гугления у тебя ничего не получится

>И второй вопрос: а где вообще этому системно обучают


В вузах, например
185 1505353
>>05321
Нахуй эти пердуины не нужны, когда есть подобные хуйни на ARMах, включая STM32
186 1505355
>>05351

>А вообще с такими навыками гугления у тебя ничего не получится



Спросить на дваче - один из эффективнейших способов гугления, не?

>Тут спросить https://2ch.hk/ra/res/314976.html (М)



Благодарю.
187 1505357
>>05355

>Спросить на дваче - один из эффективнейших способов гугления, не?


А макдоналдс один из эффективнейших способов пожрать
188 1505358
>>05353

>когда есть подобные хуйни на ARMах, включая STM32


Ну может и есть, просто про Пердунью материалов много да и на рукожопов рассчитана.
189 1505359
>>05297

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


Может. Но приоритет у умножения выше.

> По каким ключевым словам вообще гуглить все это колдунство?


Если вообще пиздец как интересно, то любая книжка или статья по компиляторам. Даже https://compilers.iecc.com/crenshaw/ сойдет. А вообще, тебе это читать не нужно, это на случай, если ты парсер захочешь написать.
190 1505365
>>05358
Не знаю, предпочитаю писать на железе, а не восьмибитном кале.
Хотя кого я обманываю. В кладовке валяется все
191 1505372
>>05358

> материалов много да и на рукожопов рассчитана



Идеально. Это для меня.
192 1505373
>>05372
На самом деле сложность армов сильно преувеличена (их только паять неудобно - ног много), а сложность авров сильно преуменьшена (восьмитиный кал vs нормальное железо)
193 1505378
>>05373

>паять неудобно


Вот делать не хуй еще и паять.
194 1505382
>>05373
Это смотря какие армы. ARMv8 с bare metal и до чего-то вменяемого инициализировать очень и очень непросто.
195 1505384
>>05382
Я про те что на stm32. По сравнению с взрослыми компами там только мало оперативки
196 1505489
>>05297
Эта залупа (аддитивные и мультипликативные выражения) введена чтобы избавиться от неоднозначности при парсинге. Пример: без приоритетов операций a+bc парсер может интерпретировать как (a+b)c или a+(b*c). Т.к. Ты скорее всего нюфак, и не собираешься писать парсер с, то вместо "аддитивные/мультипликативные выражения" читай просто "выражения" и не забывай о приоритете операций!
197 1505492
>>05489
Макаба зажевала звёзды a+bxc, (a+b)xc, a+(bxc)
198 1506175
Сап, сисы. Ковыряю gdb. Натыкаюсь на функцию scanf() и не знаю, что дальше делать. Выручите, а?
199 1506994
>>06175
Что ковыряяешь-то? Дебажить им пытаешься? Ввести значение, когда дойдёшь до него.
200 1507068
>>06994
просто тестовый код. Компилирую 'gcc -g test.c'
запускаю и такой вывод, когда дохожу до сканфа.

12 scanf("%s", foo);
(gdb)
wabalubadaba

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a50fdd in _IO_vfscanf_internal (s=<optimized out>,
format=<optimized out>, argptr=argptr@entry=0x7fffffffde40,
errp=errp@entry=0x0) at vfscanf.c:1103
1103vfscanf.c: Нет такого файла или каталога.
201 1507077
>>07068
Ну очевидно у тебя foo - неинициализированный указатель. Покажи код.
202 1507082
>>07077
int main(/blabla/)
{
char *foo="there is an awesome text\n";
printf("%s", foo);
fflush(stdout);//do not works with stdin
scanf("%s", foo);
return 0;
}
В смысле? То есть, типо лучше писать foo[32], если с указателями на "вы"?
203 1507105
Дней без вопроса о различии char* и char[]: 0
204 1507140
>>07082
Зачем дебилу отладчик, если он не понимает ни что такое память, ни что такое указатели?
205 1507158
>>07082

> В смысле? То есть, типо лучше писать foo[32], если с указателями на "вы"?


Ну окей, указатель инициализированный, но вот писать туда нельзя, а scanf у тебя пишет. Посмотри в предыдущем треде, вопрос действительно платиновый: >>1494168
206 1507170
>>07158

>но вот писать туда нельзя


Даже если можно, всё равно нельзя, ведь можно записать больше той строки и получить испорченную память.
207 1507230
>>07105
Спасибо, знаю, что платина доводит, но ньюфажиков необходимо тыкать в маны и наставлять на путь истинный. Да и мне самому не найс дёргать мудрого анона.
208 1507300
>>05357
мне KFC нравится .
209 1507420
>>00890 (OP)
Есть библиотека - в .h файле заголовки функций, структуры, переменные и массивы и стоят guard-ы, в .c файле тела функций и подключен .h файл.
1) Как правильно сделать некотоыре функции библиотеки inline-овыми?
2) Как правильно сделать некоторые переменные библиотеки статическими глобальными?
210 1507440
>>07420

>1) Как правильно сделать некотоыре функции библиотеки inline-овыми?


Никак. Можешь тыкать везде inline (который нихуя не гарантирует) или платформозависимую хуиту вроде inline __attribute__((always_inline)), которая гарантирует инлайн, но скорее всего ты обосрёшься. Поэтому просто забей хуй и оставь это компилятору (если не пишешь под мк с компилятором от дяди васи). А можешь просто ебануть все на препроцессоре, как диды делоли.

>2) Как правильно сделать некоторые переменные библиотеки статическими глобальными?


Никак, правильно только по ебальнику за такое можно получить. Даже если делаешь глобал стейт, то меняй его используя функции (туда хотя бы ассерты можно вставить), компилятор энивэй это всё заинлайнит, а вот ты и все кому этот код достанется ахуеют его дебажить.
211 1507442
>>07440

>то меняй его


Точнее не только меняй, но и получай (стандартный оопный подход с геттером-сеттером с ассертами на вход-выход), сэкономишь кучу лет жизни.
212 1507667
>>07440

> платформозависимую хуиту вроде inline __attribute__((always_inline))


Поддерживается чуть менее чем всеми в каком-то виде, поэтому пара #ifdef, и все ок, моя программа уже посчитала, а твоя все еще моет посуду.

> компилятор энивэй это всё заинлайнит,


Только с линк-тайм оптимизациями, которые далеко не все включают.

> Никак, правильно только по ебальнику за такое можно получить


Некоторые переменные можно делать глобальными, надо только заранее подумать о thread safety. Писать геттеры-сеттеры для какого-нибудь void ( ∗debug_writer)(const char ∗format, ...) - признак отсутствия мозга. Глобальный стейт тоже не всегда плохо. Если задача не предполагает наличия нескольких стейтов одновременно, то нехуй и таскать указатель на стейт из функции в функцию, это не дает ничего, кроме проблем и тормозов.
213 1507671
>>07667
Инлайны компиляторы игнорируют из-за таких как ты
214 1507673
>>07667
Я суммарно недели три своей жизни потратил, рефакторя код таких глобализаторов
1902181202257095322cropv3600x400.jpg36 Кб, 600x400
215 1507676
>>07667

>нюфак на полном серьёзе считает что вызов функции приведёт к тормозам, и глобал стейт через всю программу приведёт к чему-то кроме неуловимых багов


В твоём манямирке наверно ещё всегда тормозит процессор а не память?
216 1507681
>>07667

>моя программа уже посчитала, а твоя все еще моет посуду.


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

>Только с линк-тайм оптимизациями, которые далеко не все включают.


Эээ... В релизе включают примерно все. И компиляторы это делали ещё до того, как начали форсить LTO. А если кто-то и не включает — значит, есть на то причина.

>Глобальный стейт тоже не всегда плохо.


Хоть один его плюс приведи (кроме отсутствия необходимости нажимать лишний раз на клавиатуру), лол. Эту хуйню даже протестировать невозможно, не говоря уж о каком-то там тредсэйфети, охлол.

> Писать геттеры-сеттеры для какого-нибудь void ( ∗debug_writer)(const char ∗format, ...)


Ну мы про переменные говорили.

>признак отсутствия мозга


Да нет, признак отсутствия мозга — это перед каждым юзом глобальной переменной тыкать ассерты до и после, чтобы отловить ошибку, когда можно написать этот код 1 раз.
217 1507844
>>07676

>В твоём манямирке наверно ещё всегда тормозит процессор а не память?


В моем манямирке тормозит и то, и другое. Сброс конвейера и I-cache при вызовах приводит к тормозам. Не всегда, но приводит.

>>07671

> Инлайны компиляторы игнорируют из-за таких как ты


Наверное именно поэтому каждый компилятор умеет force inline.

>>07681

> И компиляторы это делали ещё до того, как начали форсить LTO


И через какой астрал они это делали, если функции в разных translation unit-ах? Анон спрашивал именно про этот случай.

> Хоть один его плюс приведи


Меньше аргументов у функции, отсутствие лишних дереференсов.

> тредсэйфети


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

> Ну мы про переменные говорили.


Указатель на функцию - это переменная.

> чтобы отловить ошибку


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


Документацию и/или комментарии писать пробовал? Попробуй - понравится. Если в переменную попадает не то, то кто-то это туда положил. Ты можешь отловить статическим анализом некоторые ошибки, ты можешь отловить тестами еще некоторые, ты можешь даже что-то отловить в рантайме ассертами, но если не использовать мозг, в релизе все равно возникнет ситуация, когда оно свалится.
218 1507967
>>07844

> если функции в разных translation unit-ах?


Функции на пару строк можно и в хедере написать, чем в тех же плюсах всегда и занимались.

>Меньше аргументов у функции, отсутствие лишних дереференсов.


Т.е. ты согласен, что из плюсов — меньше нажатий по клавиатуре?

>Документацию и/или комментарии писать пробовал?


Во всём мире программисты умудряются срать себе в штаны используя подобное уже пол столетия, один ты борщехлёб д'Артаньян, я понял.

>Ты можешь отловить статическим анализом некоторые ошибки


Какие? Неинициализированные переменные? Хотя в лапше с глобалстейтом, гото и прочей чернухой тебе даже в этом никто не поможет.

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


Пидоран, как ты будешь писать тесты для либы с глобал стейтом? Тестировать всю либу снаружи? Если либа на 200 строк — то ок, но когда там будет пару десятков мб кода — что такие тесты вообще могут показать? Что у тебя всё ебнулось нахуй от сегфлолта?

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

>но если не использовать мозг


Ну я же говорю — весь мир считает себя дохуя умным, говнокодит и обсирается, один ты не пидорас.
219 1507970
>>07676

> нюфак не знает про кэширование


Лолд просто, зато боевые картиночки кидает. Стыд.
220 1507972
>>07967

> Функции на пару строк можно и в хедере написать


Да, именно так правильные инлайн-функции и делают.

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


Современные программисты срут еще больше, используя тесты. То время, которое они могли бы тратить на написание качественного кода, они тратят на написание множества некачественных тестов. Результат очевиден.
221 1507980
А для чего вы Си изучаете без плюсов?
222 1507984
>>07972

>Результат очевиден.


Результат очевиден именно потому что никто их и не пишет, блядь. Даже доки в гнутом софте найти легче, чем нормальное покрытие тестами хоть где нибудь. Итого — у нас нет недырявого софта, который с каждым апдейтом не разъёбывался бы по новой, от слова совсем.

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


Ещё раз, борщехлёб, код может быть качественным пока его 100 строк и ты пишешь его один. Когда в проекте хотя бы около несколько тысяч строк и несколько голов скота погроммистов — результат очевиден.
223 1507985
>>07970
>>07681

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

224 1508029
>>07984
Код будет качественным, если его пишут качественно. Если об архитектуре подумали заранее, если программисты знают язык, на котором пишут (особенно актуально для сишки), если предметную область тоже знают. А если не знают, получается хипстерское "ну я не уверен, ошибся ли я в условии for на единицу, напишу-ка я тест". Итого —

> у нас нет недырявого софта

225 1508036
>>08029
Т.е. если у нас нет недырявого софта, и недырявым он получается только если его пишут не хипстеры, то вообще все современные (в смысле, компутерные) технологии написаны хипсторами?
226 1508041
>>08036
Либо всем похуй на безопасность и/или корректность, либо код говно, либо код коммерческий, и нет времени/денег, чтобы писать хорошо. Про сложившуюся практику программирования очень хорошо и с кучей примеров написано тут >>03464. За прошедшие годы кроме названий технологий ничего особенно не поменялось, а местами стало только хуже.
227 1508054
>>08041
А писать хорошо — это вообще как? Не релизить ПО совсем? Что-то сдаётся мне, что лучше говнокод, чем такие маняпотехи.
228 1508075
>>08054
Это сидеть в кожаном командирском кресле и указывать черни как надо писать код. А если у них получается плохо, значит дураки, нужно было заранее соломку подстелить. Типичный я начальник-орхертехтар, а вы дураки.
229 1508199
>>08075
Насяника-нама, у нас дидлаен истикаит завтра, нихуа ни гатова!
230 1508201
>>08199

>пук мани

231 1508234
Анончики, разрешите обратиться с глупым вопросом. Правильно ли я понимаю, что чистый Си -- это язык программирования технобогов. Этот язык широко применяется у таких ребят как: Boeing, Airbus, NASA, SpaceX etc? А значит в него есть смысл вкатываться если нравиться пердолиться с разной техникой. Будь это самолёт или ЧПУ станок Или я всё не так понимаю и для этого надо заходить в асамблеры, ады и прочие фортраны?
Благодарю за ответы, не пинайте сильно. Обнял Си!
232 1508250
>>08234

>Boeing, Airbus, NASA, SpaceX


Только в виде прошивок для embedded.
На ПК у них совсем другие языки используются, высокоуровневые.
233 1508287
>>08250
Подожди Антоша, только не убегай. Прошивки это я так понимаю небольшие проги для конкретного железа так? А как же такие сложные штуки как автопилот, бортовой компьютер и тд? Неужели там используется онли Ada?
С другой стороны читал статьи про стильный, модный, молодёжный F-35, который кодят на C++. А также про разные спутники и марсоходы, которые ебашут по хардкору только на Си.

Но вот что значит на ПК они используют совсем другие языки? Итоговая компиляция всех девайсов? Написание интерфейса или что ещё?

Сори если совсем хуйню несу, но так любопытно это всё. И какое то благоговение ощущаю от тех, кто занимается железным прогингом. Наверное самые благородные погромизды из всех.
234 1508519
Пацаны,снова нужна ваша помощь,время горит ,а лаборатоная нужна

https://pastebin.com/5g3F9rvs

Как то нужно реализовать след ход действий над матрицами

C=(B+E)*(A-E)

Умножение уже сделал,не знаю что делать с Единичными матрицами(E)

Хэлп гайз
235 1508583
>>08287

>А также про разные спутники и марсоходы


Там код не намного сложней кофеварки
237 1508643
>>08640

>рэп


Сюда ли ты зашел, петушок?
238 1508648
>>08519

>Как то нужно реализовать след ход действий над матрицами


След ход действий? Чего блять? Ты обгашенный нахуй или что? Или просто русский не твой родной? Что за хуйню ты написал?
15658056238380.jpg36 Кб, 594x474
239 1508706
>>08583
Серьезно?
240 1508804
>>08648
Только один из нас,и это точно не я,додик.Следующий ход действий ,т.е. ,для обделенных разумом , сложение,вычитание,умножение матриц
241 1509071
Господа сишники, подскажите, пожалуйста. Нужно запилить преемптивные потоки уровня пользователя (M user-level threads -> N kernel threads, M >> N) для unix-систем (нужно в одном проекте). Видел способ с прерываниями по таймеру и ucontext, но интересно, есть ли еще какие-то способы, и если есть, то насколько они эффективнее/проще/надежнее/e.t.c.
242 1509214
Ньюфаг в треде.
А как работает stdio.h? Как он выводит и вводит инфу, если сам язык этого по дефолту не может? Или его написали на каком-то другом языке? Гуглить пробовал, пишут только о том, что этот stdio.h даёт возможность ввода-вывода, но нигде не пишут о том, как он именно работает, то есть что там такого происходит.
244 1509541
в иксах (xcb) можно как-нибудь прицепить окно к курсору или нужно самостоятельно его перемещать за курсором? нихуя не гуглится ничего. делаю колорпикер, хочу чтобы окошко с цветом за курсором бегало (в данный момент. потом может лупу попробую сделать).
245 1509549
>>08804
Наркоман иди проспись.
246 1509554
>>09214
printf -> __printf -> puts -> _IO_puts -> _IO_sputn -> __xsputn -> _IO_new_file_xsputn -> new_do_write -> __write

Это из gcc
247 1509646
>>00890 (OP)
Считается ли правилом хорошего тона (и по MISRA C) использовать возвращаемые функции в условиях?
Например, здесь происходит выбор какого-либо действия в зависимости от того, что возвращает функция:
switch ( Function() )
{
case '1':
{
/ действие /
break;
};
...
default:
{
/ действие
/
break;
};
};

А здесь происходит проверка условия: если функция возвращает 0, действие не выполняется, если 1 - выполняется.
if ( Function() )
{
/ действие /
}
248 1509647
>>09646
Нет
249 1509693
>>09646
Не запрещается, но стилистически это уровень laba.cpp
250 1509760
>>09647
>>09693
а как тода будет правильно
251 1509769
>>09760
Иметь другой доступ к стейту, очевидно. Интерфейс, например.
252 1509825
>>00890 (OP)
Аноны, такой вопрос. По MISRA C после оператора if, else if обязательно должно быть else, а в теле switch должна стоять заключительная метка default.
А если мне нечего там писать, оставлять пустые скобки под ними? Или обязательно нужно что то написать там, даже если оно не будет иметь смысла?
253 1509883
>>09825
default: continue;

else;
254 1509901
>>09825

>default


default:;
255 1509923
Антуаны, а зачем нужен Си если есть кресты?
256 1509924
>>09923
Си не загажен ООП
чому.PNG10 Кб, 407x254
257 1509949
Чому так странно? Второе я ещё могу понять, может, long double как-то хранится отлично от double, но почему третье так отображается, не понел. GCC
258 1509998
>>09924
И поэтому везде, где оно нужно (GTK итд), костылят его руками?
259 1510001
>>09923
Для легаси говна, а так сейчас даже эмбдед пишут на крестах, всё таки без классов программировать хуево.
260 1510037
>>10001

Ради справедливости, в эмбед-приложениях необходимость в классах не особо велика. Pure С охуенен в своей лаконичности. Для задач типа "считай АЦП - выкинь на дисплей - помигай светодиодом" классы не нужны, хватает структур.
261 1510043
>>09998

>где оно нужно


Оно нигде не нужно

>GTK


Говно
262 1510055
>>10037

>Для задач типа "считай АЦП - выкинь на дисплей - помигай светодиодом" классы не нужны, хватает структур.


Где такие задачи есть?
263 1510074
>>10043

>Говно


Аналоги, карл. В консоли сидишь?
264 1510092
>>09949

> long double как-то хранится отлично от double


80 или 128 бит в отличие от 64 бит в обычном double. Поэтому для вывода тебе нужно указать правильный тип для printf: %Lf и %Le соответственно.

> почему третье так отображается


Интерпретирует кусок мантиссы long double как double. Получается очень маленькое число (e-185!), поэтому %f округляет его до нуля, а вот %e показывает.
265 1510108
>>10055
В каждом втором диагностическом медприборе, например. ЭЭГ, ЭКГ, миография, стабилометрия, всякие там биоимпедансы и биопотенциалы.

Забыл еще ключевую фишку, послать данные по UART/USB, это святое, везде нужно. Но это всё содержится в готовых библиотеках, ООП тут не пришей пизде рукав.

Главное чтоб прога была максимально простой и без потенциальных выстрелов в ногу. В контроллере неотслеженный баг может стать бомбой замедленного действия. Пляшем от этого.
Снимок.PNG5 Кб, 245x142
266 1510170
>>10092
Он меня унижает. Lf показывает -0.000000. А ещё я не понимаю, почему он вообще позволяет себе такую дерзость, как -0, ведь там 2's complement в любом случае реализован, скорее всего...
267 1510171
>>10108
Нас к медприборам не подпускают, только говнобэк писать для сайтов
268 1510173
>>09646

>А здесь происходит проверка условия: если функция возвращает 0, действие не выполняется, если 1 - выполняется.


А что в этом плохого?
chemical-evolution-1.jpg80 Кб, 1000x616
269 1510191
>>10171

Каждому своё. Но перескочить еще не поздно, если ты не сорокалетний старпёр. Если интересно - задавай свои ответы.
270 1510250
>>10191

>задавай свои ответы


Сфотай свою детскую попку?
271 1510378
>>10170
Да ты охуел. Сравни, что у тебя в предыдущем скриншоте, и что в этом! Там у тебя было 0.3L (long double), а тут 0.3 (просто double). Для обычного дабла (и флоата, который до дабла промоутится в функциях с неизвестными типами аргументов) тебе нужно %f, для long double %Lf, неужели так сложно?

> ведь там 2's complement в любом случае реализован


Там всего понемногу. Знак там отдельно и явно, мантисса совсем беззнаковая, а экспонента хранится хоть и без знака, но со смещением формат принципиально ничем от 2's complement не отличается, просто диапазон на положительные и отрицательные разбит не по 0 ("слева" от нуля отрицательные (0000...0001 = 1, 0000...0000 = 0, 1111...1111=-1), а посередине ("слева" от "середины" беззнакового числа отрицательные: 1000...0000 = 1, 0111...1111 = 0, 0111...1110 = -1).
272 1510406
>>10378

>а тут 0.3


не
273 1510407
>>10406
У тебя шрифт говно, я думал, что там 0.31. Если там L маленькая, то она для спецификаторов плавающей точки игнорируется нахуй, нужно именно большую.
274 1510408
>>10407
Бля, какую-то хуйню написал. Надо спать.
lf.png3 Кб, 640x82
275 1510409
>>10170
>>10406
>>10408
Короче, я понял. У тебя гцц под виндой. Скажи ему, что у тебя -std=c99 или -std=c11, а то у него по умолчанию -std=gnuчто-то-там, и он в таком режиме не делает костылей вокруг msvcrt, чтобы %Lf работал. Почему именно так - не знаю, и задумываться лень. Спать надо.
276 1510416
>>09541
блядь это говно полностью загружает ядро процессора если двигать окно за курсором, причем если обычное окно двигать руками, то загрузка в 3 раза меньше. как это делается блядь?
277 1510465
>>10191

>Если интересно - задавай свои ответы.


Мимо начинающий embedder, задам пару вопросов по теме, мне интересно.
1) На ассемблере уже больше ничего не пишут, только на си и с++?
2) Используете ли "программистские штучки" в своей работе, вроде гита, гитхаба (системы контроля версий), код ревью и т.д.?
3) Есть ли разделение на джуниоров, миддлов и сеньоров, как в айти?
4) Как делаете тестировку программного обеспечения?
5) Как проходит проверка программного обеспечения на правила MISRA С?
278 1510471
>>10465
Не он но отвечу:
1) ????
2) Да, естественно используем, только это не программистские штучки, и немного не так как коммерческие лохи
3) в некоторых местах уже есть, в телекомах например щас уже почти везде так, в остальных местах Нотация и служебные звания как у заводских работяг ну типа старший инженер пидорасович
4) методами тестирования
5) никак
279 1510495
Визуал студия постоянно фыркает на функции вроде memcpy(), fopen(), strcpy() и т. п., навязывает версии с суффиксом _s.
_s-версии - они стандартные или только микрософт?
280 1510520
>>00890 (OP)
Раз тут тред про CLang, анон, поясни как скомпилировать эти файлы https://github.com/Wind4/vlmcsd с "языка шланг" в exe - gcc-компилятором.
281 1510535
>>10495

>_s-версии


>только микрософт



>>10520
Устанавливаешь cygwin (или что там сейчас ходовое на шинде), качаешь исходники, заходишь в консольке по адресу исходников и запускаешь gmake (блядь, каким же надо быть пидорасом, чтобы в 2020 использовать make, и не просто make а, блядьб, требовать gmake).
282 1510550
>>10535

>make


Люблю его
283 1510571
>>10535
Пффф, этот кинкгвин хуй поставишь на XP. Не уже-ли без кигвина нельзя сбилдить шланг в win32 exe?
284 1510579
>>10535
О! У меня есть MinGW на XP. Можно как-то ним шланг сбилдить?
285 1510605
>>10579
Я билдил ллвм и шланг под хп. А че, бинарный не работает?
286 1510609
>>10409
Понял, благодарочка от души спасибо браток
287 1510615
>>10605
В том то и дело, что работает, но только на XP.
На win8.1 не хочет пахать.
Вот я и хочу поколупаться в коде, может чё дописат надо чтоб робило. Но для начала надо сбилдить. Где этот gmake в mingw?
Вижу только make, только он чуток другой там - mingw32-make.
288 1510639
Анон, что скажешь по поводу серии книг Антона Столярова «Программирование: введение в профессию»?
http://stolyarov.info/books/programming_intro

Вкатываюсь в C со второй попытки, сначала курил K&R, потом поступил на бассейн школы 21, в итоге слил большую часть заданий, потому что начал баловаться хаками типа while(*p++) не догнал про отличие между массивами и указателями на массив, и вообще передачу значений функциям обращался к Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management", но времени на спокойное ботанье было мало, не взяли по итогам. Интерес немного поугас, поботал C#, и стало тоскливо.

Наткнулся на Столярова и снова начал ботать пошло очень бодро, действительно чётко объясняется про работу с указателями, понял как работают заголовки, линке. В целом аргументированно поясняет за плохой, хороший стиль, за Unix. Как по мне книжки лёгкие с юмором, только часть с командами на i386 занудная.

Кто ещё интересовался проектом?
289 1510668
>>07420

>2) Как правильно сделать некоторые переменные библиотеки статическими глобальными?


Разобрался. Их нужно перенести из хеадера в начало с-файла перед функциями, в которых они используются, и добавить перед каждой из них static.
Тоже самое делается с функциями - из .h файла убираются декларации функций, которые мы хотим сделать статическими, а в .с файле перед функциями нужно поставить static, и ещё inline можно поставить до кучи, если надо(static inline).
290 1510676
>>10668
Таким образом в .h файле у нас "интерфейс" библиотеки - внешние функции(заголовки) и глобальные переменные, а в .c файле "начинка" - внутренние функции и переменные, видимые только в этом файле(и тела функций, объявленных в .h файле).
291 1510696
>>10639

>while(*p++)


Для ньюфага это нормально. Не понятно только почему ты думаешь, что такая фигня могла тебе что-то завалить.
Чё за бассейн школы? К и Р кстати не читай это залупа, Оно в шапке только из-за эстетики. Читай две другие книги из оппоста. А ваще читай Страуструпа как нормальный человек, а к этому треду вернёшься позже
Снимок экрана 2019-11-01 в 19.28.36.png26 Кб, 752x235
292 1510857
Чё делает эта функция? Откуда индексы у inA и inB, если это просто числа (флоты)?
293 1510875
>>10857
Это указатели, а не просто числа. Что функция делает, понятно из названия.
294 1510877
>>10875
А можешь написать код, как её вызвать, позязюста
295 1510912
>>10877
Конечно братишка держи
...
add_arrays (•one, •two, •anus, length);
...
296 1510914
>>10912
Ну ты лох
Снимок экрана 2019-11-01 в 20.42.46.png20 Кб, 404x224
297 1510921
>>10912
Я уже сам написал с моим хуёвым знанием си. Непонятно только почему мы в функцию передаём не указатели на переменные, а сами переменные
298 1510930
>>10921
Массивы это указатели.
299 1510938
>>10930
То есть указатель на float это всегда массив? И поэтому компилятор не ругается и даёт взять индекс у этого указателя?
300 1510941
>>10938
Нет, в переменной массива хранится только адрес первого элемента.
301 1510942
>>10938
yoba и &yoba[0] это одно и тоже, потому что yoba[a] это по определению *(yoba+a), если подставить получишь &•(yoba+0) или yoba.
Но массивы это не указатели. У них как минимум sizeof разный.
302 1510951
>>10942
Спасибо
303 1510957
>>10941
Опять ньюфажеская платина.
int i = 1;
int y[] = {2,3};
Что хранится в первой переменной? Что хранится во второй переменной? Адрес первого элемента? А вот и нихуя.
304 1510969
>>10495

> _s-версии - они стандартные или только микрософт


Да, они типа стандартные (C11, Annex K), но это приложение необязательное и смысла в нем мало, поэтому кроме MS его никто не хочет реализовывать. Но вот фыркает она совершенно зря, поэтому затни ее нахуй -D_CRT_SECURE_NO_WARNINGS и не обращай внимания.
305 1510973
>>10957
В чёи разница между
int y[] = {2,3};
и
int y[2] = {2,3};
306 1510981
>>10973
Ни в чем, в первом случае циферка в [] посчитается автоматически, в зависимости от количества инициализаторов. Сравни с: int x[] = {2, 3}; int y[1000] = {2, 3} и int x[] = {1, 2, 3}; int y[2] = {2, 3}.
Снимок экрана 2019-11-01 в 21.37.41.png32 Кб, 458x335
307 1510992
>>10981
А вот на стекоферфлоф попалась такая еботня
А
void bubble(int array[], int size) {}
это тоже самое что
void bubble(float *array, int size) {}
?
308 1510997
>>10992
фикс там инт во второй декларации
309 1511004
>>10992
Когда параметры - да, то же самое
310 1511060
>>10992
Скоро у всех будет пригорать, потому что для упрощения статического анализа в C21 обдумывают возможность притащить VLA в стандартную библиотеку и для новых функций делать сигнатуры вида int foo(int num, int array[num]). Это квинтэссенция языка: тут и массивы переменной длины, и преобразование массива в указатель в аргументах, и порядок аргументов изменен с логичного на обратный в угоду кривому синтаксису.
311 1511065
>>11060

> int foo(int num, int array[num])


ты долбоеб? это говно еще с C99 есть
312 1511095
>>11065
Ты читать умеешь? Оно есть, но в стандартной библиотеке функций типа memset(size_t length, char mem[length], int c) пока нету.
0CTH5ZSnL7E27GUU.jpeg152 Кб, 1024x681
313 1511185
>>10465
Атвичаю.

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

2) Используем гит и гитхаб. Код ревью есть в виде "эй, Уася, пусти меня за комп, я твой код погляжу" со стороны старшего программиста.

3) Чёткого разделения нет. Но есть градация по уровню ответственности, как бы сказать, по твоей значимости для проекта. Кто-то пишет ядро, кто-то дописывает мелкую периферию. Со временем ты прокачиваешь квалификацию, берешь на себя всё больше и становишься главнее.

4) Тестировку делаем путем прошивки в макетный образец и проверки жизнеспособности прибора. Отдельных виртуальных тестов нет.

5) Никак, даже не знаю что это.
314 1511201
>>11185

>Используем гит и гитхаб


>"эй, Уася, пусти меня за комп, я твой код погляжу" со стороны старшего программиста.


Старшего программиста еще не обучили смотреть коммиты в гитхабе?
315 1511470
Аноны, я тут очередь пытаюсь реализовать очередь с проверкой опустошения/переполнения, в которую один поток будеть все "пушить", а пара других потоков - забирать.
https://pastebin.com/dnq12VpU
тут возможны не относящиеся к вопросу проебы - просьба не обращать внимания
Согласно документации, pthread_cond_signal отличается от pthread_cond_broadcast тем, что разблокирует at least один поток, висящий на pthread_cond_wait. Моя же логика предполагает, чтоб ровно отцеплялся exactly один поток. Как это сделать, суканахуйблджад?!?!!
316 1511477
bump
317 1511649
>>11470
Хм, у меня в glibc-doc написано:
> pthread_cond_signal restarts one of the threads that are waiting on the condition variable cond. If no threads are waiting on cond, nothing happens. If several threads are waiting on cond, exactly one is restarted, but it is not specified which.

А вообще, если не просто glibc, а какой-то POSIX-дроч, то я, честно говоря, нихуя не понял в твоём коде, хотя я немного нетрезв.
_add and _remove()...
Оба берут мьютекс. Я так понял, мьютексв структуре это типа объект для защиты структуры от конкурентного изменения, самый такой общий мьютех.
Ты в обеих функциях его берёшь, а внутри кидаешь сигналы по поводу признаков пустоты, полноты. В области, заблокированной этим мьютексом?
У тебя и ждёт, и кидает в этой области, но в ней может быть один, или че? Не поня...
pthread_mutex_lock(this->mutex); // Чтобы никто не вошёл...
if QUEUE_EMPTY(this) pthread_cond_wait(&this->empty, &this->mutex); // Жаль, что никто не кинет, потому что не войдёт?!
318 1511737
>>11649
pthread_cond_wait сама разблокирует мютекс и блокирует обратно. Если бы это делалось руками, не исключен случай, что как раз между pthread_mutex_unlock и pthread_cond_wait другой поток сделал бы pthread_mutex_lock и pthread_cond_signal.
image.png145 Кб, 1905x830
319 1511743
>>11649
Ну охуеть теперь. Короче, суммарно количество возвратов pthread_cond_wait равно количеству вызовов pthread_cond_signal, но в отдельный момент времени может перекосить. По ходу, надо оставлять такой запас до переполнения, сколько ядер процессора, и все будет ок. Главное, что эти фейлы не аккумулируются.
320 1511767
>>11743
Спасибо за пик, глаза успешно вытекли. Ну ты и мразь это просто пиздец
321 1511901
>>11767
Чем тебе зеленый не нравится?
322 1511990
>>11901
Своим глазкам такой же вопрос задай, шизло.
323 1512059
>>11470
Ладно, хуй с ним, сделаю проще...
https://pastebin.com/dTngp3zc
324 1512060
>>11990
Я просто к зеленому привык, потому что обычно на ЭЛТ сижу, а там желательно, чтоб только один канал горел из RGB при отображении высокодетализированной монохромной графики (несведение).
325 1512063
>>12060
Ты случайно православный компилятор на кирилице не пишешь?
326 1512070
>>12063
Нет, я просто очередная тупая вниманиеблядь.
327 1512087
Посоветуйте IDE на Убунту
328 1512095
>>12087
Pycharm
329 1512128
>>12087
CLion
QtCreator
VSCode с плагинами
330 1512132
Что нужно знать, чтобы работу на сях найти?
331 1512139
>>12132
В схемотехнике, основах цифровой и радио электронике, микроконтроллерах понимать
332 1512141
>>12139

>электронике


электроники
333 1512151
>>12132
Ну или линупс кернелл.
334 1512163
>>12151
Работа линукс систем кернел анус девелопером имеется вообще или это только для бородатой илиты?
335 1512210
>>12063
удобства макросами делаю, но без извращений
>>12070
ой, иди нахуй, няш
336 1512282
>>12163
Сейчас продвигается импортозамещение, в ближайшие 1.5-2 года появится пара контор(одна, кстати, уже собирается внутри Я), занимающихся православным линуксом для государства, присасывайся и получай лидерские должности пока не поздно.
337 1512560
Драсте. Как мне получить строку, в случайных местах разделенную пробелами и символами переноса строки? Символ окончания eof
338 1512562
>>12560
char* str = "aaaa bbb\nccc";
339 1512563
>>12562
Всмысле считать с консоли. Стандатрный ввод
340 1512567
>>12560
int len = 0;
while ((c = getchar()) != EOF) mybuffer[len++] = c;
mybuffer[len] = '\0';
341 1512571
>>12567
Спасибо. Завтра попробую
342 1512631
>>12560
Я тебе там в плюсовом треде писал.
Ты делаешь тестовое для собеседования, что ли?
343 1512701
>>12631
Олимпиаду пишу))) Она какая то нереальная. Там одно из заданий узнать какой текст в картинке зашифрован. Мне даже в асм треде не смогли помочь
344 1512707
>>12701
Очень похожа просто формулировка на тестовое в одну из контор в моем городе.

Там просто "найдите текст" и никаких подсказок?
Мусорные биты паддинга смотрел?
345 1512713
>>12707
Найти текст это просто подготовка. Основное задание дальше. Второй вопрос не понял
346 1512721
printf пробелами что ли разделяет вывод?
изображение.png88 Кб, 1366x768
347 1512725
https://pastebin.com/sN47qWmv

Почему вывод такой странный?
348 1512852
Объясните дауну, почему когда я инициализирую массив

float array[10] = {};

И потом заполняю его

array[0]=5;
array[1]=34;
array[2]=79;

Он заполняет оставшиеся пустые элементы последним записанным значением,то есть вот так

{5, 34, 79, 79, 79, 79, 79, 79, 79, 79}
349 1512867
>>12852
Юзай memset и почитай ещё про указатели
350 1513110
>>00890 (OP)
Доброго всем дня, есть вопрос - нужно будет учить Ардуино и учить на нем писать малолетних дебичей. Ранее освоил такое недоразумение, как RobotC для Ev3. Какие гайды посоветуете курить?
351 1513156
>>12852

> почему когда я инициализирую массив


> float array[10] = {};


Он заполняется нулями.

> Он заполняет оставшиеся пустые элементы последним записанным значением


Это не он, это ты. Ищи у себя баг при выводе, например.
352 1513254
>>13110

>Какие гайды посоветуете курить?


Пердуино для Чайников, тысячи их
353 1513258
>>13254

>Пердуино для Чайников


все настолько просто?
354 1513262
>>13258
Только не говори, что ты пробовал подбирать литературу
1572910219183.jpg64 Кб, 500x449
355 1513484
Ну что, пердолики? Всё пердолитесь? Консолечкой в срачельничек балуетесь?
356 1513488
>>13484
Конпеляция завершена, подожди гноме поставлю отпишу
357 1513537
>>13258
У тупых всегда всё просто, потому что ничего не делают.
358 1513724
>>00890 (OP)
Так чё, как сконпелировать шланг на XP без пердолинга? Хуле cygwin 40 гигов на диске сожрал? Мне ж под прон уже не осталось.
359 1513729
Жизнь заставила ознакомится с С, после одноги из смузихлёбных языков. Оказывается у C вполне современный синтаксис, который позволяет делать вещи типа
int z = 10;
while ((c = getchar()) != EOF ) {};
В связи с этим два вопроса
Почему считатеся что у C доисторический ситнаксис? И когда уберут семиколонс вконце строки?
360 1513735
>>13729
Без семиколона будет питухон.
361 1513756
>>13729
Хуй знает что за смузихлебный язык был до, если ты в С видишь современный синтаксис, лол.
362 1513774
>>13729

>И когда уберут семиколонс вконце строки?


Он не в конце строки.
363 1513808
>>00890 (OP)
Нужна библиотека MPI, что-то не могу найти её в MinGW, кто-нибудь знает где её можно взять?
364 1513863
>>13735
Ну так ни го ни свифт питухоном не назовёшь.
365 1513867
>>13808
use mpicc instead of gcc
366 1513880
>>13863
Не знаю что там в го и свифте, но в конпеляторах сишки по семиколонам шаги лексического анализатора завязаны
367 1513890
>>13880
Вот это я понимаю отмазка.
368 1513912
>>13890
Ахуеть ну вон в питухоне лексический анализ по эскейпам и табуляции, тебе в любом случае придется чем-то эти семиколоны заменить
369 1513914
>>13912
Зачем их заменять, если просто можно добавить вариант с \n, оставив семиколон для однострочных высреров и обратной совместимости, поехавший? При чём тут табуляции? Про фигурные скобри речи не шло.
370 1513963
>>13735
Да зачем я вообще учил этот питон? Думал что пригодится для нейронок, лучше бы заместо учил бы Си и сейчас бы не сидел над ним.
sage 371 1513985
>>13914
int a = foo()
+ bar()
+ baz();
Давай, добавь сюда \n, оставив ; для обратной совместимости. Школьник не знает, сколько крови ASI (automatic semicolon insertion) выпило людям в жс.
372 1514025
>>13985

>Школьник не знает, сколько крови ASI (automatic semicolon insertion) выпило людям в жс.


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

https://ideone.com/sdmom6 — сложна
373 1514027
>>13729

>И когда уберут семиколонс вконце строки?


В твоем примере он не нужен, ну или {} не нужны если оставишь ; Не уберут никогда, это разделитель, поскольку стилистику как в питухоне никто не навязываешь, можешь все одной строкой перемогать.
374 1514029
>>14025

>о приоритетах операторов


Кокие на хуй приоритеты, препроцесор заменяет новую строку, табы и прочую залупу на пробел и все. Че там ЖС макакам не нравится, не понимаю.
375 1514046
>>14029

>Кокие на хуй приоритеты


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

>ебучий додик даже не в курсе как парсятся выражения



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


Ну так даже лучше, меньше еботы лексеру, лол. Перейди по ссылочке, потыкай алгоритм, ахуеешь, до чего технологии дошли.
376 1514050
>>14025
Твой пример по ссылке наглядно показывает почему точки с запятой нужны - глазам проще отделять стейтменты от форматирования
Их отсутствие это понты ради понтов
377 1514054
>>14050

>глазам проще отделять стейтменты от форматирования


В ванлайнерах — да.
В нормальном коде — нет, это рудимент, примерно как хвост у людей, лол.
sage 378 1514081
>>14025

> распарсит тебе это говно


Ты рано начал о компиляторах думать, сам сначала распарси. Это одно выражение или три отдельных?
379 1514095
>>14046

>потыкай алгоритм


Мамку твою потыкал,

>меньше еботы лексеру


Твой лексер здесь нахуй нинужон
380 1514103
>>14095

>Мамку твою потыкал,


Деда твоего потыкал.

>Твой лексер здесь нахуй нинужон


В функции main() все пиши, как gnuтые диды зовещале.

>>14081

>Ты рано начал о компиляторах думать


Ну ты о них вообще не думаешь, просто хуйню срёшь, не понимая о чём срёшь.

> Это одно выражение или три отдельных?


Это одно бинарное выражение с ещё одним вложенным бинарным выражением.
sage 381 1514127
>>14103

> Это одно бинарное выражение с ещё одним вложенным бинарным выражением


Так вот это три отдельных выражения: перед вызовами bar() и baz() стоит унарный плюс, мне так захотелось. Только наличие или отсутствие точки с запятой отличает
a() + b() + c() от a(); +b(); +c(); Если в Си притащить \n как разделитель, подобные неоднозначности полезут отовсюду. Или это будет уже другой язык с другим синтаксисом, не совместимый с существующим кодом, такой Си никому не нужен. А теперь иди нахуй. Если нравится питон - пиши на питоне, в обратную сторону совместимость с ; как раз отлично работает.
382 1514141
>>14127

>это три отдельных выражения


>мне так захотелось


>подобные неоднозначности полезут отовсюду


Дружочек, ты хоть сам-то понимаешь, как ты только что жидко сиранул себе в штаны?
383 1514145
>>14127

>Если в Си притащить \n как разделитель


>А теперь иди нахуй


Падажи, дай я его еще абасу
384 1514146
>>13729

>семиколонс вконце строки


трагически погибни
sage 385 1514149
>>14141
Мы разговариваем не о том, как сейчас, а о том, что было бы, если бы выражения разделялись еще и \n. Ты правда настолько тупой?
386 1514150
>>00890 (OP)
Мне кажется тут у нас школохрюн завелся, который постоянно всплывает с ахуительными предложениями
387 1514151
>>14149
Да нет, ты просто тупой долбоёб который даже не представляет как работает парсер, и воюет с мельницами.
sage 388 1514153
>>14151
Да мне похуй, как работает твой вымышленный парсер, он уже обосрался.
389 1514155
390 1514159
>>14153
На чём? На том, что в твоёи манямирке парсеры не могут посмотреть следующий символ? У тебя вся аргументация уровня "мни так зохотилось", не понимаю, почему ты продолжаешь срать.
sage 391 1514189
>>14159
Парсер может. Но текущая грамматика Си позволяет мне использовать унарные операторы, и это означает, что твой парсер сломает существующий код в любом случае, потому что в существующем коде могут встретиться оба варианта: и строки с унарными операторами, и выражения с бинарными операторами, разбитые на несколько строк. Не нравится пример с унарным плюсом? Он слишком надуманный, хотя и может быть сгенерирован каким-нибудь макросом? Вот тебе другой код:
void foo(int x) {
if (x)
return
bar(x);
}
Ты притащил \n в дополнение к точке с запятой, твой компилятор видит этот код. Дальше что? Когда вызывать bar(): при ненулевом x или наоборот при нулевом? Опять-таки, ты можешь как угодно определить новую грамматику, новый парсер, но в одном из двух вариантов ты сломаешь существующий код, а

> не совместимый с существующим кодом, такой Си никому не нужен

392 1514198
>>14189
Подожди, сейчас этот необучаемый кукарекнет, что нехуй так писать. После всего вышенасранного ты все еще надеешься, что это шизло поймет абстракцию и предположит на месте bar какой-то длинное выражение? Анончики, давайте дружно не будем кормить залетного гормона стресса.
393 1514208
>>14189
Поделись лучше лайфхаком, как в VIM одним чихом делать красивые колоночки бэкслешей справа (многострочные дефайны).
выстрел на удачу - вдруг сталкивался
394 1514220
>>14189
О, наконец-то ты нормальный пример притащил! Через 2 часа срачей.

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


Есть ещё третий вариант, который ты пропустил: добавить ещё один этап компиляции (читай — промежуточное представление), в котором уже будут выведены все типы и можно будет резолвить подобные конфликты. Так, собственно, работают все языки с полноценным выводом типов (где они выводятся даже на уровне аргументов функций) и кучей синтаксического сахара (окамл, скала, хаскелл итд). Для избавления от ; это дохуя оверкилл, но если думать о другом сахаре — заебись идея, имхо. Как плюсы, но без кучи говна.
14215760931735433985.png461 Кб, 598x544
395 1514221
>>14198
Найс додик загорелся и горит.
396 1514255
>>14220
#include<strio.h>

int mian*() {

prntf("Hllo Wolrd!);
}
397 1514551
Посоны, как в Linux узнать, сколько реальных процессоров? sysconf(_SC_NPROCESSORS_ONLN) считает виртуальные...
image.png22 Кб, 488x267
398 1514578
>>14551
ебал всех в рот, пусть прога как человек смотрит
400 1514632
>>14551
что значит реальные и виртуальные процессы?
401 1514634
>>14632
Думаю, он имел в виду под реальными число физ. ядер, а под виртуальными SMT или что-нибудь ещё...
image.jpg2,2 Мб, 4032x3024
Хелп 402 1514668
Есть лаба по сишнику, в stm32f769 записать программу на атолике, чтобы по нажатию поочередно включились светодиоды
403 1514762
>>14668
Круто, я ток с F1XX работал!
404 1514775
>>14668
1. Генерируешь проект в КУБЕ.

2. Берешь и мигаешь.

GPIOA->BSRR |= GPIO_BSRR_BS1;
GPIOA->BSRR |= GPIO_BSRR_BR1;
405 1514909
>>14668
хорошо, удачи
406 1514956
>>14630
Гиперпоточность Intel всего лишь позволяют делать вдвое меньше медленных переключений контекста между сотнями процессов ОС - каждое ядро без задержек крутит барабан между двумя потоками, отдавая им по полмощности. Я же распараллеливаю не ради логики, а ради производительности, и при кол-ве потоков равном числу физ.ядер уже выжимаю всю мощь, а дальше только проигрываю из-за мютексов-хуютексов. В теории возможны неточности, но я затестил, и все подтвердилось.
>>14632
процессОРЫ
407 1514957
>>14634
Ядра же не делятся на труъ и не-труъ. Просто каждое труъ-ядро может косплеить два не-труъ-ядра.
408 1514961
>>14630
Ой, я не сразу толком воспринял твой ответ. Пересмотрел ссылку и увидел про libcpuid. Спасибо, анон.
409 1514963
>>13110

>Ардуино


Туда ли ты зашёл? Тебе в С++ тред(или в /ra/).
410 1514991
>>14963
Так это библиотека си-подобная, потому и завернул уточнить.
411 1514993
>>14963
Но за подсказку где искать больше инфы спасибо, пополыл в тред по пердуино в ра.
412 1515180
посогитк разобраться с атрибутом const
Есть функция
void copy(char to[], char from[]) {
int i;
i = 0;
while ((to = from) != '\0') {
i = i + 1;
}
}
IDE говорит
Pointer parameter 'from' can be pointer to const. Щито это такое то, я думал это только в С++ есть
413 1515181
>>15180
Сделай to = from
Объяснять про что говорит иде думаю тебе бессмыслено.
414 1515183
>>15181
там

> while (( to[ i ] = from [ i ] ) != '\0')


тоже фигня какая то, что именно тестируется?
415 1515210
>>15183
А, это абу скобки съел.
Вощем переименуй файл из .cpp в .c чтобы иде знал что это си, или сделай != 0
Тестируется окончание строки нулем.
416 1515216
>>15180
Если ты сделаешь copy("yoba", "peka") твоя программа упадёт потому что йоба это константа даже если язык считает что это char*
417 1515230
>>15216

>даже если язык считает что это char*


Что значит "даже если считает", константа и есть char★, только эта память рид-оунли, писать нельзя. Просто компилятор не отлавливает этот момент, поэтому программа падает не на этапе компиляции, а во время работы в момент неправильного обращения к памяти.
418 1515241
>>15230
Сам тип не обязательно константа
char yoba[] = "sdsadsd";
char* peka = yoba;
419 1515358
>>15216
Не вкатил
420 1515377
Зачем нужна ридонли память? Для констант? Зачем?
421 1515378
>>15377
Для безопасости
422 1515394
>>14957
Как таковые отдельные - да, но если одно не-труъ загружено, то некоторые >>14956 не хотят использовать ещё одно не-труъ.
>>14956
Ты точно туда ответил?

> В теории возможны неточности


Это точно.
>>14961
Есть либкпуид, а зачем тебе он?
Там есть ответ с inline assembly, инструкцией CPUID, угу... В теории, самый быстрый способ
423 1515395
>>15377
Ты бы лучше спросил, зачем нужна исполняемая.
Для безопасности W^X
424 1515413
Как правильно сделать дебаг в крестах/сишке? Хочу что-то типа такого

#define debug_enabled 0
void debug(char line[]) {
if (debug_enabled) {
std::cout << line << std::endl;
}
}

gcc -Ddebug_enabled=1 main.cpp
425 1515418
>>15413
Ну я лично делаю так:
В коде #ifdef _DEBUG
/ Debugging code*
#endif
gcc -D_DEBUG
А если и нет дебага, то не дефайню.
Зачем тебе значения типа true, false?
Да и у тебя какая-то лишняя проверка происходит.
426 1515421
>>15418
Потому что лень постоянно писать

#ifdef _DEBUG
/ Debugging code*
#endif
427 1515441
как сделать так чтобы программа скомпилилась, запустилась и прочитала файл?
428 1515644
>>10605
поставил cygwin для XP, и даже получилось вроде сбилдить что-то 64-битное. Запускал компиляцию так: "make CC=gcc"
Не подскажешь как x86 версию exe-шника получить? Ну, чтобы win32 exe это было.
Насколько я помню, gcc компилирует одиночный .c файл в win32.exe так:

>gcc -m32 source.c -o destination.exe

sage 429 1515705
>>15418
Зачем тебе префикс? Подчеркивания перед именами зарезервированы для компилятора. Просто -DDEBUG и внутри:
#ifdef DEBUG
...
#else
// Не забываем.
#define NDEBUG
#endif

>>15413
Излишнее доверие к оптимизатору до добра не доводит. Лучше код физически препроцессором выкинуть.
430 1515709
>>15705

> Подчеркивания перед именами зарезервированы для компилятора


Точно только для него?
Сам видел, вроде, либы, где подчёркивания юзались, не двойные, канеш, но одинарные точно.
А здесь вообще незачем, агась, заглючил.
sage 431 1515755
>>15709

> Точно только для него?


Ну для стандарта и его реализации: имена __name (два подчеркивания) или _Name (подчеркивание и символ в верхнем регистре) зарезервированы для любых применений, _name (одно подчеркивание) - для глобальных переменных и функций. У тебя макрос, поэтому он подпадает под первый вариант.

> Сам видел, вроде, либы, где подчёркивания юзались


Да, многие пишут. Особенно если это #ifndef _XXX_H_ #define _XXX_H_. И это даже скорее всего никогда не приведет к каким-либо проблемам, но делать так все равно не стоит.
image.png73 Кб, 752x494
432 1515766
Сишники мои любимые, я искренне верю, что вы самые умные! Расскажите мне, СУКАНАХУЙБЛЯДЬ, что имели ввиду авторы introduction to algorithms - гниды ебаные???? Чьей матери за щеку они собрались присваивать z.p.p???????? В моем воображении ветка //case1 прекрасно фиксит RB-шность, вот только последняя строчка там в хуй не уперлась. Короче, жопа дымится, стены текут, не оставьте в беде, прошу, молю, благаю...
433 1515767
>>15766
аргумент z - это типа указатель на только что добавленный узел, есичо
434 1515769
>>15766
Ой блядь, я тупой, там же z.p.p.p может тоже красным оказаться, и тогда хуй ты z.p.p перекрасишь. Но что ИМЕННО делает это присваивание?????????? Сука, как же я ору с псевдокода, призванного быть читаемым, а на деле еще более всратым, чем университетские лабы на асме.
435 1515770
Ладно, посмотрю, как они всю эту хуету разжевывают дальше. Чувствую себя ебаным кретином. Эх, вот бы дедушка Кнут никогда не старел и пилил актуальную годноту...
436 1515772
БЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯДЬ!!!!!!!!!!!!!!!!!!!! Я ЗАЕБАЛСЯ ЧИТАТЬ ЭТО ГОВНИЩЕ ЛЮТОЕ!!!!!!!!!!!!! Дохуиллион страниц разжевывания очевидного и нихуя не понятно, что таки имелось ввиду. Пидарасы, блядь, унтерменши, кто такую хуету пишет. Как будто языком не владеют или читателя-дауна троллить пытаются. Объективное говно. НОЛЬ оправданий в пользу такого слога, НОЛЬ БЛЯДЬ!!!!!! Посоветуйте что-то такое же комплексное, но нормальное, пазязя...
437 1515852
>>15241
Ну я примерно то же и сказал. Защита памяти вообще к типам не относится, то есть к языку программирования генерирующему код. const это лишь декоратор, пометка компилятору вывалить ошибку для удобства программиста. То есть, указатель это просто указатель, ему всё равно на какую память указывать.
438 1515872
имхо бинарные деревья это год мод. В реале и тебе и мне еще рано такое читать. попрогай немного для себя, освойся, составь для себя какой либо путь развития. Думаю что в этой книге описан сам концепт, на детали в таких кладут болт
439 1515939
>>15872
Просто я тем самым трахнул себя в жопу, когда вернулся к CLRS после недавней мысли "больше не прикоснусь". Лучше таки читать Кнута и немножко страдать от неактуальности среды, чем читать CLRS и множко страдать от общей всратости.
440 1516128
>>15772
ты просто тупой как пряничек, не грусти - оно придет, но не сразу
441 1516184
>>16128
Да я понимаю, что если чаще и больше читать, то мозг придрочится читать разные несовершенные тексты и без переедания кала извлекать норм инфу, но я ебал. Книги пишутся для всех, а не для неравномерно преуспевшего меня, но что-то к Кнуту у меня не возникает жалоб "тут пережевано, тут недожевано", по-честному все. Рассказывает, как умному человеку, и действительно врубается режим умного и все схватывающего человека. + задачки интересные.
442 1516187
>>16128
Я считаю, что когда что-то непонятно, для мыслящего человека естественнее остановиться и подумать, а не ускоряться в поисках подробных объяснений дальше по тексту, и хороша книга должна способствовать поощрять именно первый вариант, а то какое-то макаковоспитательство выходит...
443 1516297
Чё как. Нужно размерчик проги немного поджать. Уже переопределил все инты в int8_t, посредством этого сбросил около 4кб. Надо еще хотя бы 2кб ужать. Варианты?
444 1516357
>>16297
Системколы переопредели напрямую в макросы, а обертки выкинь
445 1516411
>>16297
перепиши на asm
446 1516635
>>16411
Прога представляет из себя мешанину из циклов и условий, думаю заебусь с асмом.
>>16357
Что есть системколлы?
447 1516680
>>16635

>мешанину из циклов и условий


Да нехуй делать. Никто не запрещает ставить локальные метки (с точкой) и отхреначивать логические блоки табами. В конце концов, можно попросить сишный конпелятор выплюнуть .asm и оптимизировать на свое усмотрение. Говорят, человек в теории до сих пор может вдвое лучше, чем -O3. Я понимаю, что тебе вес скинуть, а не ускорить, но с потанцевалом доминирования живых мозгов над алгоритмом все аналогично.
448 1516745
>>16297
Выкинуть библиотеки, написать нужное вручную.
449 1516746
>>16297
Откатить компилятор на старую версию.
450 1516776
Сап, есть задача выполнить bash команду с помощью exec и все буквы в результате работы проги заменить на заглавные. Я написал её с пайпами, а теперь нужно с shared memory (shmget, mmap)
https://pastebin.com/ndz3tH5m
451 1516798
Чем компилять на убунте, сс, gcc, или clang???
452 1516801
>>16798
а как на clang сделать .o файл?
453 1516802
какая разница между a.out и mylib.o?
454 1516813
>>16798
cc это шорткат для gcc.
>>16802
Исполняемый файл и объектный файл.
455 1516827
Анон, N тредов назад советовавший мне прикрутить к своему архиватору алгоритм Бабушкина, ты содомит блядь. Я только сейчас загуглил и начал проигрывать.
456 1516999
>>16827
В голос с вас, шутников.
457 1517113
Зачем постоянно увеличивают разрядность памяти?
458 1517127
>>16827
Из-за тебя дурака потратил час времени на выяснения кто такой Бабушкин и чем прославлен
459 1517136
>>16999
>>16827
>>17127
Пиздос, может вы еще ОС Попова или РусОС Горлова не знаете?
>>17113
Что бы больше влазилов всякого
460 1517225
>>04293
Сети, мультимедиа, виртуализация, ядро Торвальдса. С чего ты взял, что работы нет?
461 1517227
>>17113
Закон Мура. Могли бы - еще в 1970-м бы 128 разрядов сделали бы. Я в этом не шарю, но скорее всего это просто какой-то стандартный процесс на заводе, где все эти транзисторы уменьшают: столько-то месяцев на прототип, столько-то на испытания, столько-то на налаживание серии и т.д. и т.п. А каждый x2-шаг физически осуществим только с применением достижений предыдущего, то есть не могут они взять и в за один прекрасный полуторагодичный период x4 уменьшение ебануть. Брайан Керниган что-то подобное говорил про формирование конпелятора Сишечки, вроде "using sharp tool to make a sharper tool".
462 1517286
>>16297
libc активно используешь? Перепиши нужный функционал из либ, остальное выбрасывай.

Вот например обертка над сисколлом write:

static int write(int fd, const void* buf, unsigned int size) {
long result;
__asm__ __volatile__(
"syscall"
: "=a"(result)
: "0"(__NR_write), "D"(fd), "S"(buf), "d"(size)
: "cc", "rcx", "r11", "memory");
return result;
}
463 1517289
>>17286
Ну и про сборке не забывай:
-nostdlib -ffreestanding
464 1517304
>>16297
-Oz пробовал?
465 1517536
>>17227
Да какой закон Мура, разрядность выбирается в зависимости от размера типичных данных, которые должна дробить машина.
Разрядность МК в мире встраиваемых так и выбирают.
64-бита хватит всем, ето точно. Больших объёмов памяти нет, большего кол-ва пикселей на дисплеях нет, для цветовых палитр больше не нужно.
Ну и всякие ОС-ядерные переменные влезают.
466 1517550
Минуточку. Но ведь ничего не мешает на пентиум 2 объявить, что адреса её памяти теперь 64 разрядные. Биты в памяти одинаковые везде
467 1517568
>>17550
У них регистры 32 разрядные, не умеют оперировать 64 разрядными числами. Адрес это как бы число.
468 1517587
>>17568
то есть единственное что делает увеличение этого числа, это возможно засовывать больший объём памяти в комплютер?
469 1517593
>>17587
Памяти можно насовать, но останется ограничение на один процесс.
470 1517603
>>17550
Еще до него сделали:
https://ru.wikipedia.org/wiki/PAE
471 1517635
>>17587
хех
а это как раз псевдопрогресс как есть
еще создатель тоталкоммандер, к примеру, много лет назад расстраивался по тому поводу, что его сначала заставили переписать прогу на юникод (а до этого она спокойно использовала расширенные кодовые страницы для азиатских языков для обеспечения локализации), а потом заставили и сделать 64разрядную версию программы
он говорил, что это потребовало большого объема работы, но, по при это не добавив ни одной функциональной возможности
472 1517638
>>17536
Пожалуй. Просто анон подразумевал, зачем шли 16--32--64, почему сразу норм не сделали.
473 1517795
>>17635

>а это как раз псевдопрогресс как есть


Сегодня по твоему компутеры на том же уровне что и 20 лет назад?

>что его сначала заставили переписать прогу на юникод


Кто заставил-то? Он сам придумал велосипед и решил потом его переписать, кекус.

> а потом заставили и сделать 64разрядную версию программы


Заставили переписать говнокод с интами вместо size_t? Научили не говнокодить, всё правильно, лол.

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


Ну так не будь там говнокода с велосипедами, и не надо было бы и переписывать. Он сам себе работу лишнюю создал.
474 1517922
Что за хуйня, оказывается память для всех блоков выделяется снизу вверх по коду? Почему так, в стеке же чем раньше вызвать что-то, тем раньше выделится место под это. Как это работает?
475 1517930
>>17922
У тебя мб васянокомпилятор какой-то, который ищет _main и потом все что сверху читает
476 1517932
>>17930
Хз, я обычным gcc компилю. Типо gcc file.c -o file.exe
477 1517934
>>17932
В препроцессоре также в самом конце написано, Местами не меняется.
478 1517939
>>17922
что делает putchar у тебя?
479 1517942
>>17939
Просто выводит символ новой строки в консоль. Можно и printf("\n"); написать.
480 1517954
>>17795
расширенные кодовые наборы были как в ядре майрософт, так и в различных реализациях линукса
они справлялись со своей задачей
юникод был следующим шагом, унификацией
но, повторюсь, с точки зрения конечного функционала без разницы как оно внутри работает
а программистам, тем не менее, приходится тратить уйму времени на переделку того что и так работает
sage 481 1517997
>>17922

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


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

>>17954

> они справлялись со своей задачей


Нахуй пошел. У тебя в имени файла русские и французские символы - ты сосешь. У двух приложений разная ACP - ты сосешь при копировании данных. Вот это "не кладите компиляторы в директории с русскими буквами" пошло именно с тех времен, когда приложения сидели на всевозможных cp12151 вместо юникода. В своем тотал коммандере ты бы не смог на русской винде посмотреть аниму. Да даже выбрать аниму не смог бы - у тебя все тайтлы назывались бы "????? ???? ???" и "????-??? ?? ?????!". И удалить ее ты, кстати, тоже не смог бы. Ну нету у тебя на компьютере директории D:\Anime\????? ???? ???, нету!

> с точки зрения конечного функционала без разницы как оно внутри работает


Ну короч ты такой берешь сейчас приложение, написанное, ну например, на Visual Basic 6 (тот еще зверь: Unicode внутри, ACP снаружи), запускаешь в своей десяточке и копируешь из этого приложения русский текст. Что такое? Копируются вопросики? Как же так? Так это все потому, что ты у мамы программист, и у тебя по умолчанию английская раскладка клавиатуры. И ты меняшь раскладку на русскую, снова копируешь, и... все копируется! И других вариантов решения проблемы не было. Так вот и жили.
482 1518100
>>17954
То, что это было в ядре швиндовса явно не указывает на то, что это хорошая практика. Там ещё баги прошлых версий ради обратной совместимости эмулируют, это по твоему хорошая практика?

Но мне больше понравилась предъява за 64 бита. Таких макак до си допускать нельзя, пусть раст сидит дрочит, если даже не знает какими типами индексироваться нужно, лол.
483 1518124
>>17635

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


Какая же там была говноархитектура
484 1518126
>>18100

>Там ещё баги прошлых версий ради обратной совместимости эмулируют, это по твоему хорошая практика?


Это та самая причина, почему винда всегда будет на всех десктопах.
sage 485 1518204
>>18126
В 10 очень много всего сломали. Вангую, что через несколько лет нативную поддержку 32-битных систем дропнут (как во многих линуксах и маках), и винду можно будет окончательно закапывать.
486 1518224
Анончики, кто-то что-то пишет интересное? Выкладывает на github? Скучно пиздос, я б почитал...
487 1518233
>>18204
Когда 32 дропнули даже на хипсторских маках — весь интернет засрали так, что воняет пол года спустя. Ты хоть представляешь, что будет, если сделать так с этой залупой, живущей ынтерпрайзом...
488 1518305
>>17997
ты хорошо написал, я все это вспомнил, все эти проблемы были и у меня в начале нулевых
но нехорошо посылать незнакомого человека
вот
489 1518306
>>18100

>64 бита


не нужно
vs до сих пор 32 бита и нормуль
490 1518307
>>18124
не знаю, исходники закрыты
но он долгое время писал tc используя delphi 3й версии и не хотел переходить на старшие версии
говорил что только лишняя работа по переносу кодовой базы, опять же которая никак не скажется на функциональности приложения, но потребует много трудовых человеко-часов
491 1518318
Анончик, аллоцировал с mmap память под строку, хочу направить поток stdout в неё. В англоязычных интернетах нашёл только связку freopen("/dev/null", "a", stdout);
setbuf(stdout, memory);
Но она вроде как не работает, что делать?
492 1518335
>>18318

>поток stdout в неё.


Создай файловый дескриптор и пиши в него
493 1518336
>>18306
Лаунчер разве что, это же дотнет параша.
494 1518363
Может кто-нибудь расскажет мне, почему FORTRAN такая хуита? Кому он нужен был вообще со всеми ограничениями?
495 1518372
>>18363
Он и сейчас нужен: физикам диффуры и урматы считать всякие, прогерам нахуй не нужен
sage 496 1518379
>>18318
Судя по

> /dev/null


тебе отлично зайдет готовая fmemopen().
497 1518401
>>18372
Вряд ли современные ученые учат языки программирования, максимум питон, а в основном сидят в матлабе наверное или в кастомных прожках написанных программистами.
1.jpg20 Кб, 600x315
498 1518402
>>18401

>современные ученые

500 1518428
>>00973

><libxxx.h>


Это когда внутренняя (стандартная) библиотека компилятора, например iostrem или stdint.

> "libxxx.h"


Это уже подключаемая пользовательская библиотека(с гитхаба), находящаяся в одной папке с файлом main.c.
501 1518452
>>18428
А можно же положить в папку с main.c libxxx.o и в файл main.c сделать include 'libxxx.h' ?
502 1518497
>>18379
Мне нужно обязательно mmap() использовать, это можно как-то совместить?
503 1518504
>>18335
Для mmap() я использую smh_open, который возвращает дескриптор. Я пробовал dup2 с ним, но не сработало
504 1518572
Почему не работает этот гениальный код?
https://pastebin.com/DnSaquUk
Как создать массив внутри отдельной функции и отдать его?
505 1518626
>>18572
гугли про стек и кучу
M A L L O C
A
L
L
O
C
507 1519157
>>18403

>дед 60 лет


>лисп


Я говорил про современных ученых. А старики понятно учили языки, ведь тогда компьютеры были такими, по другому ими и не могли воспользоваться, но сейчас ситуация обратная, скрипты решают даже в программировании, а ученые, напоминаю, даже не программисты.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 16 ноября 2019 года.

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

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