Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 686 96 136
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному /clang/ Аноним 18/07/23 Втр 04:34:09 2770768 1
clang.png 96Кб, 792x1023
792x1023
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

- 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 (драфт)
- 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 помогает читать сложные сишные декларации.
Прошлый: >>2713428 (OP)

как же вы заебали Edition
Аноним 18/07/23 Втр 14:42:00 2771440 2
ну и кто из вас придумал * использвать одновременно для разыменовывания и объявления указателя? признавайтесь, уроды
Аноним 18/07/23 Втр 17:31:28 2771808 3
>>2771440
Это не продолжение ли предыдущего треда с умопомрачительными примерами работы со строками в циклах с очень неожиданными итераторами? Лучше бы на двачах звёздочка без проблем ставилась. Вот уж где зашквар. Здесь же айтишники одни сидят. А то приходится вот это - ★ ставить... Или я чего-то не знаю? )
Аноним 18/07/23 Втр 17:40:26 2771825 4
Я вот до поры до времени не знал, что это -
int★ value, value; // - указатель и экземпляр, а не 2 указателя...
Вот это действительно подлянка. Потому что в куче примеров по инету пишут как попало. После этого стал писать звезду рядом с именем всегда, чтобы визуально отражало сущность творимого.
int ★xlink, x = 5; xlink = &x;
Аноним 18/07/23 Втр 21:55:40 2772140 5
Блять какой же странный язык без готовых библиотек и функций как в питоне. Вот например ввод пользователя - откуда блять из головы у меня должно вылезти fgets stdin.
Аноним 19/07/23 Срд 00:15:21 2772333 6
>>2772140
Учебник тебе должен про обвязку рассказать. Это вроде POSIX. Терминал, ну. Есть ещё stderr для всякого дебага, чтобы вывод не засорять, потому как обычно его по конвейеру дальше часто передают, другим утилитам.
Аноним 19/07/23 Срд 01:49:36 2772363 7
>>2772140
Так его делали чтобы ядра операционок писать, там изначально нужна была работа со структурами и жонглирование указателями.
Аноним 19/07/23 Срд 03:39:11 2772380 8
>>2772363
В первых версиях структур не было. А когда они появились, то поля были общими. Именно поэтому у структур в UNIX часто встречается префикс связанный с ее именем. Зато не нужны были union, ведь если ты определил поле A первым в структуре, то теперь оно будет во всех структурах помещается автоматически на offset:0
Аноним 19/07/23 Срд 22:46:39 2773959 9
Вот есть у меня цепочка функций, по большинству передается const state указатель. В одной из функций беру неконстантный указатель на поле стейта через каст (очень нужен кусочек памяти, а он там есть свободный). Чем это чревато?
Аноним 20/07/23 Чтв 09:10:19 2774280 10
>>2772140
>откуда блять из головы у меня должно вылезти fgets stdin
Это стандартая библиотека C (stdlib). Соответственно, читай доки к stdlib. Например:
https://www.tutorialspoint.com/c_standard_library/c_standard_library_quick_guide.htm

Помог анону — задай вопрос сам:

Допустим, есть у меня функция send_char(char c), которая отправляет символ в UART. Как к ней прикрутить какую-нибудь printf-подобную функцию, чтобы удобно печатать всякие строки с форматированием?

Знаю, что можно malloc'ом выделить память, напечатать в неё через sprintf(), а потом побайтово отправить результат, но есть ли варик как-нибудь обойтись без промежуточного выделения памяти (и без ломания stdout, а то я видел, как народ в нём что-то переопределяет с этой целью)?
Аноним 20/07/23 Чтв 10:16:21 2774353 11
>>2774280
fprintf(ТВОЙ_ФАЙЛ, ТВОЯ_ХУЙНЯ, ТВОЯ_ХУЙНЯ_РАЗМЕР);
Аноним 20/07/23 Чтв 10:19:32 2774354 12
>>2774353
>ТВОЯ_ХУЙНЯ_РАЗМЕР
А это же принтф, тогда без него.
Аноним 20/07/23 Чтв 10:28:34 2774369 13
>>2774354
Спасибо, анон. А как превратить send_char(char c) в ТВОЙ_ФАЙЛ? Наверное, это ключевой вопрос.
Аноним 20/07/23 Чтв 11:20:02 2774456 14
Аноним 20/07/23 Чтв 11:46:30 2774504 15
>>2774456
Мне это надо не на Линуксе, то есть работать через /dev/tty* в моём случае не варик. У меня код работает на голом железе, а send_char — функция, которая пишет прямиком в регистры.
Аноним 20/07/23 Чтв 12:33:29 2774597 16
Вот здесь пример, как чел берёт stdout и переопределяет внутри него указатель на функцию (put)(), чтобы печатать в UART AVR'овского микроконтроллера. https://wiki.loliot.net/docs/mcu/avr/avr-printf/ Наверное, надо как-нибудь его адаптировать для работы с произвольным FILE и скармливать его fprintf'у
Аноним 20/07/23 Чтв 12:42:28 2774604 17
глупый вопрос Аноним 20/07/23 Чтв 22:25:32 2775486 18
У меня крайне глупый вопрос.
Вот такой код:
#include<stdio.h>
int main(int v, charv)
{
printf("%d\n",stdin);
}
Почему у меня выводит большое число?
Разве это не дискриптор, который есть в самом начале у программы(а потому его значение не должно ведь быть огромным)?
Аноним 21/07/23 Птн 05:26:26 2775697 19
>>2774604
Годный проект, остановился на нём. Спасибо.
21/07/23 Птн 09:02:56 2775769 20
Аноним 22/07/23 Суб 05:17:13 2777113 21
Screenshot2023-[...].png 50Кб, 810x166
810x166
Вот накачал я книг этих, которых советовали, штук 10. Ни в одной из них внятно не написано как работать с .dll и .so файлами. Даже нигде не написано, как загрузить библиотеку и заюзать её в сях. До сих пор гуглю, мне только выскакивают LoadLibrary() из винапи и dlopen() из dlfcn.h. Ну вроде dlopen() стандартный способ, щас буду проверять.

Удивительно - вообще 0 упоминаний об этом в книгах, что не так с ними? В файлах любой проги на С написанной покопаться если, то там будут тонны этих .dll и .so, но в книгах почему-то про это забыли нормально написать. А это явно база, классика, и это знать надо.
Аноним 22/07/23 Суб 05:44:34 2777119 22
>>2777113
Си это универсальный мультиплатформенный язык, а .dll и .so это конкретные платформы Windows и Linux, поэтому эти вещи не попадают в контекст языка. Тебе надо искать книги "Программирование на <платформанейм>". Для винды это Рихтер, "Windows для профессионалов", разжевано дальше некуда, если осилишь, будешь супер-хакером визардом творящим чудеса.
Аноним 22/07/23 Суб 06:50:43 2777129 23
Почему консольные утилиты на сях в линуксе такие сложные?
8000 строчек loc на сях. Как мне такое осилить?
Аноним 22/07/23 Суб 07:58:41 2777147 24
>>2777129
потому что их овер 40 лет разрабатывают (гну до линукса существовал) и овер 40 лет в списках рассылки просьбы добавить очередную опцию от очередного скриптописателя на баше.
Аноним 22/07/23 Суб 09:59:06 2777239 25
>>2777119
Получается, что, чтобы изучить стандартную библиотеку Си, нужно также читать эти книги "Программирование на <платформанейм>"?
Аноним 22/07/23 Суб 10:19:55 2777255 26
>>2777239
Чтобы изучать что-либо достаточно это и делать. А вот чтобы писать программы надо изучать платформу под которую пишешь, ты ведь пишешь реальную программу под реальное железо, а не фантазируешь в вакууме.
Аноним 22/07/23 Суб 10:37:55 2777261 27
>>2777255
Умничать можно и с меньшим кол-вом воды. Мне просто интересно как лучше подойти к стандартной библиотеке Си, чтобы изучить все (либо просто понять что делает та или иная ф-ция), потому что в википедии как-то совсем всё скудно описано, да и в других статейках, что я встречал не так чтобы всё подробно расписано (например как у Столярова про stdio.h), поэтому и интересуюсь, мб, у вас есть какая-то имбовая книга, либо статья, которая расставит все точки над и.
дедушка 22/07/23 Суб 12:11:36 2777357 28
>>2777261
Чтобы изучить фсе, начни со старых источников, вроде книжек кернигана или мануалов к старым юниксам. Так ты узнаешь, что действительно лежит в основе бибятеки С. Дальше полирни это чтением старых (простых) исходников, только не подвиндозного кала со примесью хуй86.
Аноним 22/07/23 Суб 12:33:15 2777374 29
Вопрос такой: могу ли я средствами библиотеки unistd сделать вывод на консоль?
Я знаю, что могу использовать scanf из stdio, однако интересно, можно ли такое сделать через unistd.

У меня есть догадка, что нужно что-то вписать в какой-то файл, однако я не имею уверенности, что это так.
Аноним 22/07/23 Суб 12:59:49 2777417 30
>>2777357
>вроде книжек кернигана
"Unix. Программное окружение" вроде этой?
>Дальше полирни это чтением старых (простых) исходников
А это как искать?
Аноним 22/07/23 Суб 16:07:55 2777685 31
Не советую читать исходники. Бред какой-то. Нужно делать маленькие тренеровочные программки своими руками, в том числе и с помощью готовых КОРОТКИХ примеров из учебников и статей, расширяя их функциональность и сравнивая с другими такими же примерами. Просто читать исходники для образования - дичь! Можно разве что обратить внимание на стиль программирования. Но заниматься таким "реверс-образованием", анализируя чей-то готовый код - то ещё извращение. Самому надо, я считаю; по возможности, конечно.
Аноним 22/07/23 Суб 17:10:27 2777748 32
>>2777685
NIH дебил закукарекал. Неумение читать код признак безмозглого имбецила, таких вообще нельзя допускать до компьютеров, кроме как в браузер тыкать одним пальцем.

Единственное и правильное обучение - форкаешь чужую программу и делаешь изменения. Так же как единственный геймдев начинается вовсе не с написания своего движка, а с модов к существующим играм. Кто не умеет читать и использовать чужое, тот и свое не сможет сделать, тупое говно отродье тупого говна.
Аноним 22/07/23 Суб 17:34:45 2777778 33
Аноним 22/07/23 Суб 17:41:14 2777789 34
зашел сказать что у вас самый ламповый тред в /pr
Аноним 22/07/23 Суб 18:41:43 2777865 35
>>2777778
а хули тут так дорого, 30$ почти за книжку в 100 страниц. хуй дойдет в рф, в интернете не спиздить. мертвый материал.
Аноним 22/07/23 Суб 19:08:09 2777900 36
Аноним 22/07/23 Суб 19:23:08 2777915 37
>>2777417
Я щас качаю исходники на арче вот этой функцией, которая у меня в .bashrc:
function getsrc()
{
asp export $1 && \
pushd $1 && \
makepkg -do --skippgpcheck && \
pushd src
}
По идее для любого пакетного менеджера такое должно быть.
Правда, я скачал так glibc и нихуя не понял даже приблизительно откуда include <stdio.h> забирает тело функций, ведь в stdio.c почти нихуя не написано. И makefile там неебических размеров который тоже нихуя не понять сразу.

Ещё иногда просто git clone делаю с гитового репозитория.
Аноним 22/07/23 Суб 19:45:26 2777931 38
>>2777900
ладно, для редиса есть на сайте, для компилятора нашел на каком-то турбобите как в 2008. пока хватит.
Аноним 22/07/23 Суб 20:03:35 2777953 39
>>2777915
Понял, анон, спасибо!
Аноним 22/07/23 Суб 21:35:25 2778024 40
А как вообще ебануть что-нибудь наподобие DOOM2 ?
Аноним 23/07/23 Вск 03:49:15 2778219 41
>>2777778
Да, хорошие книжки, но они нужны всего лишь для тех, кому интересна эта тема, а вовсе не для обучения нубов программированию путем пропаганды идеологии NIH. Такая пропаганда воспитывает только дегенератов, и только дегенераты её продвигают и считают верной. Данные книжки тут ни при чем, проблема в людях, и конкретно в данном треде, этих самых дегенератах.
Аноним 23/07/23 Вск 04:29:36 2778222 42
>>2778024
Он весьма и весьма продвинут в техническом плане, это тебе не ебануть за вечерок.
Аноним 23/07/23 Вск 11:57:43 2778343 43
>>2775769
ты будешь в шоки, но в хай левл языках к анонам прилипло слово дескриптор, что сутью своей отражает поинтер на адрес где начинается описание хуйни
Аноним 23/07/23 Вск 12:18:37 2778349 44
>>2775486
stdin это указатель на экземпляр структуры FILE описание которой есть в stdio.h

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

типа FILE * myFile = fopen();

myFile теперь такой же "дескриптор" то бишь поинтер на экземпляр FILE куда можно писать и откуда можно читать.

только юзать надо будет функции где в аргумент ты пихаешь поинтер на FILE например fread() иначе будешь читать/писать в stdin stdout по дефолту

из вышесказанного - stdin это указатель/поинтер/дескриптор
printf("%d",stdin); печатает адрес stdin в десятичном виде
Аноним 23/07/23 Вск 12:40:39 2778356 45
>>2777113
давай вкратце расскажу
есть статичные библиотеки (функций, но лучше будет сказать машкодов) и динамические библиотеки (функций/машкодов)

эти обе хуеты сами из себя представляют скомпиленные из сырцов объектные файлы .o которые уже запакованы в библы .dll .so

например так gcc -shared lib.o lib.so
>ну или типа того сами гцц команды погугли я не сильно шарю

ну и вот у тебя например появилась статик библа в которой есть машкоды описания функции huyjopa()
далее ты ебашишь какой то хеловорлд где тебе понадобилась твоя huyjopa

делаешь что то вроде
main(){
huyjopa();
return;
}

а значит надо линкануть откуда взять описание как huyjopa работает
gcc myapp -L lib.so
или типа того опять же погугли команды линковки гцц я руками ничо не собираю

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

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

надеюсь понятно расписал как это работает
23/07/23 Вск 13:15:09 2778383 46
>>2778356
> функций, но лучше будет сказать машко
Библиотека содержит таблицу символов и секции с кодом/данными.
Символы могут ссылаться внутрь секций или на абсолютные адреса.
Аноним 23/07/23 Вск 13:39:25 2778406 47
>>2778383
>таблицу символов
эксель?
Аноним 24/07/23 Пнд 03:18:13 2779119 48
Аноним 24/07/23 Пнд 03:38:17 2779120 49
Аноним 24/07/23 Пнд 03:46:42 2779122 50
>>2777748
Как читать коды, которые не понимаешь? Код низкоуровневый, нужно понимать эту предметную область. Мне интересна эта либа https://github.com/uNetworking/uSockets
Аноним 24/07/23 Пнд 03:49:21 2779123 51
>>2777931
>для компилятора нашел на каком-то турбобите
Дай ссылку, я не нашел.
Аноним 24/07/23 Пнд 06:27:14 2779130 52
Аноним 24/07/23 Пнд 09:41:46 2779206 53
>>2779120
Вот за это спасибо, анонче!!
Аноним 24/07/23 Пнд 10:42:54 2779233 54
что по поводу данного курса скажете?
https://stepik.org/course/73618/syllabus

у меня лично жопа сломалась, но я питоно-скрипторебенок
Аноним 24/07/23 Пнд 11:29:56 2779288 55
Снимок экрана 2[...].png 27Кб, 398x236
398x236
>>2779122
говнокод какойто, нахуй сходи со своим интересом
Аноним 24/07/23 Пнд 11:44:13 2779302 56
Снимок экрана 2[...].png 5Кб, 90x50
90x50
>>2779233
>что по поводу данного курса скажете?
я стёк, кря
Аноним 24/07/23 Пнд 12:19:16 2779349 57
>>2779288
>говнокод
Обосновать сможешь?
Аноним 24/07/23 Пнд 12:23:19 2779358 58
Аноним 24/07/23 Пнд 13:44:01 2779468 59
>>2779358
Значит не можешь. Что и требовалось доказать.
Аноним 24/07/23 Пнд 14:08:57 2779506 60
Аноним 24/07/23 Пнд 14:31:36 2779551 61
>>2779506
Я и не должен понимать дебилов. Обосновать не можешь, потому что нечем.
Аноним 24/07/23 Пнд 14:44:34 2779582 62
Смех.webm 233Кб, 424x346, 00:00:01
424x346
Аноним 24/07/23 Пнд 22:27:45 2780244 63
Пишу свое ядро ОС и бутлоадером. Как в системе сборки cmake настроить компиляцию и линковку ассемблерных файлов вместе с файлами C++, а также задать кастомный скрипт линкера и слинковать с ним бутлоадер?
Аноним 24/07/23 Пнд 22:29:01 2780245 64
>>2780244
А еще, как здать ассемблер? Имею в виду, программу ассемблера.
Аноним 24/07/23 Пнд 23:12:16 2780291 65
>>2780244
>>2780245
Ээээм... Отдельным тагретом прописываешь прогон твоего ассемблерного кода через нужный тебе ассемблер. Потом указываешь этот таргет, как пререквизит к основному таргету и линкуешь там при компиляции полученные object-ы.
Аноним 24/07/23 Пнд 23:19:27 2780299 66
>>2780291
Можно поподробнее? Командами симейка. Как это делается?
Аноним 24/07/23 Пнд 23:26:22 2780303 67
>>2780299
да хуйни любым скриптовиком который знаешь
башскриптом собери например, чо ты симейк дрочишь если не знаешь его команд?
Аноним 24/07/23 Пнд 23:32:13 2780306 68
>>2780303
Я дрочу симейк, чтобы разобраться в нем для работы
Аноним 25/07/23 Втр 00:01:56 2780317 69
0.png 44Кб, 555x455
555x455
>>2780306
У меня такой симейк скрипт. Почему boot не собирается?
Аноним 25/07/23 Втр 02:15:54 2780379 70
Все эти opengl с++ либы после компилирования приложения создают два окна - одно консольное, другое с opengl выводом. Тем не менее любая игрушка открывается в единственном окне. Как мне сделать, чтобы консольное окно не открывалось и не висело в фоне?
Аноним 25/07/23 Втр 02:39:00 2780380 71
Аноним 25/07/23 Втр 05:05:14 2780389 72
>>2780379
Было такое в пердокомпиленной программе, не игре, но тоже вылазило паразитное консольное окно. Пробовал ебаться с опциями компилятора, не помогло, в итоге плюнул и вставил в начало WinMain строчку скрывающую это поганое окно.
ShowWindow(GetConsoleWindow(), SW_HIDE);
Аноним 25/07/23 Втр 10:00:19 2780466 73
>>2780317
Можете помочь со сборкой такого простого проекта? У меня уже спортивный интерес собрать его симейком. Руками из обжектов бинарь собирается (хотя, наверное, в неправильном формате), а симейк его собрать не может

https://gitflic.ru/project/aoizora/operating-systems

:-1: error: /usr/lib/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../lib/libgcc_s.so.1: error adding symbols: file in wrong format
Аноним 25/07/23 Втр 10:09:47 2780472 74
>>2780466
Гидра показывает, что libboot.a это эльф файл, внутри него start.s.o с моим кодом и системными секциями. Вроде нормальный формат, что линкер на его ругается?
Аноним 25/07/23 Втр 22:13:41 2781532 75
Итак я закопался в какой то хуйне и не могу решить простейшую задачу. Поэтому прошу помощи.

Сап моряч, есть одна задача.

Дано: две строки текста произвольного размера и набора символов (русские англицкие буковы цифоры управляющие анси последовательности все в перемешку).
Задача: запринтить каждую строку в свой блок. Один блок слева, затем пару пробелов как разделитель экрана и затем блок справа.
Аноним 25/07/23 Втр 22:16:39 2781536 76
>>2781532
UPD:
Каретку нельзя двигать при помощи АНСИ, запринтить надо без этих фокусов.

Причина ограничения: SetCurPos ставит каретку не учитывая что в консоли могут быть уже напринченые строки от других программ - не подходит. MoveCurUp стирает нижние строки при прыжке каретки наверх - не подходит.
26/07/23 Срд 08:54:29 2781764 77
Аноним 26/07/23 Срд 12:23:35 2782025 78
>>2781764
Хуюрсес. Алгоритм давай.
Аноним 26/07/23 Срд 22:42:38 2783053 79
image.png 106Кб, 989x813
989x813
image.png 121Кб, 956x826
956x826
Как же приятно байтобить, ммм.
Можно считать бинарную последовательность, а потом ебать ее как душе угодно. Хочешь вывести значение переменной типа short как два символа? Да, пожалуйста, просто скастуй нужный тип к указателю, прибавь смещение и разыменуй. И многое другое...
В общем, пока что годно.
мимо скриптомакака
Аноним 26/07/23 Срд 23:47:17 2783137 80
Снимок экрана 2[...].png 24Кб, 250x72
250x72
>>2783053
>пока что годно
Ну тк. А ты говно накидывал, ай ай ай.
#define zero 0
#undef zero
Аноним 26/07/23 Срд 23:53:08 2783144 81
image.png 17Кб, 897x95
897x95
>>2783137
>. А ты говно накидывал
?
>#define zero 0
>#undef zero
Так не работает, потому что в fwrite первым аргументом нужно передать указатель на область памяти откуда будут браться значения.
Аноним 27/07/23 Чтв 00:01:16 2783159 82
>>2783144
Ааа вот чо за зеро такое. Окей.
Пойду ковырять свои вайдчары.
Аноним 27/07/23 Чтв 08:12:04 2783391 83
>>2780379
У вас в типе исполняемого файла установлена консольная подсистема.
Для консольной подсистемы Windows автоматически будет создавать консоль (либо берёт родительскую). Чтобы такого не было, нужно задать оконную подсистему в опциях линковщика. В makefile добавь
Для консольной подсистемы
LDFLAGS+=-subsystem console
Для оконной подсистемы
LDFLAGS+=-subsystem windows
(или вручную пропиши)
Аноним 27/07/23 Чтв 20:43:28 2784606 84
Напоминаю, что Си навсегда останется каловым языком из 1970х, если в очередном обновлении не избавится от юзлес хедер файлов.
Аноним 27/07/23 Чтв 22:46:40 2784745 85
>>2784606
Что такое хедер-файлы?
Аноним 27/07/23 Чтв 23:12:40 2784774 86
>>2784606
Зачем кастрировать инструментарий? Не нравится тебе инклюдить хидеры, не инклюдь.
Аноним 27/07/23 Чтв 23:15:24 2784777 87
>>2784774
Э нет, пидор, для начала пофикси очередность декларации, а потом я смогу не инклюдить хедер парашу. Как это сделано в языках следующего поколения и которые создавались для людей, а не животных.
Аноним 27/07/23 Чтв 23:16:54 2784779 88
>>2784777
Директивы фиксят. Не пойму с чем ты не справился. Можешь раскрыть свой бугурт?
Аноним 27/07/23 Чтв 23:19:55 2784782 89
>>2784779
Я хочу инклюдить cpp файлы без хедеров в любом порядке. С++ этого не позволяет сделать, чем путает ньюфага и заставляет копаться в унитазе полном ошибок.
Аноним 27/07/23 Чтв 23:28:18 2784796 90
>>2784782
Инклюдь без хидеров. В чем твоя проблема то?

int main(){
#include "huyjopa.cpp"
return 0;
}
Аноним 27/07/23 Чтв 23:36:20 2784805 91
image.png 78Кб, 251x201
251x201
>>2784782
>ем путает ньюфага и заставляет копаться в унитазе полном ошибок
>jza

вспомнился мемасик
Аноним 28/07/23 Птн 00:02:27 2784830 92
Аноним 28/07/23 Птн 01:07:44 2784849 93
>>2784830
Можешь хоть жипег заинклюдить, если у тебя в жипеге коды текстом лежат)))))))))
Аноним 28/07/23 Птн 01:43:22 2784855 94
Аноним 28/07/23 Птн 01:46:54 2784856 95
>>2784855
А нито ты заинклюдишь баивую картиначку в тредик?)))))))
Аноним 28/07/23 Птн 21:16:53 2786218 96
Снимок экрана 2[...].png 67Кб, 744x162
744x162
Снимок экрана 2[...].png 69Кб, 986x228
986x228
Снимок экрана 2[...].png 44Кб, 1044x176
1044x176
Привет моряч!

Видали чо могу? Меняю конст ансигнед инт по желанию левой пятки. Блять как побороть эту хуйню и почему это возможно?
Аноним 28/07/23 Птн 22:10:12 2786333 97
image.png 202Кб, 1987x1144
1987x1144
image.png 47Кб, 1071x516
1071x516
https://pastebin.com/PpJLRuUq

Анон, подскажи, пожалуйста, почему в тестах постоянна появляются дополнительные элементы в конце строки? Запускаю этот код у себя на линуксе с компиллятором gcc и всё норм, но вот запускаю на кодеворсе, и там какой-то мусор в конце строки.
Аноним 28/07/23 Птн 22:14:10 2786335 98
Снимок экрана 2[...].png 20Кб, 670x58
670x58
>>2786333
Предполагаю твои плавающие баги связаны с параллельными вычислениями.
Аноним 28/07/23 Птн 22:19:28 2786339 99
>>2786335
Нет, анонче, не помогло.
Аноним 28/07/23 Птн 22:22:26 2786342 100
>>2786339
Ну а второй вариант - ты где то поинтером вышел за пределы и пишешь в строку всякий мусор декодируя это в символы.
Но параллельные вычисления это канеш зло, инкрементни до записи, любитель писать все в одну строку.
Аноним 28/07/23 Птн 22:25:07 2786351 101
>>2786342
Ладно, анон, спасибо! Завтра тогда продолжу пердол, сейчас уже спать пора.
Аноним 28/07/23 Птн 23:07:03 2786416 102
>>2786342
А что не так, кстати, с параллельными вычислениями? Компилятор то всё равно это раскладывает на машинные коды, а на них это выражение ничем не отличается от того, если ты перенесёшь эти действия на две разные строки. Ну да, возможно, порядок немного изменится, если в представленном примере увеличивается значение, которое лежит по адресу el_in_str, потом предыдущее значение прибавляется к адресу str, после чего увеличенному адресу присваивается значение el_in_arr; то, если мы перенесём инкримент el_in_str на следующую строку, то сначала значение el_in_str будет прибавляться к адресу строки, затем присваиваться элемент из el_in_arr, и после этого будет увеличиваться значение el_in_str и заносится по месту хранения этой переменной. Но суть не меняется - выполняются одни и те же действия.

Или тут дело в том как у них организованы тесты? Т.е., мб, там совсем не участвует компилятор, т.е. мой код не переводится в машинные кода?
Аноним 28/07/23 Птн 23:09:16 2786421 103
>>2786333
А модешь само задание прислать?
Аноним 28/07/23 Птн 23:10:32 2786424 104
image.png 40Кб, 1049x436
1049x436
Аноним 28/07/23 Птн 23:13:01 2786427 105
>>2786421
Если использовать, кстати, ф-ции из string.h, то всё норм получается. Но я пока их не хочу использовать - по совету Столярова, чтобы лучше понимать, что такое строки в Си.
Аноним 28/07/23 Птн 23:15:15 2786431 106
>>2786427
>что такое строки в Си.
Массив char-ов c '\0' на конце?
Аноним 28/07/23 Птн 23:16:49 2786434 107
>>2786424
Забыл ноль в конец строки приписать.
Аноним 28/07/23 Птн 23:16:50 2786435 108
>>2786416
На твоей машине не отличается, а на другой отличается. Как и байтсдвиги на разных машинах реализованы по разному, как и касты типов на разных машинах реализованы по разному.

Это база по K&R C lang
Аноним 28/07/23 Птн 23:19:16 2786439 109
>>2786431
Ну да, это то просто! Но вот, когда начинаешь решать подобные задачки, то и начинаешь вникать во всю эту арифметику указателей, во все эти массивы чаров и т.д.

>>2786435
Понимаю, но на предыдущих итерациях решения этой задачки я всё что можно было сайзоффал, но один хер что-то не то получалось.
Аноним 28/07/23 Птн 23:19:56 2786440 110
>>2786435
> Как и байтсдвиги на разных машинах реализованы по разному, как и касты типов на разных машинах реализованы по разному.
А эти различия в каких рамках проявляются? В рамках одной модели/линейки/архитектуры/...?
Аноним 28/07/23 Птн 23:20:53 2786443 111
>>2786434
Точняк!!!!!! Анон, спасибо!!! Долбанные массивы чаров с '\0' на конце.
Аноним 28/07/23 Птн 23:21:40 2786444 112
>>2786439
> Ну да, это то просто!
Если это просто, то почему ты не смог найти ошибку в своём решении? М?
Аноним 28/07/23 Птн 23:22:01 2786446 113
>>2786431
Не обязательно чаров. Там могут лежать вайдчары или вайдинты или вообще мутированные вайдинты которые хавает petchar() например.

Зависит о способа кодирования символа в строке. Как пример русские буквы кодируются двумя байтами, юникод секвенции то же кодируются двумя байтами, ошибка чтения из гетчара кодируется четырьмя байтами.

Чот сегодня день базы. Только что провел ликбез своему патрону по этой хуйне.
Аноним 28/07/23 Птн 23:24:00 2786450 114
>>2786440
У меня сбор статистики скудный. На интеле сигнде бит перезаписывается, на арме нет. Вот и вся моя статистика. Покопай гугол. Разница архитектур обозначает разницу в опкодах, которые соответственно по разному делают вещи.
Аноним 28/07/23 Птн 23:25:56 2786452 115
>>2786444
Потому что только вникаю во все эти нюансы. Это же так просто, анон! Тут пока руку на таких ошибках не набьёшь, то такие элементарные действия не войдут в привычку.
Аноним 28/07/23 Птн 23:30:14 2786458 116
Вообще на Сях тяжело писать что-то большое после высокоуровневых языков. Приходится переизобретать ООП, структуры данных, алгосы, которые обычно лежать в стандартной библиотеке тех же плюсов. Я вообще не понимаю как ядро линуса пишут и как этот говогкод работает. Одно дело небольшая утилитка, а другое дело кодовая база в миллионы строк.
Аноним 28/07/23 Птн 23:32:06 2786460 117
>>2786458
Там, наверное, невероятно высокий уровень комментариев.
Аноним 28/07/23 Птн 23:34:07 2786462 118
>>2786458
Да ничо тяжелого нет. Дольше просто. И часто есть вилка выбора пихать вычисления на стек или не пихать. В плюсах такой вили не будет, насрет в стек конструкторами деструкторами и не спросит даже.

Я могу только понять нытье за отсутствие стрингов как типа (ну и булевых констант). Но это дело привычки на самом деле.
Аноним 28/07/23 Птн 23:39:38 2786466 119
>>2786462
>Я могу только понять нытье за отсутствие стрингов как типа
НИНИУЖНА, особенно для минималистичного и топорного языка как Си. Строки - это как структуры данных, под каждую ситуацию нужна свои.
В ту же Аду несколько видов строк не от хорошей жизни добавили, поэтому пусть лучше оставят базовый функционал, а юзеры свои велосипеды под задачу пишут.
Аноним 29/07/23 Суб 00:20:01 2786502 120
Насколько хорошо владеет языком Си СЕО корпорации "Майкрософт"?
Аноним 29/07/23 Суб 01:58:35 2786552 121
image.png 61Кб, 279x181
279x181
>>2786218
Я починил баг с изменением значения константы.
Виноватыми оказались касты типов при установке отдельных битов внутри байта. Решение: переписал безтиповым макросом, нет каста типов - нет проблем.
Аноним 29/07/23 Суб 03:02:37 2786592 122
image.png 243Кб, 500x586
500x586
Untitled.png 147Кб, 1802x854
1802x854
image.png 78Кб, 948x840
948x840
Аноним 29/07/23 Суб 03:08:56 2786597 123
>>2786592
Алсо, с бОльшим количеством слов тоже работает.
Аноним 29/07/23 Суб 03:09:24 2786598 124
image.png 4Кб, 609x28
609x28
Аноним 29/07/23 Суб 03:19:55 2786599 125
>>2786592
Бля я так и не понял чо вы делаете. Каких то сферических коней в вакууме. Ну окей надо вам слеить строки ну юзаните sprintf() зачем по байту перекладывать.
Аноним 29/07/23 Суб 03:28:12 2786605 126
>>2786599
>Бля я так и не понял чо вы делаете
Там задание выше по треду. Плюс, анон не хочет вызывать сторонние функции.
Аноним 29/07/23 Суб 03:30:39 2786606 127
>>2786599
upd
Например через макрообертку va_args, пихаем в макро массив слов, внутри фором клеим управляющуюу строку для sprintf, аллоцируем память, передаем управляющую строку поинтер и va_arglist в спринтф, проходим фором меняя нули на пробелы

решил в псеводокоде

>>2786605
sprintf это стандартная печать
Аноним 29/07/23 Суб 03:51:43 2786610 128
>>2786606
Анон учится и хочет вручную такие вещи пописать, чтобы со строками разобраться, а ты ему уже вариадики суешь.
Аноним 29/07/23 Суб 03:58:06 2786614 129
>>2786610
бля забыл такую хуйню - спринтф сам аллоцирует сколько надо по печать строки в массив, так что можно просто (следите за руками) напринтить в поинтер со здвигом равным длинне строки слова -1

типа

char * str = "";
for tralivali
sprintf(str+shif, "%s ", words);
puts(str);


да вариадики я для себя подумал, чисто мозги подразмять
Аноним 29/07/23 Суб 04:08:06 2786618 130
Снимок экрана 2[...].png 123Кб, 1246x328
1246x328
>>2786614
Вот как раз есть похожий мультипликатор строк навелосипеженый, можно его доработать под прием массива слов и решение готово.
Аноним 29/07/23 Суб 04:37:55 2786623 131
>>2786618
Первая же строчка с комментом кричит "Говно!".
Надо делать так, что сначала вызываешь эту функцию в пассивном режиме, она ничего не делает и только возвращает размер необходимого буфера. Потом этот буфер сам создаешь и вызываешь функцию снова, уже с этим буфером, и она его заполняет результатом. А такая самодеятельность с выделением неизвестно чего внутри функции, а потом попытка это отмазать комментом "НЕ ЗАБУДЬТЕ ПОДТЕРЕТЬ ГОВНО ПОСЛЕ МЕНЯ", ну вы поняли.
Аноним 29/07/23 Суб 04:46:30 2786626 132
>>2786623
Да мне просто лень было контрол це контрол вэ делать для другого алгоритма и я накодил это, так что чо ты ругаешься, это же не либа какая.
Аноним 29/07/23 Суб 06:57:36 2786644 133
>>2786626
Такое работает для хеллоуворлда из двух функций. В реальной же программе ты тут же сам забудешь и получай текущую память.
Аноним 29/07/23 Суб 09:04:39 2786667 134
>>2786416
Потому что все эти твои ++ читать неудобно. Я не хочу рыть многостраничне мануалы в поиске ответа какой из этих ++ выполнится первым, правый или левый, и какие у них побочные эффекты.
Во‐вторых, между краткостью и понятностью я всегда выберу понятность. Я в своём коде всегда использую Value += 1.
В‐третьих, вы всерьёз думаете, что компилятор, умеющих такие оптимизации как раскрутка цикла, распространение констант, удаление общих подвыражений, вынос инварианты — он не умеет оптимизировать ++ слева или справа?
Аноним 29/07/23 Суб 09:20:11 2786672 135
>>2786614
Анон, спасибо! Буду иметь ввиду, что так можно делать. Но проблема в том, что каждое слово нужно отделить пробелом, а тут я так понял можно посчитать длину всей строки и её сразу же передать sprintf.

>>2786667
>Во‐вторых, между краткостью и понятностью я всегда выберу понятность. Я в своём коде всегда использую Value += 1.
Да, понял, анон! Я просто не думал, что я буду кому-то показывать этот код, но из-за этого '\0' в конце строки, я чёт взгрустнул вчера под конец дня и решил спросить анона.
>он не умеет оптимизировать ++ слева или справа?
Я не сомневаюсь, что он это умеет, я просто не понимаю, что здесь оптимизировать, ведь в машинных кодах это и так всё до невозможности просто выглядит.
Аноним 29/07/23 Суб 11:37:28 2786737 136
.png 84Кб, 1074x902
1074x902
Решил я значиться изучить си.
Но у меня немного ООП головного мозга.
Собственно. Я тут хочу получить фидбек насчет организации своего кода.
Так вообще кто-нибудь пишет на Си?
Я просто не очень много смотрел примеров чужого кода сишного. Придумывал на ходу. Вот примерно такой стиль придумал.
Думаю суть понятна. Объектов у нас нет, пусть будет структура, а ей сразу определяем как указатель будет обзываться, чтобы постоянно звездочку не дописывать. С о всякими функциями которые надо так же передать в другую функцию - делаем typedef для описания сигнатуры, в потом ссылку на функцию помечаем через прификс d (от delegate)

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

Собственно. Я уже сказал. Хочу фидбек по такой вот организации кода. В мире Си - пишет так кто-нибудь? Или мне как в растах-питонах опять надо перестраивать свой майндсет и пытаться как-то иначе все это дело делать?
Аноним 29/07/23 Суб 12:12:26 2786754 137
>>2786737
Да тайпдефы это база, но ровные пацаны указатели в право выравнивают.
Аноним 29/07/23 Суб 13:56:35 2786867 138
>>2786644
Это и есть кусок из двустрочного хеловорлда.
Аноним 29/07/23 Суб 14:01:43 2786871 139
>>2786737
Просто закинь в ридми свою нотацию по неймингу и не парься.
Не знаю алиасы на поинтеры мне не нравятся. Будто чел и жабы пришел и на звезды смотреть не может.
Аноним 29/07/23 Суб 14:16:14 2786886 140
>>2786754
Звезды вправо для сойжаков, звезды влево для труолдов. Бикоз звезда относится к типу. uint8_t* тип.
Аноним 29/07/23 Суб 14:28:14 2786912 141
>>2786886
>>2786871

Ладно, я хуйню сморозил. Ставьте звезды где вам нотация пишет их ставить и ебаште те алиасы которые нотация позволяет.
Если у вас по неймингу uint8_t ⚹p то так и будет нормально.
Если у вас по неймингу typedef uint_8t⚹ uint8_ptr то так и будет нормально.

И ебаните уже в шапку двачезвезды ⚹⚹⚹
Аноним 29/07/23 Суб 14:46:29 2786933 142
>>2786886
>Звезды вправо для сойжаков, звезды влево для труолдов.
Схуяли? Ветераны линукса и юникса всегда справа ставят, можешь сам их код посмотреть.
Алсо, такого типа данных как указатель не существует, так что звездочка должна к переменной относиться. Иначе бы
>int⚹ a, b, c;
работало для всех одинаково.
Аноним 29/07/23 Суб 14:49:32 2786936 143
>>2786933
Нет не должна. Вот например тип куда ты кастуешь (int⚹).
В юниксах вообще олдовый АНСИ стайл с обратной совместимостью. Например

int
main()
{
return 0;
}
Аноним 29/07/23 Суб 15:01:47 2786953 144
>>2786933
Я вот считаю что звезды это отличная тема для обсуждений и она не раскрыта.

Нотацию можно строго определить только пройдя через типичные примеры нейминга и написаний.

Вот несколько примеров

int⚹ func(int⚹ ptr){}
int ⚹func(int ⚹ptr){}
int⚹ p, ⚹ b;
int ⚹p, ⚹b;
a = (int⚹)c;
a = (int ⚹)c;

Сами выбирайте себе звездную нотацию. Я выбрал не парится и ставлю в центре int ⚹ ptr
Аноним 29/07/23 Суб 15:41:58 2786989 145
>>2786933
Этот прав. Между звездой и именем типа всегда пробел.
Аноним 29/07/23 Суб 17:06:28 2787054 146
image.png 1817Кб, 1920x1080
1920x1080
А что если ⚹p это составное имя? Ну типа (⚹p) то же самое что (аа) только аа мы не можем разделить на сущности потому что аа не составное имя, а ⚹p можем потому что составное.
Аноним 29/07/23 Суб 18:42:12 2787172 147
Снимок экрана 2[...].png 75Кб, 420x410
420x410
>>2786933
>Алсо, такого типа данных как указатель не существует
Пошел ты нахуй, пес. Если не существует тогда почему этот код с пика не работает? Жду маневры.
Аноним 29/07/23 Суб 19:24:11 2787212 148
>>2787172
И чего ты подорвался?
Код с пика не работает потому что в Си семантика некоторых операторов зависит от контекста. И в данном случае разрабы Си и компилятора сделали так, что при обьявлении указателя ты никак не присвоишь ему значение по значению. оп, каламбур
Если написать
>int ⚹p;
>⚹p = 10;
или
>int i = 10;
>int ⚹p = &i;
то все заработает.
Алсо, если указатели это такой же тип данных, то почему
>int⚹ a, b, c;
не работает?
и почему я не могу сделать так?
>int ⚹(⚹p) = 10;
Аноним 29/07/23 Суб 19:47:47 2787229 149
>>2787212
Ты же сам маняврируешь изходя из топологии деклараций и инструкций, мол это разная хуйня и тут же переспрашиваешь почему это разная хуйня.

>Алсо, если указатели это такой же тип данных, то почему
>int⚹ a, b, c;
>не работает?

По тем же причинам по которым мой пик не работает.

Объявляй каждый свой инт на отдельной строке
int ⚹a;
int ⚹b;
int ⚹c;

>и почему я не могу сделать так?
>int ⚹(⚹p) = 10;
А что ты тут пытался сделать? По твоей шизотеории ты пытаешься в инт положить инт, но опять что то пошло не так, да?
Аноним 29/07/23 Суб 20:16:14 2787272 150
>>2787229
Я начал писать пасту, но потом подумал нахуй оно мне надо? Ты просто тупой, иди на хуй.
инб4: пук срень, ряя, ты слился
Аноним 29/07/23 Суб 20:20:12 2787279 151
>>2787272
>ты слился
Ну так по факту же.
Аноним 30/07/23 Вск 01:50:26 2787570 152
имаге.jpg 832Кб, 1822x1105
1822x1105
>>2781764
Доделал первую часть без хуюрсесов.
Буду допиливать флажки покраски буковок и пульну этот лагоритм в основной проект. Хуй саси
Аноним 30/07/23 Вск 02:07:41 2787572 153
У меня возникла мысль что флаги не нужны. Я все флажки засунул в 1 байт чара и чекаю там биты на приедмет труфэлса. А нахуй? Можно ведь просто сделать если чар = 1 делай это если 2 делай то, что по сути избавляет от вичислений быта и многократных проверок на истинность.
Булы не нужны. Пруфмивронг.
Аноним 30/07/23 Вск 18:36:02 2788184 154
Начинаю дрочить литкод.
Аноним 30/07/23 Вск 19:51:33 2788274 155
Подскажите чмоне, который только жс по видео из ютьба изучал что делает код:
uint8_t buffer
size_t name = strlen((char
) buffer);
Буфер из файла в нем сначала иду слова, потом цифры и так несколько раз

По идее, это длинна фразы, пока байты можно трактовать как буквы, но я не понимать тогда как это работает
Аноним 30/07/23 Вск 20:34:46 2788324 156
>>2788274
Если буфер это поинтер на насигнединты тогда нэйм это длина строки буффер в байтах записанная в память длинны сайз_т байт
Если проще - буферр это строка, нейм это длина строки в байтах (а не в символах).
Аноним 30/07/23 Вск 20:43:47 2788338 157
>>2788274
Кстати говоря

Я никогда не понимал нафига люди юзают стрлен которая ходит циклом по строке и считает байтики (занимает процессорное время) если можно просто сделай сайзоф (который будет вычислен на этапе конпеляции и не тратит процессорное время)

Другое дело когда ты именно символы считаешь (например только печатные а в строке еще и непечатные), тогда конечно это другой разговор, в строке могул лежать не английские буквы длинной по два байта или непечатные символы по 5 байт например.
Аноним 30/07/23 Вск 20:50:05 2788352 158
>>2788338
Или стрлен проводит анализ байтов на предмет вайдчара вайдинта? Я смотрел реализацию в своей библе и у меня там топорный вайл. Это мне в штаны насрали или так она и реализована у вас?
Аноним 30/07/23 Вск 21:23:30 2788391 159
>>2788338
>Кстати говоря
Как узнать размер строки по поинтеру? Только проходя вайлом до нулевого байта. Так что ответ такой:

Для
type_t ⚹ str = "string";
size_t len = strlen(str):

Для
type_t str[] = "string";
size_t len = sizeof(str);
Аноним 30/07/23 Вск 22:00:41 2788460 160
Аноним 30/07/23 Вск 22:05:28 2788469 161
Аноним 31/07/23 Пнд 02:22:18 2788601 162
>>2788391
>Только проходя вайлом до нулевого байта.
UTF-8 сложнее, нужна библиотека-парсер каждого символа.
Аноним 31/07/23 Пнд 02:24:32 2788603 163
>>2788601
Ну и конечно у wchar_t многие символы имеют в составе нулевой байт.
Аноним 31/07/23 Пнд 02:51:04 2788607 164
Аноним 31/07/23 Пнд 03:31:35 2788623 165
>>2788607
>>wchar_t
Ткни пальцем я не вижу.
Аноним 31/07/23 Пнд 03:39:29 2788624 166
>>2788623
Такс... Если
>wchar_t многие символы имеют в составе нулевой байт
Тогда как это вяжется с представлением строк. На вики написано что вайдчары нужны для отображения широких символов (что бы это ни значило, эмодзи в виме какие нибудь), но представление строк это набор байтов в конце которых нулевой байт.
Даже если мы пихаем строку в условный wchar_t[] то принтим то мы ее по формату представления строк - тобишь по вайлу пока не встретим нулевой байт.

???
Аноним 31/07/23 Пнд 03:54:40 2788628 167
У меня есть домыслы что кодировка вайдчаров походит на кодировку анси секвенций. У анси 27...какиетобайты...109, тобишь ловишь обратный слеш (27) и пока не будет 109 мы все еще читаем байты анси секвенции. Наверное в вайдчарах так же, тогда вообще не проблема. Типа я знаю байт входа и байт выхода - налепил обработчик и готово.
Аноним 31/07/23 Пнд 05:26:42 2788634 168
Animation1.gif 1569Кб, 1067x564
1067x564
>>2788624
>Тогда как это вяжется с представлением строк.
Прямо.
wchar_t это UTF-16LE, нативная кодировка ядра и прочих подсистем Windows. В Windows любые обращения со строками к системе преобразуют эти строки в UTF-16LE (wchar_t), поэтому проще всего и лучше всего сразу писать программы в wchar_t (т.н. юникодные программы), чтобы не срать говном преобразований туда-сюда. Исключение только печать в консоль терминала cmd.exe которая wchar_t не поддерживает из за легаси-совместимости, здесь требуется преобразовывать текст.

Что касается представления текста, недавно как раз вышла программа для дебилов, смотри анимированную гифку.

>вайдчар
wide char = wchar_t
Фиксированный размер в 2 байта (в винде стандарт), просто тот же char, но широкий. Вроде есть и длиннее, в 3 байта например, но зачем оно надо я не знаю, в основном не надо ни для чего.

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

Секвенции нужны только для мультибайтовых символов, чтобы отличать их от символов другой длины. В wchar_t все символы одинаковые, никаких секвенций не нужно и их нет, просто пробегается по массиву как с char, поэтому в wchar_t у каждого элементарного символа ASCII есть нулевой байт, им просто не нужно 2 байта, второй получается лишний с нулевым значением.
Аноним 31/07/23 Пнд 08:42:25 2788696 169
>>2788634
Двач - образовач! Спасибо, анон!
Аноним 31/07/23 Пнд 15:05:28 2789169 170
>>2787212
>Алсо, если указатели это такой же тип данных, то почему
>>int⚹ a, b, c;
>не работает?
Потому что синтаксис у указателя это звёздочка перед переменной, поэтому вот это работает:
>int a, b, *c;
это говорит о том, что мы объявили три указателя, которые должны могут указывать на целочисленные переменые.
Аноним 31/07/23 Пнд 15:27:25 2789221 171
>>2789169
>>int ✱a, ✱b, ✱c;

✱быстрофикс
Аноним 31/07/23 Пнд 16:29:18 2789331 172
>>2788634
>в винде стандарт
Смешно звучит, учитывая что винда не поддерживает ни один страндарт целиком.
Аноним 31/07/23 Пнд 16:32:24 2789339 173
>>2789221
Я вас умоляю, вы так говорите будто такая запись
int ⚹ a, ⚹ b, ⚹ c;
или такая
int⚹ a,⚹ b,⚹ c;
не работает.

Да даже вне деклараций например
int⚹ p = &a;
⚹ p = 1;
Аноним 31/07/23 Пнд 16:47:56 2789359 174
>>2789339
Работает, почему эти записи не должны работать? Я говорю, что эта запись
>>int⚹ a, b, c;
не будет создавать три указателя. Ну и те записи, которые ты перечислил, тоже лучше не употреблять, ибо принято звёздочку ставить прям перед переменной без всяких пробелов. Просто с эстетической точки зрения это выглядит более опрятно, и сразу же объясняет то, что та или иная переменная есть указатель.
Аноним 31/07/23 Пнд 16:56:28 2789379 175
>>2789359
За это и начался спор. Что например при декларе переменных читабельнее ставить у переменной, а при декларе прототипов при типе.
Например

int ⚹myfunc(unsigned ⚹ , char ⚹); Менее читабельна чем
int⚹ myfunc( unsigned⚹ , char⚹ );
Аноним 31/07/23 Пнд 17:02:27 2789390 176
>>2789379
>int ⚹myfunc(unsigned ⚹ , char ⚹); Менее читабельна чем
Для меня наоборот второй вариант менее читабельный.
Хз, как это объяснить, но когда я вижу первый вариант, который ты считаешь мене читабельным, то мне сразу понятно, что myfunc должна вернуть указатель. А когда читаю второй вариант, то мозг как бы на мгновение останавливается и начинает вспоминать, что это означает. Мб, конечно, дело привычки, но всё равно более эстетично выглядит первый вариант, когда звёздочка прям перед переменной.
Аноним 31/07/23 Пнд 17:08:29 2789400 177
>>2789390
А почему твой мозг считает что должна вернуть указатель на переменную, а не указатель на функцию например, ведь звездочка у имени функции стоит а не у имени переменной?

Я просто пытаюсь понять почему у вас паттерны "сщуность ⚹сущность" обрабатываются проще чем например "сущность ⚹ сущность"
Аноним 31/07/23 Пнд 17:16:03 2789411 178
>>2789400
>должна вернуть указатель на переменную, а не указатель на функцию например
Указатель на ф-цию? Ф-ция должна вернуть указатель на определённую область памяти, в которой это ф-ция производила какие-то действия.
>сущность ⚹ сущность
Да просто, потому что это похоже на умножение.
>сщуность ⚹сущность
А это есть указатель.
Просто, когда ты пишешь
>int ✱a
то тут нет сомнений, что это указатель на целочисленную переменную а.
А когда ты пишешь
>int ✱ a
то это будто ты умножаешь int на а, что мозг первым делом отвергает, потому что это бред.
Аноним 31/07/23 Пнд 17:21:39 2789425 179
>>2789411
>указатель на определённую область памяти, в которой это ф-ция производила какие-то действия
Ну а вот например так если
...
result = printf;
return result;
}

>>сущность ⚹ сущность
>Да просто, потому что это похоже на умножение.
>>сщуность ⚹сущность
>А это есть указатель.
Что насчет a ⚹b? Понимаю что без деклараций не разобраться что есть а что б. Но я намекаю на то что это так же может быть умножением и так же может быть поинтером как и a ⚹ b как и a⚹b и даже a⚹ b
Добавим сюда декларации typedef int a; и это поинтер
Добавим другие декларации int a,b; и это умножение
Аноним 31/07/23 Пнд 17:30:48 2789434 180
>>2789425
>result = printf;
>return result;
>}
А здесь что не так? В result будет записан какой-то мусор, и этот мусор будет возвращён.

>Понимаю что без деклараций не разобраться что есть
Ты же сам ответил - всё зависит от деклараций, но когда задекларирован указатель, то читать проще, когда звёздочка перед переменной.
Аноним 31/07/23 Пнд 17:37:05 2789446 181
>>2789434
>В result будет записан какой-то мусор
Почему ты считаешь что будет записан какой то мусор?

> но когда задекларирован указатель, то читать проще
С этим я не спорю. Я спорю с тем что есть формат деклараций прототипов а именно
[ тип возвращаемого значение ] пробел [ имяфункции ] скобкаоткрылась...
а в ваших декларациях имя функции со звездочкой
вы же потом не пишите кол как ⚹myfunc() правильно?

Что то я устал разжевывать очевидное.
Аноним 31/07/23 Пнд 17:47:45 2789462 182
>>2789446
>Почему ты считаешь что будет записан какой то мусор?
Запусти код, который ты написал и сам всё увидишь.
>вы же потом не пишите кол как ⚹myfunc() правильно?
Вот ссылка, которая тебе поможет:
https://metanit.com/c/tutorial/5.11.php#:~:text=%D0%A3%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%20%D0%BD%D0%B0%20%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E%20%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%20%D1%81%D0%BE%D0%B1%D0%BE%D0%B9,%D0%BD%D0%B0%20%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E%20%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D0%B5%D0%B5%20%D0%B8%D0%BC%D1%8F.

myfunc это и так указатель, получается, что ты хочешь получить масло масленное.
Аноним 31/07/23 Пнд 17:53:49 2789472 183
>>2789462
Ты решил меня потроллить тупостью? Резулт в том примере вернет указатель на принтф. Указатель на принф по твоему мусор что ли?

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

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

Опять же вернемся к стандартным поинтерам
>int ⚹p;
В данном случает поинтер это р а не ⚹р и вот почему
р++ - двигаем поинтер на sizeof(int), а не ⚹p++ - двигаем поинтер
p = arr[30] - устанавливаем поинтер, а не ⚹p = arr[30]

Из всего этого есть один вывод простой
p это переменная типа int ⚹.

Я закончил.
Аноним 31/07/23 Пнд 18:11:35 2789490 184
>>2789472
>Я закончил.
Молодец!
Аноним 01/08/23 Втр 03:34:41 2789882 185
Вопрос про сокеты и объем передаваемой строки.

Допустим, что я через сокеты передаю строку. Вопрос такой: есть ли ограничение на размер передаваемой строки при использовании сокета?


Есть ещё один момент: так как с советами на линуксах я знаком, но не знаю, что есть в windows.
Аноним 01/08/23 Втр 16:41:27 2790407 186
>>2789882
Да, есть. Не больше двух гигабайт.
01/08/23 Втр 17:45:30 2790529 187
>>2789400
Дело привычки. Деды через пробел.
Аноним 01/08/23 Втр 21:39:05 2790815 188
>>2770768 (OP)
1. Язык Си это часть языка С++?
2. Если это так, то зачем тогда учить отдельно Си? Можно выучит С++ и знать одновременно два языка(Си и С++).
Аноним 01/08/23 Втр 21:57:19 2790826 189
>>2790815
>1. Язык Си это часть языка С++?
Нет.
Аноним 02/08/23 Срд 05:42:31 2790976 190
>int a, b, c, d, e, g, h;
Откуда у вас вообще возникла идея объявлять все переменные в одной строке? Начитались книжек из 1970‐ых годов? Это плохая практика.
В современном мире объявлять переменную следует не в заголовке функции, а как можно ближе к тому месту, где она будет использоваться. И желательно сразу с инициализирующим значением.
Аноним 02/08/23 Срд 05:46:39 2790977 191
2023-08-02 05.4[...].jpg 24Кб, 485x381
485x381
Кто нибудь из вас замечал, что форы на цисках работают по шаблону дувайл, а на рисках по шаблону вайл? Как вы думаете отработает ли фор с пика при условии что maxsymb это не 0?
Аноним 02/08/23 Срд 05:49:37 2790978 192
>>2790976
Поддвачну. А вообще идеальным вариантом будет объявлять переменную на своем уровне стека и если нужно делать проброс через поинтер на предыдущий уровень.
Аноним 02/08/23 Срд 08:41:19 2790997 193
Аноним 02/08/23 Срд 13:15:31 2791258 194
>>2790976
> а как можно ближе к тому месту, где она будет использоваться.
Нет. Неудобно оценивать размер стека. Смешивается декларативное и императивное.

> И желательно сразу с инициализирующим значением.
Нет. Отвлекает от декларативного.
Аноним 02/08/23 Срд 22:53:54 2791974 195
image.png 213Кб, 604x341
604x341
Сап моряч.

Тематика вопроса не совсем по сям но все же. Объясни как мне (архитектурно) состряпать пир ту пир приложуню? я понимаю как законнектить две машины в локалке, но я не понимаю как законнектить две машины в глобалке. Там же динамические айпишнегы провайдер дает. Сегодня антон был под одним айпишнегом, завтра под другим. И как антона найти тогда? На какой айпишник коннект кидать? Я не понимаю.
Аноним 03/08/23 Чтв 04:23:02 2792105 196
>>2791974
Никак. При первом запуске "на холодную" требуется централизованный сервер. Потом уже известные узлы можно хранить в кэше, но кэш со временем протухает и снова потребуется сервер.
Аноним 03/08/23 Чтв 04:36:04 2792107 197
>>2792105
Я вот глянул курс лекций по сетям и у меня такой вопрос. Если я посылаю пакет на бродкаст (255.255.255.255) в котором например есть еще порт моей приложуни питупи и какая то инфа (ну например с моим айпишнегом в локалке провайдера плюс какая то идентификационная хрень по типу "это я") - то ведь этот пакет получат поидее вообще все в интернете, правильно? Или нет? Ну и значит этот пакет получит Антон на том конце мира и сможет закешировать какие нить данные и послать уже запросик на коннект. Ну и поидее в обратную сторону так же сработает. Или нет? Я ничего не понимаю...

Ну например такая схема
Если дозвон до старого айпишнего ничо не дал - нет узла, узел не тот, там нет порта и тд и тп значит это не антон
Шлю бродкаст "АНТОХА ОТЗОВИСЬ" или "АНТОХА ЗВОНИ СЮДА"
И либо мне прилетает айпишнег антона и я конекчусь, либо антоха шлет коннект до меня и там рукопожатия писюнов тыры пыры в жопе дыры

Крч подкиньте идею, я не оч понимаю. Есть еще какой то опенфлоу и сдн (не днс).
Аноним 03/08/23 Чтв 04:56:48 2792110 198
>>2791974
>Там же динамические айпишнегы провайдер дает
в "локалке" тоже могут быть динамические айпишники, зависит от окружения

>И как антона найти тогда
знать его айпишник. если поменялся, то узнавать заново

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

>подкиньте идею, я не оч понимаю

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

>состряпать пир ту пир приложуню
может начать со знакомства с peer-to-peer протоколами? мм, как такая идея? вообще я удивляюсь тому, что с абсолютно нулевыми начальными вводными по сетям ты полез писать ptp приложение на С. похвально, подпишусь на блог.
Аноним 03/08/23 Чтв 06:09:31 2792116 199
>>2792107
Широковещание в интернете не работает, только в локалке.

Еще раз, для дебилов - НИКАК, нужен централизованный (известный всем желающим подключиться) сервер который сообщит им адреса.
Аноним 03/08/23 Чтв 10:08:42 2792220 200
>>2770768 (OP)
Собрал либу в Вижуал Студио, работает не правильно, собрал в ГЦЦ, работает правильно, куда копать? Оптимизацию отключил.
Аноним 03/08/23 Чтв 11:36:12 2792315 201
>>2791258
>Нет. Неудобно оценивать размер стека. Смешивается декларативное и императивное.
Какой ещё размер стека, поехавший. Компилятор в целях оптимизации все твои переменные может заменить на константу, либо засунуть в регистр, либо переиспользовать под другие цели.
Если тебе нужно руками управлять стеком, тебе нужно на ассемблере писать.
Аноним 03/08/23 Чтв 15:13:42 2792577 202
>>2792110
>необходимо знать ip-адрес дальней стороны
Да это и так ясно. Какая есть технология чтобы его узнать? Ну вот допустим днс выхлоп по ретрансляции адресов в айпишниги кешируется да, но если в кеше нет нужной записи то мы пойдем звонить по цепочке и спрашивать каждый днс шлюз вплоть до центральных доменных серваков пока не получим соответствие записи хуйжопа какому то айпишнеку.

Ну а существует ли такой же проброс вопроса для Антона? Ну как ты спрашиваю в локалке "АНТОНЫ ЕСТЬ"? Все молчат спрашивам на уровне нашего шлюза знают там антона или нет?

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

>похвально, подпишусь на блог.
Подписывайся конечно.
Аноним 03/08/23 Чтв 15:29:27 2792610 203
>>2792577
Неправильно, аналогия такая - надо скачать рецепт бутерброда бесплатно без смс, чтобы вместо бутера из говна и мочи увидеть как нормальные люди делают бутерброд из ветчины и хлеба.
Аноним 03/08/23 Чтв 15:34:59 2792626 204
>>2792610
Аналогия такая. У меня есть ветчина и есть хлеб. И я пытаюсь выснить как их сложить чтобы получился бутерброд.

Так все таки, могу я как то у всяких там главных узлов отвечающих за выдачу айпишнеков спросить какой айпишник дали антону сегодня?
Аноним 03/08/23 Чтв 15:42:56 2792645 205
>>2792626
>узлов отвечающих за выдачу айпишнеков спросить какой айпишник дали антону сегодня?
наверное. что за узлы, кстати?
Аноним 03/08/23 Чтв 15:48:27 2792655 206
image.png 358Кб, 551x630
551x630
>>2792626
>могу я как то у всяких там главных узлов отвечающих за выдачу айпишнеков спросить какой айпишник дали антону сегодня?
Аноним 03/08/23 Чтв 15:52:00 2792661 207
16827610240690.mp4 1417Кб, 1080x1920, 00:00:08
1080x1920
Аноним 03/08/23 Чтв 16:02:15 2792693 208
Чел, который пытается p2p приложуху запилить, можешь поступить иначе - раздавать сразу на все айпишники мира. Получается, что, если сегодня у Антона один адрес, а завтра другой, но ты, что сегодня, так и завтра раздаешь инфу на все айпишиники в мире, получается, что никак ты не промахнёшься, если у Антона завтра сменится айпишник. а так, конечно, тебе бы матчасть подучить.
Аноним 03/08/23 Чтв 16:08:02 2792707 209
>>2792693
Я так и думал сделать, но говорят бродкасты работают только в локалке. Да и прям на все айпишники мне не надо пои идее. Мне надо мультикастить на анотонову локалку, физически он из локалки никуда не переедет, просто сменит айпишник. Та что почается если под старым айпишником не антон надо врубить мультикаст пока не нащупается антон. Я вот так думаю.
Аноним 03/08/23 Чтв 16:20:01 2792731 210
>>2792707
>но говорят бродкасты работают только в локалке
ну а зачем броадкаст? пройдись по всем белым айпишникам в цикле, их не так много на самом деле.
Аноним 03/08/23 Чтв 16:21:35 2792733 211
>>2792707
>пока не нащупается антон
Вчера читал про всякие i2p и фринеты, так вот, они там поголовно используют ключи шифрования (приватник и общий ключ). Не знаю, может тебя это на что-то наведёт, потому что излучать цопе по всему миру это тупо.
Аноним 03/08/23 Чтв 16:25:21 2792741 212
>>2792733
Вопрос не про шифрование данных из пакета приема передачи, вопрос про то как коннекты прокидывать в современной сети интер-нет.

>>2792731
Надо подумать над этой идеей.
Аноним 03/08/23 Чтв 16:28:31 2792748 213
>>2792741
Так они шифрование используют, чтобы понять к тому антону ты подключаешься или нет, это самое, что не наесть про коннекты.
Аноним 03/08/23 Чтв 16:32:33 2792757 214
>>2792748
Мне кажется достаточно апишнека и порта + фразы приветсвия
Если это не антон у него не будет порта открытого. Если это челик слушающий сеть со всем открытыми портами - у него не будет фразы приветсвия.
Аноним 03/08/23 Чтв 16:34:26 2792761 215
>>2792757
Ну я тебе примерно об этом и толкую.
Аноним 03/08/23 Чтв 22:48:36 2793242 216
>>2792315
Дурачек, char tmpbuf3[MAXBUF] колпилятор никуда не соптимизирует. Эта хуйня должна быть на видном месте. А для всего остального незачем делать исключение. Объявления только в начале блока, и желательно в порядке убывания размера.
Аноним 04/08/23 Птн 03:39:22 2793382 217
>>2793242
Вот почему даунам нужно со школы вбивать паскаль, мужик был умный, знал что делал. А если сразу дать нормальный язык, они начинают лепить через жопу, мозгов своих понять нет, таких только дрессировать, сразу, потом будет поздно.
Аноним 04/08/23 Птн 07:32:21 2793399 218
16888192678120.mp4 23596Кб, 576x1024, 00:00:48
576x1024
>>2793382
Не пойму в чем суть претензии то? Каждый волен выбирать как ему использвать инструменты языка. Сишник позволяет декларировать новые сущности на каждом слое стека, так хули этим не пользоваться? Еще учитывая что выходя со слоя стека не надо следить за памятью и она автоматически считается освобожденной вотличие от кучи - вообще же супер (ну если без статиков). Если мне вот надо безтайповый своп сделать макросом то как мне его сделать то ты предлагаешь? Задекларировать глобалку и через нее свопать? А почему бы не задекларировать локалку на стеке и свопнуть через нее, а потом удалить локалку при выходе со стека?

Крч мимопроходил нихуя не понял чо тут деды друг друга деснами грызут.
Аноним 04/08/23 Птн 09:24:07 2793438 219
>>2793399
>декларировать новые сущности на каждом слое стека
Этот прав! Плюс надо учитывать, что каждая ф-ция должна выполнять одно действие и быть компактной, чтобы не держать в голове овердохуя переменных, когда читаешь код, следовательно, само название ф-ции, а следом и декларирование переменных, при чтении кода, должно сразу давать представление о том, что за алгоритм здесь применяется. А если декларировать переменные хаотичным образом, то получается, надо саму ф-цию разбивать на "блоки", что ломает представление о значении ф-ции.
04/08/23 Птн 10:17:23 2793462 220
Функции надо разбивать на функции, тогда все переменные легко будет объявить в самом начале.
Аноним 04/08/23 Птн 10:52:42 2793505 221
>>2793242
>Дурачек, char tmpbuf3[MAXBUF] колпилятор никуда не соптимизирует
Про оптимизацию «распространение констант» первый раз слышим? Весьма наивно полагать, что такие штуки могут происходить только с переменными а с массивами не могут. Компилятор может выкинуть весь твой тмпбаф3 и заменить его константой, как написано в этой статье https://habr.com/ru/articles/272269/
>Эта хуйня должна быть на видном месте
На видном месте — это когда видно где объявлено значит там используется. А когда приходится бегать глазами в заголовок блока, начало функции или вообще прокручивать — это не видно.
>и желательно в порядке убывания размера
Зачем? Если для выравнивания, то это относится только к полям структур. Одиночные переменные компилятор выравнивает автоматически.
Аноним 04/08/23 Птн 14:40:50 2793817 222
Поясните за IDE чтобы видеть адреса в памяти, хочется смотреть что происходит в риал тайм.
Аноним 04/08/23 Птн 15:31:40 2793907 223
Пидорасы твари суки не предупредили про перекат, ненавижу вас, сишник хуже пидораса!
Аноним 04/08/23 Птн 15:34:36 2793916 224
>>2793907
Ответственность за перекат в новый тред лежит на аноне.
Аноним 04/08/23 Птн 17:16:28 2794107 225
>>2793438
Речь не совсем о функциях шла. Функции это лишь часть стекового механизма.

>>2793817
Не знаю таких ИДЕшек, но принтф %p поможет

>>2793907
Согласен, перекат кривой как код ОПа.
Аноним 04/08/23 Птн 20:03:21 2794393 226
>>2793817
Начиная примерно с 2010 года в ОС адреса памяти не реальные, а виртуальные, живи теперь с этим
Аноним 04/08/23 Птн 21:42:20 2794482 227
>>2794393
А где почитать можно.
Аноним 04/08/23 Птн 22:05:02 2794494 228
>>2794393
Какого нахуй 2010, это уже как 300 лет виртуальные адреса.
Аноним 05/08/23 Суб 00:32:46 2794595 229
>>2794393
В клубе все реально, а не виртуально
Наша жизнь игрушка, а судьба фатальна
Аноним 05/08/23 Суб 00:46:48 2794606 230
Как хорошо владеет языком Си СЕО корпорации "Apple"?
Аноним 05/08/23 Суб 00:53:10 2794609 231
>>2794606
>пок пок как халашо владеит писюном гей калпалации "Апож"?
Аноним 05/08/23 Суб 10:40:41 2794782 232
>>2793817
Да любая современная IDE вроде студии.
Даже VSCode можно научить показывать адреса переменных: ставим плюйгины «Hex Editor» и «MemoryView».
Аноним 05/08/23 Суб 12:04:33 2794803 233
>>2792315
>Компилятор в целях оптимизации все твои переменные может заменить на константу, либо засунуть в регистр, либо переиспользовать под другие цели.
В реальности Clang любит захуячить твою переменную в стек, даже когда ты специально кодил так, чтобы в регистрах место оставалось. Стек, по крайней мере маленький, работает со скоростью регистров. Не знаю, как сделано, может у процессора есть кэш стека.
Аноним 05/08/23 Суб 16:23:07 2795144 234
>>2794803
> Стек, по крайней мере маленький, работает со скоростью регистров
Хладные истории.
Аноним 05/08/23 Суб 16:27:35 2795147 235
>>2795144
Сколько че ни делал интринсиках SSE2, Clang все время норовит в стек запихнуть, хотя специально экономлю регистры. GCC нет, но быстрее оно не работает.
Аноним 05/08/23 Суб 18:10:36 2795271 236
>>2795144
А что не так? К стеку доступ константный, всегда знаешь где что лежит. Единственное ограничение это оперативка наверное.
Аноним 05/08/23 Суб 21:11:42 2795411 237
>>2795271
Работает оно настолько быстро, что там скорее всего никаких обращений к оперативке вообще нет. Может в начале, если это например цикл, из нее читается, а в конце пишется. А при долбежке в цикле выглядит как обращение через rsp, но на самом деле используются какие-то теневые регистры.
Аноним 05/08/23 Суб 22:29:44 2795456 238
>>2795411
>теневые регистры
Власти скрывают.
Аноним 06/08/23 Вск 14:10:56 2795905 239
Спасибо, парни. Не думал что байтоебы такие веселые ребята.
Аноним 07/08/23 Пнд 19:55:43 2797461 240
>>2795147
>>2795271
Инсрукция может прочитать два регистра и записать третий. За такт таких инсрукций выполняется две и больше. Итого 6 и больше обращений к регистрам. А сколько обращений к памяти за то же время может быть?
Аноним 08/08/23 Втр 14:14:31 2798277 241
изображение.png 64Кб, 1920x494
1920x494
изображение.png 152Кб, 1920x886
1920x886
изображение.png 174Кб, 1919x895
1919x895
Почему шланг такое говно?

Почему гцц смог уместить все в 20 строк, а ебаный шланг размотал эти 20 строк на 60 строк, да и еще зачем-то векторизацию(SSE 128 бит регистры) применил. Старый шланг таки вообще до 200 строк говно размотал.
Аноним 08/08/23 Втр 14:15:10 2798278 242
Аноним 08/08/23 Втр 14:48:02 2798301 243
>>2798277
Тебе ращвернули цикол на 4 или даже на 8, если там упакованные умножения не просто так. Почему? Ты сам сказал шлангу, что хочешь отпимизацию по скорости под хуй сосе.
Аноним 08/08/23 Втр 17:06:51 2798452 244
>>2798277
Чел, хороший компилятор делает Intel, это база, запомни. Никто из серьёзных ребят не компилирует шлангом. В крайнем случае можно майкрософтским компилятором. Шланг и говноцэцэ для мозолеедов, это средства для онанизма, а не компиляторы.
Аноним 08/08/23 Втр 17:29:43 2798478 245
Аноним 08/08/23 Втр 19:43:57 2798697 246
>>2770768 (OP)
мразь на ОПЕ
почему все на английском для новичка?
гнида
Аноним 08/08/23 Втр 20:55:29 2798795 247
Сколько примерно времени от почти ноля знаний до нормальной работы?
Аноним 08/08/23 Втр 21:09:09 2798810 248
Подскажите а лучше ли сишка++ в плане работы чем например жава? Да сишка вроде как "профессиональнее" но на жаве работа есть и будет всегда потому что востребованность намного выше. Конкуренция тоже выше но это так же значит что легче будет уйти на новое место. По сишке вижу платят больше но вакансий намного меньше, поэтому и спрашиваю. И конечно же не имею понятия насколько "сложнее" сишка++ по сравнению с жавой.
Аноним 08/08/23 Втр 21:21:23 2798822 249
>>2798795
Без высшего образования работы на плюсах нет. Если студент, на третьем курсе ищи интерном место.
>>2798810
Работа на крестах собачья, сложная, неблагодарная, плохо оплачиваемая. Не связывайся.
Аноним 08/08/23 Втр 21:37:28 2798844 250
>>2798822
> Без высшего образования работы на плюсах нет. Если студент, на третьем курсе ищи интерном место.
Не один раз сталкивался на плюсовых проектах с людьми без высшего образования. Другое дело надо иметь скиллсет, чтобы самостоятельно уметь изучать от и до. А у многих без университета и настояния какого-то подгнившего профФессора с кафедры до бошки какие-то моменты не доходят.
> Работа на крестах собачья, сложная, неблагодарная, плохо оплачиваемая. Не связывайся.
Если не умеешь себя продать - то все будет именно так, согласен.
Аноним 08/08/23 Втр 21:38:16 2798846 251
>>2798822
>Без высшего образования работы на плюсах нет
кто тебе сказал ? батя с государственного предприятия?

https://hh.ru/vacancy/84720366

Вот не последняя компания и вышка тут не нужна и таких 90% на рынке труда
Аноним 08/08/23 Втр 21:39:19 2798848 252
>>2798277
Ты вроде сам включил О3 оптимизации, а потом имеешь претензии к компилятору. Это глупо.
Аноним 09/08/23 Срд 00:10:51 2799043 253
изображение.png 33Кб, 978x446
978x446
изображение.png 45Кб, 1003x550
1003x550
изображение.png 41Кб, 1001x554
1001x554
изображение.png 40Кб, 996x509
996x509
>>2798848
Так гцц +- одинаковый код генерирует. А вот шланг
Аноним 09/08/23 Срд 00:12:42 2799047 254
изображение.png 30Кб, 977x336
977x336
изображение.png 92Кб, 960x772
960x772
изображение.png 49Кб, 536x689
536x689
>>2799043
Шланга, вот такая вот шланга.
Аноним 09/08/23 Срд 00:24:17 2799074 255
>>2799043
Не задавался вопросом, что вероятнее всего clang имеет другие оптимизации врубленные на уровне О2 и О3 в отличии от gcc? Например, подрубает принудительно -march=native там, не?
Странно после этого писать что какой-то компилятор говно, а какой-то нет. Это все равно что называть говном clang, потому что он не gcc.
Аноним 09/08/23 Срд 00:49:34 2799120 256
Ебать вы тут все долбаебы

Мимо формошлеп JSON-грузчик
280к в месяц даже не знаю базу алгебры за 6 класс
Аноним 09/08/23 Срд 06:46:56 2799203 257
>>2798846
Это вакуха для формошлёпа на Qt-дрисне. В 99% будет микроэлектроника или какая-то очень специфичная предметная область где ты охуеешь, или гейдев, или хайлоад в яндексе.
> вышка тут не нужна
А ты откликнись, это подразумевается.
Аноним 09/08/23 Срд 07:35:12 2799218 258
Аноним 09/08/23 Срд 07:59:56 2799227 259
49037761bd1de8a[...].jpg 550Кб, 1920x1080
1920x1080
Анон, что посмотреть или почитать по Makefile? Указатели понятнее блдж. Желательно на англ.
Аноним 09/08/23 Срд 08:20:20 2799229 260
>>2799227
Справку, она у них охуительна, ну и любую доступную книгу на выбор пару глав вступления
Аноним 09/08/23 Срд 08:21:39 2799230 261
>>2799229
ойбля, с CMake перепутал, но всеравно, дропай Мейк и вкатывайся в СМейк
Аноним 09/08/23 Срд 09:26:47 2799255 262
>>2799230
Нестандартная дрисня. Сначала make.
Аноним 09/08/23 Срд 09:30:47 2799263 263
>>2799255
Ньюфаня в трхеде, ясно
Аноним 09/08/23 Срд 09:49:37 2799274 264
>>2798277
Мне думается, что шланг юзает SIMD инструкции. Попробуй получить значение 2^64 и вывести его, если шланг выведет 18446744073709551616, а гцц 0, то вот тебе и ответ, почему шланг юзает 128 битные регистры.
Аноним 09/08/23 Срд 11:46:00 2799390 265
BD728F53-04FD-4[...].jpeg 15Кб, 575x106
575x106
CC=gcc
CFLAGS=-c -Wall -Werror -Wextra

LDFLAGS3=
EXE3=../../build/Quest_3
SRCS3=\
../data_libs/data_io.c\
../data_libs/data_stat.c\
../data_module/data_process.c\
../yet_another_decision_module/decision.c\
main_executable_module.c\
sort.c
OBJS3=$(SRCS3:.c=.o)

LDFLAGS4=
EXE4=../../build/Quest_4
SRCS4=\
../data_libs/data_stat.c\
../data_module/data_process.c\
../yet_another_decision_module/decision.c\
sort.c
OBJS4=$(SRCS4:.c=.o)

STAT_SRCS=../data_libs/data_stat.c
STAT_OBJS=$(STAT_SRCS:.c=.o)
STAT_LIB=data_stat.a
LDFLAGS5=-L. data_stat.a
EXE5=../../build/Quest_5
SRCS5=\
../data_libs/data_io.c\
../data_module/data_process.c\
../yet_another_decision_module/decision.c\
main_executable_module.c\
sort.c
OBJS5=$(SRCS5:.c=.o)

DYN_SRCS=\
../data_libs/data_stat.c\
../data_module/data_process.c
DYN_OBJS=$(DYN_SRCS:.c=.o)
DYN_LIB=data_process.so
LDFLAGS6=-Wl,-rpath,.
EXE6=../../build/Quest_6
SRCS6=\
../data_libs/data_io.c\
../yet_another_decision_module/decision.c\
main_executable_module.c\
sort.c
OBJS6=$(SRCS6:.c=.o)

all : build

$(EXE3) : $(OBJS3)
$(CC) $(LDFLAGS3) $(OBJS3) -o $@

$(EXE4) : $(OBJS4)
$(CC) $(CFLAGS) -DFLAG main_executable_module.c -o main_executable_module.o
$(CC) $(LDFLAGS4) $(OBJS4) main_executable_module.o -o $@

$(EXE5) : $(OBJS5)
$(CC) $(LDFLAGS5) $(OBJS5) -o $@

$(EXE6) : $(OBJS6) $(DYN_LIB)
$(CC) -o $@ $(OBJS6) -L. $(DYN_LIB) $(LDFLAGS6)

.c.o :
$(CC) $(CFLAGS) $< -o $@ //это

build : $(SRCS3) $(EXE3)

build_with_macro : $(SRCS4) $(EXE4)

$(STAT_LIB) : $(STAT_OBJS)
ar rc $(STAT_LIB) $(STAT_OBJS)

$(DYN_LIB) : $(DYN_OBJS)
$(CC) -shared -o $(DYN_LIB) $(DYN_OBJS)

build_with_static : $(STAT_SRCS) $(STAT_LIB) $(SRCS5) $(EXE5)

build_with_dynamic : $(DYN_SRCS) $(DYN_LIB) $(SRCS6) $(EXE6)

clean :
rm -rf $(EXE3) $(EXE4) $(EXE5) $(EXE6) $(OBJS3) $(STAT_LIB) $(DYN_LIB)

rebuild : clean build

run3:
$(EXE3)
run4:
$(EXE4)
run5:
$(EXE5)
run6:
$(EXE6)

анон, поясни как работает этот makefile, особенно где стоит коммент «это».
и пикрил, например. Почему obj5 вызывается?/объявляется? Два раза? Что происходит при первом вызове?
Аноним 09/08/23 Срд 17:11:13 2799759 266
>>2799203
>Это вакуха для формошлёпа на Qt-дрисне
Будто что-то плохое, зарплата хороша
>В 99% будет микроэлектроника или какая-то очень специфичная предметная область где ты охуеешь
Ты будешь там также формошлепить, использовать готовый фреймворк и пулять байтики
>или гейдев, или хайлоад в яндексе.
Нахуя мне эти единичные случаи?
>А ты откликнись, это подразумевается.
А я откликался и только додики с заводов требуют вышку
Вот еще пример хорошей компании не требуется вышка
https://hh.ru/vacancy/82573527


требуют хорошую алгоритмическую базу, но это можно получить без вышки в 2023 году
Аноним 09/08/23 Срд 19:38:11 2800090 267
>>2799759
>только додики с заводов требуют вышку
Удвоил данный тезис.
Аноним 09/08/23 Срд 19:55:08 2800110 268
>>2799274
Нет. В функции int, а он и там и там 32 бита.
Аноним 09/08/23 Срд 21:47:27 2800242 269
>>2800110
Да, я вижу, что и там и там int! Я просто подумал, что мб ты сам додумаешься, что нужно просто расширить до ансайнед лонга, чтобы проверить теорию о SIMD инструкции, но не судьба, поэтому подсказка: расширь до ансайнед лонга и проверь.
Аноним 09/08/23 Срд 22:05:16 2800258 270
>>2800242
Можно вообще поступить как белые люди, а не как мы пытаемся сделать - sizeof(unsigned long long), и сравни это значение у gcc и у шланга.
Аноним 09/08/23 Срд 23:46:53 2800331 271
>>2800242
>>2800258
я вот не ебу чо там за инструкции такие вычурные, но может быть у чела просто шина 64 бита и силанг нативно в лонгах считает чтобы не женглировать байтами
мы же вообще ниху не знаем вводных по железкам, но при этом пытаемся построить какие то выводы

крч несерьезно все это
Аноним 10/08/23 Чтв 07:40:03 2800441 272
>>2799390
>Почему obj5 вызывается?/объявляется? Два раза?
obj5 нигде не вызывается. Твой $(obj5) — это переменная, её нельзя вызвать, это не функция.

>$(CC) $(CFLAGS) $< -o $@ //это
$(CC) — переменная, в которой содержится имя исполняемого файла компилятора
$(CFLAGS) — параметры компилятора
$<— это тоже переменная, в ней содержится имя первой зависимости
$@ — в этой переменной содержится имя цели
Аноним 10/08/23 Чтв 08:51:56 2800469 273
>>2800331
Ну поэтому для начала sizeof(), а потом копать дальше, если будет какая-то разница, ну либо не будет никакой разницы (тогда можно грешить на оптимизацию шланга).
Аноним 10/08/23 Чтв 09:18:40 2800478 274
>>2799759
>>или гейдев, или хайлоад в яндексе
А для этого что нужно подтянуть? Или в какую сторону развиваться?
Аноним 10/08/23 Чтв 13:52:35 2800705 275
>>2800478
Учишь фреймворк который написал яндекс
учишь фреймворк который написан под игры
формошлепишь по фреймворку
Аноним 10/08/23 Чтв 15:11:19 2800785 276
>>2800705
И что, и это всё? И для хайлоада даже асм не нужон? И не нужны алгосы с математикой? Чёт ты мне здесь прохладные какие-то заливаешь в уши.
Аноним 10/08/23 Чтв 15:47:45 2800876 277
image.png 144Кб, 1490x670
1490x670
image.png 177Кб, 1626x810
1626x810
image.png 138Кб, 1614x542
1614x542
>>2800785
Ты девопс для хайлода?
Алгосы нужны базовые
Математика базовая 1-11 класс

Если нужен человек с хорошей математикой, то это пишут очень четко в вакансии

https://hh.ru/vacancy/82829548



Так устроен рынок, а кто тут пишет обратное - это теоретики не выходившие на рынок 5 и более лет
Аноним 10/08/23 Чтв 16:15:40 2800944 278
>>2800876
И какая зп у этого типа? Это какой-то супермен им нужен, не меньше.
Аноним 10/08/23 Чтв 16:51:26 2801022 279
>>2800944
Такая же, ты сам выбираешь идти в проект потеть с математикой или идти в обычный

Мне вряд ли кто-то поверит, но у меня в проекте получали сеньеры 300к без математики и взяли одного задрота гения математики за 150к который расхлебывал все самое сложное

вот и думай
Аноним 10/08/23 Чтв 21:12:14 2801440 280
>>2800944
>какой-то супермен им нужен
Это заблуждение. Ты просто не знаешь вузовской математики и тебе кажется это чем-то космическим.
На самом деле то, что они требуют, решит любой студент 2-3-го курса технического ВУЗа в период сессии.
В математике не возникают новые фреймворки каждые 3 года. Там всё настоялось уже 100 лет, этому умеют учить. В математике реально достаточно вдумчиво прочитать один учебник и прорешать в нём задачки, чтобы шарить в этом раз и на всегда, на столетия вперед.
Аноним 11/08/23 Птн 07:13:46 2801701 281
>>2801440
Жопоглаз, ты почитай что на скринах написано. Им нужен не студент, а ветеран С++, Питона, гений науки-решатель нестандартных научных проблем (то есть любых проблем, что работодателю захочется). Им нужен ёбаный господь бог всесильный - затычка во всех дырках, обязанный делать всё и виноватый во всех недоделках, а зарплата - МРОТ.
Аноним 11/08/23 Птн 08:55:51 2801728 282
>>2801701
Я понимаю для чего им нужно решать нестандартные научные проблемы (как бы нефтесервисные компании ушли из России, а потому и кпд у скважин резко снизился), но мне всегда представлялось, что людей, способных решить подобные проблемы плюс продвинуть вперёд технологический уклад страны, нанимают не на hh, а, примерно, как Маск рассказывал, как он переманивал у Гугла типов для OpenAI; либо идут, допустим, в МФТИ и там просят профессора заняться этой проблемой. А тут, блять, hh!!! Это, конечно, показывает уровень менеджмента, которые тупо не могут допетрить, что люди с нужными им качествами с вероятностью, стремящейся к нулю, сидят на hh и ждут подходящую для них вакансию, у подобных суперменов уже и так всё на мази до конца их жизни, и единственный способ их нанять это чем-то заманить.
Аноним 11/08/23 Птн 09:00:53 2801731 283
ебать вы тут конспирологи политологи
а между тем это просто техническая вакансия для закрытия таски у хрюнделя
никто на нее не пойдет по понятным причинам, а дурака который пойдет сама хрюндель отсеит как долбоеба конченного
дефолтно в штат никто не требуется, а хрюндель должен чем то заниматься на работе кроме фильтрации чая через почки, поэтому шлепают такие вот технические вакансии
развели срачь на ровном месте
Аноним 11/08/23 Птн 09:02:50 2801732 284
Аноним 11/08/23 Птн 09:25:21 2801742 285
>>2801732
Тогда получается, что это дебса >>2800876 надо гнать ссаными тряпками отсюда, потому что он нам сюда принёс какой-то виртуальный кал.
Аноним 11/08/23 Птн 14:22:17 2802065 286
>>2801742
Я практик, человек который проработал не в 1 десятке компаний (меняю работу раз в год), а твои коллеги сидят на 1 месте по 15 лет и даже не понимают как устроен рынок в 2023

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

Тут 1 чел закончил 2 вышки и форсит что вышка нужна,
Другой выучил пайку радиодеталей и форсит что это база
третий выучил немецкий и форсит что только с немецким есть будущее в СИ
Аноним 11/08/23 Птн 23:44:00 2802983 287
В чем разница между С/С+/С++?
Нет не в количестве плюсов в конце, это я уже знаю.
Аноним 12/08/23 Суб 09:11:48 2803262 288
>>2802983
>В чем разница
В парадигме, С++ это ООП
Аноним 12/08/23 Суб 09:59:59 2803273 289
простите за базовый вопрос, только учусь, но нагуглить почему-то ответ не получается
вот у меня есть проект, в котором есть файл cmakelists.txt я его пропускаю через cmake, создавая "MinGW makefiles", потом значит из MinGW использую утилиту сборки mingw32-make и получаю приложение
а если мне требуется сменить компилятор на Clang, то какие шаги будут с ним, чтобы из того проекта с cmakelists.txt получить приложение?
Аноним 12/08/23 Суб 10:23:46 2803288 290
>>2803273
Не знаю, как именно в cmakelist и mingw, но для утилиты make в линуксах нужно просто сменить компилятор в условиях makefile. Скорее всего и у тебя должно быть что-то подобное.
Аноним 12/08/23 Суб 10:36:22 2803292 291
Аноним 12/08/23 Суб 10:48:42 2803300 292
>>2803262
Эот хорошо или плохо?
Аноним 12/08/23 Суб 10:52:39 2803304 293
cmake.png 8Кб, 495x348
495x348
>>2803288
> но для утилиты make в линуксах
я в винде
> set(CMAKE_C_COMPILER clang)
так мне не как написать файл, а как скомпилировать уже готовый проект

cmake он на пике что должен для clang делать?
в каталоге LLVM/bin я не нахожу аналог mingw32-make, поэтому и спрашиваю как в нем эта цепочка происходит
Аноним 12/08/23 Суб 10:59:01 2803309 294
>>2803300
А дрочить это хорошо или плохо? А анальный секс это хорошо или плохо? А классический секс это хорошо или плохо? А БДСМ и makedome это хорошо или плохо?
Это ни хорошо и ни плохо, это всего-лишь различные взгляды на утоление своих похотливых хотелок.
Аноним 12/08/23 Суб 12:47:37 2803388 295
>>2771440
Ну дык логика объявления типов в Си такова, что ты клеишь операторы (скобки, звездочки, []) к имени ровно в таком порядке, в каком их надо будет применить, чтоб получить ту простейшую хрень на выходе слева (int, double, struct psina и т.д.)
Аноним 12/08/23 Суб 12:49:38 2803396 296
>>2802983
Что еще за C+? TempleOS чтоли?
Аноним 12/08/23 Суб 13:06:12 2803416 297
>>2802983
требуется разработчик C/C++/1С/C#
Аноним 12/08/23 Суб 13:11:21 2803424 298
>>2790826
Ну, исторически Си появился раньше, а С++ изначально был его расширением, чего не скажешь о последних стандартах, но по-прежнему уделяется внимание тому, чтоб легаси можно было как-то поддерживать/мигрировать, поэтому условная обратная совместимость есть, и нестрого говоря Си можно назвать подмножеством C++. Но...

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

Во-вторых, в C++ есть фичи, которые служат настолько исчерпывающей альтернативой многим сишным подходам, что мешать их в одном коде концептуально не по-пацански.

Но учить Си имеет смысл как для будущего сишника, так и для будущего сиплюсплюсника, потому что Си, чисто как язык, можно полностью охватить буквально за пару месяцев, чего не выйдет с C++ (потому что C++ - это путь, на котором ты можешь уже весьма продвинуто программировать, и еще не догадываться о всех приколах языка). Си дает некую законченную базу, некий скелет, который если не полностью подготовит, то поможет не растеряться, когда столкнешься в плюсах с тем, от чего обсирается какая-нибудь скриптомакака. Как минимум в работе с аллокатором. Ну и бонусом гештальт закроешь, что освоил твердую ступеньку.

Алсо, иногда Си пригодится даже более непосредственно. Например, когда работаешь на крестах с какими-то системными либами. Там, где вступает в дело пресловутая "условная совместимость" языков.
Аноним 12/08/23 Суб 13:11:46 2803425 299
Аноним 12/08/23 Суб 13:35:48 2803447 300
>>2803309
>А дрочить это хорошо или плохо? А анальный секс это хорошо или плохо? А классический секс это хорошо или плохо? А БДСМ и makedome это хорошо или плохо?
Да.
Аноним 12/08/23 Суб 13:37:17 2803448 301
>>2803416
Согласен. Подписываю контракт не читая.
Аноним 12/08/23 Суб 22:33:13 2804291 302
>>2803424
>Как минимум в работе с аллокатором.
в плюсах даже операторов нет блять, только нью и делит, против маллока каллока и реалока / фри
хули тут так мало? ты так красиво расписываешь за кресыт но суть проста кресты ооп говно и ненужны, ооп это потребность кабана а не программиста, кабан хочет тяп ляп и в продаккшин
оправдывайся
Аноним 13/08/23 Вск 12:04:03 2804550 303
Мне почему то ломает мозг что

int x = 10;
int y = x++;
х станет 11 но у останется десяткой

Почему так? Моя простая житейская логика ломается об эту операцию. Ведь у должно стать 11 потому что задается х=10 и потом прибавляется 1.
Аноним 13/08/23 Вск 12:10:22 2804556 304
>>2804550
Это нердовский шорткатик для сокращения количества строчек, лол.
Аноним 13/08/23 Вск 12:15:52 2804565 305
>>2804556
Ну я уже разобрался что у сходу делает мат операцию и говорит системе что х теперь будет 11. Шорткат да но хуйня какая то, если я хочу чтобы переменная что то делала с другой переменной я лучше это отдельно сделаю. А то пройдет неделя и я забуду нахуй что я там накодил и почему нихуя не работает.
Аноним 13/08/23 Вск 12:21:08 2804573 306
>>2804550
int y = ++x;
если хочешь сначала вычислить инкремент до всех остальных операций но это неточно я не проверял
Аноним 13/08/23 Вск 12:27:44 2804580 307
ну и в крайнем случае для управления приоритетом операций есть скобки (вот эти вот)
Аноним 13/08/23 Вск 12:30:50 2804584 308
>>2804565
Так и есть, кто-то любит ввернуть такое и радуется, кто-то пишет в умных книжках, что лучше многословнее, но однозначно. Вечная хуйня.
Аноним 13/08/23 Вск 12:31:18 2804586 309
>>2804565
Так и есть, кто-то любит ввернуть такое и радуется, кто-то пишет в умных книжках, что лучше многословнее, но однозначно. Вечная хуйня.
Аноним 13/08/23 Вск 12:36:07 2804591 310
>>2803416
>c 1978 никак до D не дойдут.
ле_маркетолог_фейс.жпег
Аноним 13/08/23 Вск 12:39:59 2804595 311
>>2804584
>>2804586
да тут нет никакого разночтения
эти сахара однозначно читаются, тут дело скорее в том что ++ это самостоятельная инструкция вычисления, а паравозики присваиваний хороши только без вычислений

например
int a = b = c = d = 1;
это читабельный паравоз и все тут предсказуемо

int a = b = c = d = d + 1;
это читабельный паравоз с непредсказуемым результатом

у анона второй вариант и поидее надо просто поставить скобки для приоритета вычисления над присваиванием
int a = b = c = d = (d + 1);
ну или короткая запись
int a = b = c = (d++);

но конечно всегда лучше отдельно сделать инкремент, чтобы потом не дебажить свой говнокод
d++;
int a = b = c = d;
Аноним 13/08/23 Вск 13:24:21 2804622 312
>>2804595
я бы даже добавил что в языке конечно как бы и присутствуют постфиксные и префиксные операции как раз для разрешения таких вот случаев, но на практике префиксы я почти не вижу потому, что нахуя в голове хранить таблицу приоритетов, когда можно отдельной строкой двинуть счетчи или поинтер и не забивать голову всякой хуйней как скриптомакаки всякие
Аноним 13/08/23 Вск 18:35:53 2804991 313
>>2770768 (OP)
Все привет в этом чате. У меня проблема -- я тестировщик, которому временами нужно немного править с/c++ программы, в основном внутренний инструментарий конторы. Из всех знаний по оным языкам -- ОДНА прочитанная книга про С (синяя такая, не помню автора) в уневере, пару фэйловых попыток начать изучать c++ по белой книжке с волной (Страуструп). Могу дебажить код в gdb. знаю про valgrind и fuzzing. Короче анон, я тут что бы учиться программировать -- профессиональным разрабом я уже не стану может это к лучшему.
Спасибо за тред.
Аноним 13/08/23 Вск 22:47:26 2805320 314
>>2804991
Пупсик, вопрос то в чем?
Аноним 13/08/23 Вск 23:30:29 2805346 315
Как у сишки с рабочей нагрузкой и зарплатами? На работе очень ебут, по сравнению с остальными языками? Платят лучше или примерно одинаково?
Аноним 14/08/23 Пнд 00:58:58 2805378 316
>>2805346
зависит от того как ты себя продал
можешь в мыле ебашить за миску риса, а можешь и хуи пинать за наносеки
так что умение себя подать/продать не менее важная хуйня чем профскилы
Аноним 14/08/23 Пнд 07:03:56 2805436 317
>>2805346
ну язык простой, поэтому мозгоебли почти не бывают
дают задание, пилишь его дня три, попивая кофеек офисный и заедая сибасом на обед
попердел пару дней в кресло, скидываешь работу на отдел тестирования и пошел на следующий круг
зп 240к
Аноним 14/08/23 Пнд 10:20:15 2805508 318
А на C есть что то вроде браузерной консоли как в жаваскрипте? Ну, если код на ходу нельзя менять без компиляции, то хотя бы чтобы можно было туда команды посылать и получать результаты выражений.
Аноним 14/08/23 Пнд 10:24:16 2805511 319
>>2805508
бля ты чо не знаешь философию Си? если тебе нужен какой то велосипед - сделай его сам, хуйлан
Аноним 14/08/23 Пнд 10:35:03 2805523 320
Аноним 14/08/23 Пнд 10:42:10 2805531 321
Аноним 14/08/23 Пнд 12:11:45 2805641 322
О великие мастера C.
Я хочу разобраться.

Как мне сделать функцию, которую можно вызвать потом и она продолжится с того места где остановилась.

Единственное решение что я могу придумать - это извращения с конечными автоматами, типа:

void foo(fooCtx ctx){

switch(ctx.state){
case 1 : // чет на этот шаг
break;
case 2 : // чет на этот шаг
break;
case 3 : // чет на этот шаг
break;
}
}

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

Пожалуйста, поделитесь мудростью.
Аноним 14/08/23 Пнд 12:17:56 2805647 323
>>2805641
>продолжится с того места где остановилась.
Чигобля?
Аноним 14/08/23 Пнд 12:32:05 2805665 324
>>2805647
Ну. Вот в шарпе, допустим, есть вот такая конструкция:

IEnumerable<int> GetInts(int count){
for(int i = 0; i < count; i++)
yield return i;
}

Ну так вот. Каждый раз, когда я буду обращаться к GetNext() - меня перебросит в метод GetInts и выполнение продолжится с того места где был прошлый yield return.

Т.е. я могу вот так вот сделать:

IEnumerable<object> DoSomething(){

var now = DateTime.Now;

while(now.AddSeconds(10) >= Datetime.Now)
{
yield return null;
}

// какой-то полезный код.

}

Ну а сверху я вот такие вот "подзадачи" где-то храню и обхожу. И все в одном потоке.

А вот как на си подобное сделать - я не понимаю.
Аноним 14/08/23 Пнд 12:37:18 2805675 325
Аноним 14/08/23 Пнд 12:37:31 2805676 326
>>2805665
>А вот как на си подобное сделать - я не понимаю.
Никак, я такую шляпу первый раз вижу, пиздец шарподауны ебанулись. Сохраняй состояния, используй глобальные переменные.
Аноним 14/08/23 Пнд 12:39:39 2805681 327
>>2805675
Так а нахуя это нужно то? Ебани потоков, нет говно какое то нужно в язык тянуть
Аноним 14/08/23 Пнд 12:41:50 2805686 328
>>2805676
>глобальные переменные
ну точно скрипткидс
Эта хуита для конкурентности придумана, чтобы даже на одном ядре несколько задач выполнялись, хотя бы попеременно.
Аноним 14/08/23 Пнд 12:43:51 2805691 329
>>2805686
>чтобы даже на одном ядре несколько задач выполнялись, хотя бы попеременно.
Ты наверное pthread не осилил?
Аноним 14/08/23 Пнд 12:44:18 2805692 330
>>2805686
>чтобы даже на одном ядре несколько задач выполнялись, хотя бы попеременно.
Ты наверное pthread не осилил?
Аноним 14/08/23 Пнд 12:45:04 2805693 331
>>2805681
Потоки не гарантируют, что задачи будут в один временной промежуток выполнены. У тебя может фактически в один момент одно ядро работать по разным системным причинам.
Аноним 14/08/23 Пнд 12:47:14 2805705 332
>>2805693
В обще по хую, уноси свое не нужное
Аноним 14/08/23 Пнд 12:47:46 2805707 333
>>2805693
Т.е с потоками основной примитив это pthread_join делать
Аноним 14/08/23 Пнд 12:48:09 2805708 334
>>2805681
Ну. Я же написал. Вот у меня контролллер. Какой-нибудь дешевый китайский ARM.
В моем распоряжении только одно ядро.
Мне надо выполнять какие-то задачи. Собственно, какие-то задачи типа чтения с подключенных датчиков - могут долго выполнятся. А надо еще чтобы сверху кто-то подключился и забрал то что уже собрано.
Если программа будет ждать, пока с датчика не соберутся данные - она так и повиснуть может навечно, если это какой-нибудь датчик который отсылает данные снизу вверх при изменении значения.
А ведь работы много разной. Еще надо к какому-нибудь NTP серверу подключиться и часы подстраивать. Нужно проверять дискретные входы-выходы и фиксировать их состояние в журнал и т.д.
И хотелось бы, чтобы на одном потоке, чтобы 1. Не возиться с блокировками и прочим доступом к разделяемым ресурсам. 2. Чтобы у устройства ресурсы просто так не кушать.
Аноним 14/08/23 Пнд 12:52:25 2805716 335
>>2805708
> Вот у меня контролллер
Ну так он прерывания дергает и прочая железячная специфика там, поток заснул и ждет пока его железо дернет, ты не туда копаешь короче.
Аноним 14/08/23 Пнд 12:52:52 2805717 336
>>2805708
>Ну. Я же написал. Вот у меня контролллер. Какой-нибудь дешевый китайский ARM.
>В моем распоряжении только одно ядро.
>Мне надо выполнять какие-то задачи.
Используй ассемблер, в частности инструкции SIMD(single instruction, multiple data). Не знаешь асм - копай в свойства компилятора, чтобы он задействовал simd инструкции, либо делай ассемблерные вставки в Си.
Аноним 14/08/23 Пнд 13:03:37 2805729 337
>>2805716
>>2805717
Чет я не уверен в этом всем.

Хотя я наверное придумал, как можно что-то похожее сделать.

Думаю организую EventLoop и на его базе вот такую логику построю.

Типа
// events.h

typedef void event_handler(void& context);

void event_enqueue(event_type e, event_handler& handler, void& context);
event event_dequeue();

& - указатели, я все еще не знаю как в макабе звоздочки ставить чтобы не курсивом выделялось.

и в основном приложении - буду их обрабатывать.

Просто громоздко как мне кажется получится. Но раз аноны которые за си шарят говорят, что просто продолжить с того места где остановился - нельзя, видимо только так.
Аноним 14/08/23 Пнд 13:08:51 2805733 338
>>2805729
Возьми многороточную либу https://libuv.org/
Нода на ней работает, быдешь перед тянками хвастаться
Аноним 14/08/23 Пнд 13:16:17 2805737 339
>>2805733
Та мне не перед тянками же хвастаться.
Просто я прикладной кококодер, которого перекинули на железячный проект, а там все на си и надо с нуля писать.
Аноним 14/08/23 Пнд 13:20:55 2805744 340
>>2805729
>что просто продолжить с того места где остановился
Используй рекурсию. Это же очень похоже на рекурсию.
Аноним 14/08/23 Пнд 14:56:05 2805892 341
ля притащили какую то ебалу в тред
ну хочешь велосипедить ебани себе отдельным тредом прослушку сокета блять и дергай оттудова сигналы если стандартный механизм прерываний для тебя какая то хуйня
ну а так то аноны правы ты просто описываешь стандартные прерывания, ты чота делал хуяк сискол, твой процесс уснул и ждет когда его разбудят после сискола в этот момент врывается мамка одмина со своим жирным процессом и ты превращаешься в зомби
Аноним 14/08/23 Пнд 15:02:03 2805903 342
>>2805665
>А вот как на си подобное сделать - я не понимаю.
Чего тут понимать, делаешь так же как в шарпе сделано. Изучаешь вопрос и делаешь. Ну или можешь подождать пока за тебя сделают какой-нибудь boost::yield. Удачи.

Видишь ли, у тебя концептуальная ошибка. Си это не абстрактный скрипт как шарп, где под капотом делают что угодно, Си это реальный язык железа, ассемблер. Пока в инструкциях процессора не появится твой yield, его не будет и в Си, не может быть. Всё остальное реализуется на Си, а не в Си, то есть ты либо реализуешь сам, либо ищешь уже написанную библиотеку.
Аноним 14/08/23 Пнд 15:53:43 2806016 343
>>2805903
Так на ассемблере я бы просто положил в стек адрес следующей инструкции и нужные аргументы и сделал ret. А потом бы достал из стека следующую инструкцию заполнил регистры и продолжил бы с того места где остановился. Никаких проблем в ассемблере с этим нет.

А в си - я так просто это сделать не могу, как я понял.
Аноним 14/08/23 Пнд 16:04:58 2806028 344
>>2806016
похоже на рекурсию
ебни асмовставки епта
Аноним 14/08/23 Пнд 16:11:59 2806042 345
>>2806016
Ты не понимаешь как работает компьютер, железо, поэтолму не понимаешь акк работает си, потому что это одно и то же, а ты тупая скрипто-макака.

В данном случае ты спизданул тупость. Стек это аппаратная возможность - железо, он аппаратно только один, поэтому функции сохраняют и восстанавливают состояние только друг за другом - при вложениях. А ты хочешь произвольно оставить на потом, для этого нужно другое место хранения данных кроме общего стека, а компьютер так не работает, нет никакого другого стека, никаких других мест, только один общий, поэтому только вложения друг за другом и никак иначе, никаких "отложить на потом когда захочу" нет и быть не может.
Аноним 14/08/23 Пнд 16:28:22 2806060 346
>>2806016
> потом бы достал из стека следующую инструкцию заполнил регистры и продолжил бы с того места где остановился
Ты описываешь стандартный возврат из ф-ции. Вызываешь в своей ф-ции ту ф-цию, которая тебе нужна. Вызванная тобою ф-цию делает то, что ты от неё хочешь, и после этого она возвращает управление той ф-ции, из которой ты её вызвал. Если тебе нужно вернуть какое-то значение из ф-ции, то присваиваешь переменной вызов ф-ции. Если тебе это нужно энтое кол-во раз, то организуешь рекурсию, которая будет вызываться энтое кол-во раз, пока не наступит условие выхода из рекурсии. Если тебе это сложно, то организуй цикл с вызовами одной ф-ции из другой, только в этом случае нужно продумать то, как ты будешь сохранять значения, которые тебе будет возвращать вызванная ф-ция (можно для этого создать массив).

Ты сформулируй по-человечески то, что тебе нужно. Либо напиши алгоритм на псевдокоде, только так, чтобы мы все поняли, что этот твой алгоритм должен выполнять.
Аноним 14/08/23 Пнд 16:48:02 2806099 347
>>2806060
>можно для этого создать массив
или статиком объйвить переменную
статики пробрасываются по уровням стека
Аноним 14/08/23 Пнд 17:04:37 2806134 348
>>2806099
Можно и список создать, и дерево, тем более, если организовывать рекурсию, и неизвестно изначально сколько данных нужно хранить. Всё зависит от того, что ему нужно в итоге получить.
Аноним 14/08/23 Пнд 17:13:04 2806155 349
>>2806134
да, увы, анон измельчал и не может даже сформулировать чо он хочет сделать, если уж человеки не понимают, то как машина может понять?

а вот такой вопрос у меня назрел
разве нет способа ретурна из макроса не используя глобалку?
ну если учитывать что int a = {printf("huy pizda"),3}; тут а будет 3, то оборачивая такую хуйню в макрос через оператор запятая у меня выходит только глобалку на место тройки подставлять, а без глобалки туда ретурн как то можно воткнуть?
Аноним 14/08/23 Пнд 17:25:18 2806179 350
>>2806155
Ну, объявить макрос с параметром, а когда вызsвваешь макрос, то указываешь то, что нужно подставить на место этого параметра. Типа такого:

#define MACROS (VAR) \
a = {pprintf("huy pizda"),VAR};

Вызов макроса делается так:
MACROS(3);
Аноним 14/08/23 Пнд 17:37:30 2806194 351
>>2806179
да ну не так топорно же
я хочу что то по типу
#define MACRO(var) {тут чота делаем,тут результат вычислений}

int a = MACRO(char); например

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

я вот спрашиваю есть ли вариант без глобалки такое провернуть?
ясен хуй это макрос не однострочный по типу
#define sum(a,b) (a+b)
а многострочный со своей там логикой вычислений и ветвлениями
Аноним 14/08/23 Пнд 17:46:12 2806209 352
>>2806194
Анон, я тебе тут не помощник, потому что сам не особо шарю в макросах, но Столяров упоминал конструкцию с do {} while(условие) в теле макроса, возможно, это тебе поможет.
Аноним 14/08/23 Пнд 18:34:22 2806307 353
В шапке есть какие нибудь тестики чтобы проверить себя? Там напиши то-то или так то. У меня фантазии нет, только аутизм.

Ну и сразу же спрошу есть ли какой нибудь степ-бай-степ гайд по вкатингу. Самую основу уже выучил, синтаксис и типы даных, конвертеры всякие делал, рандом и базовый матан делал. Все на пару строчек но азы показало.
Дальше вроде бы надо про арреи и указатели, наверное.
Аноним 14/08/23 Пнд 18:40:53 2806325 354
Учусь в спираченом вижуал студио 22 года, немного перегружена но работает.
Аноним 14/08/23 Пнд 18:44:42 2806333 355
Ленивый залётный хуесос на связи. Подскажите, мне нужна хэш мапа. Мне надо самому искать код с функцией (не реализовывать же самому), делать с ним файл и это использовать или в дефолтной библе что-то?
Аноним 14/08/23 Пнд 18:45:03 2806334 356
>>2806325
кодю в джини единственный недостаток - хоткеи только в энг раскладке работают
ебал в рот эти студии с велосипедами из говна, то блять она не знает чо такое джава хотя секунду назад знала, то нахуй кнопка компила пропала и хуй ее назад поставишь ай билять как же сука я заебался с этим всем

мечтаю завязать лайтовый тулчейн из текстовиа шелскриптов и консольки в одной хуйне, большего то и не надо
Аноним 14/08/23 Пнд 18:47:52 2806342 357
>>2806333
upd: может не так выразился. Банальный словарь, где ключом будет восьмибитный число (0b00000001 например), а значение - строка. У вас такое есть?
Аноним 14/08/23 Пнд 18:51:48 2806353 358
>>2806342
у кого у вас то? ты тут один все написано на си блять, ищи решение на стаке
Аноним 14/08/23 Пнд 18:55:04 2806358 359
>>2806353
"У вас" имелось в виду из коробки. Ладно, понял, пошёл искать.
Аноним 14/08/23 Пнд 19:00:18 2806364 360
>>2806358
ну ты не дал длину строки так что я затрудняюсь сказать есть ли такое изкаробки
но если строка коротенькая и убирается например в 8 байт тогда твоя хэш мапа это просто массив дщнгов или даблов, как хочешь
если строки произвольного размера тогда я бы юзнул массив поинтеров на строки, но тогда ты либо юзаешь однобайтный ключ как индекс массива, либо восьмибайтный как адрес строчки, но строчки будут произвольно длинны
Аноним 14/08/23 Пнд 19:01:06 2806366 361
>>2806364
>дщнгов
лонгов
быстрофикс
Аноним 14/08/23 Пнд 19:03:40 2806371 362
>>2806364
Это будет алфавит. Я перепутал,
ключ - char ('a', 'b', etc),
значение - числа (0b00000001, 0b00000010 etc).
Аноним 14/08/23 Пнд 19:06:20 2806372 363
>>2806371
ассоциативные массивы в простонародье
я всегда обхожу эту тему стороной, но вроде изкаробки есть
я просто не понимаю практического применения
какой даун будет вытаскивать число через строковые ключи, когда есть например перечисления с нормальным синтаксисом?
Аноним 14/08/23 Пнд 19:07:48 2806375 364
>>2806371
upd:
строки это числа - можешь в эту сторону подумать и понять что это снова обычный массив получается
Аноним 14/08/23 Пнд 19:16:45 2806380 365
>>2806372
Ну смотри. Я ебусь с МК и лсд дисплеем. В дисплей, если по простому, данные записываются передачей определённых чисел. Я передаю один uint8, который обозначает определённый char в дисплее, и дисплей отрисовывает этот char.
Я хочу сделать словарь/ассоциативный массив/похуй что, что даст возможность получать по ключу значение (тот самый uint8), что бы передавать в функцию строку, а функция будет бежать по этой строке и по значению знака доставать из словаря значение для отправки в дисплей. Вот такое хочу сделать.
Аноним 14/08/23 Пнд 19:23:53 2806389 366
>>2806380
да делай, флаг тебе в руки
повторяю, буковки это числа, вообще все это числа, это просто биты, а как ты их декодируешь дело десятое
например

int a[100] = {0};
a[97] = 1;
if( a['a'] ) printf("huy pizda");

все работает потому что 'a' = 97 побитовое представление сам вычислишь если тебе надо.
Аноним 14/08/23 Пнд 19:28:35 2806398 367
>>2806389
Вроде понял. Благодарю.
Аноним 14/08/23 Пнд 21:10:48 2806515 368
Аноним 14/08/23 Пнд 21:23:15 2806526 369
>>2806325
>немного перегружена
>немного
Ты еще говноподелия от ДжетБрейнса не видел, вот там пиздец адов
Аноним 15/08/23 Втр 02:47:49 2806728 370
Недавно наткнулся на Zig и ахуел:
- Легкий в понимании и с современным синтаксисом
- Структуры с функциями больше никакого дроча с организацией кода/объектов/мимикрированием под ооп
- Ошибка как возвращаемое значение никаких непонятных стактрейсов, точно видно что и где упало
- Comptime - настоящий убийца препроцессора и то, как должно было выглядеть развитие препроцесооров
- Есть асинхронщина из коробки, не привязанная к имплементациям ОС
- Встроенное тестирование ждал хоть какого то адекватного тестинга пож системщину джва года
- Своя кросс-билд система пока make, cmake, пакетный менеджер уже пилится
- Встраивается в сишный код хоть сейчас начинай частями переписывать свою байтоёбщину
И много чего еще.

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

Или я просто поддался хайпу?
Аноним 15/08/23 Втр 04:21:40 2806731 371
>>2806526
Я видел, WebStorm, иде-шка для javascript. Сначала кринжанул с уродливого мыльного ненативного васянского гуя с инопланетным устройством и кравиатурными комбинациями для алиенов, после аккуратной красивой студии реально противно. Но потом посмотрел на vscode и увидел то же самое, только намного хуже, и главное функционально нихуя не работает, а WebStorm анализирует любой файл и тут же выводит структуру, подсказки, всё на свете. А потом открыл в нём страницу от гугла с мегабайтами обфусцированной жс-портянки и WebStorm тут же всё отформатировал, буквально мгновенно и можно тут же скроллить и смотреть, без лагов даже (хотя проц в фоне пердит). Итого, совершенно волшебное чудо, летает как ракета, и работает как никто другой. Единственная придирка - мыльные шрифты, ну стандартная линупсо-эппло-гейпараша сделанная с расчетом на 4к мониторы, а на меньшее плевали.
Аноним 15/08/23 Втр 05:42:18 2806736 372
>>2806372
> ассоциативные массивы в простонародье
> я просто не понимаю практического применения
например, у тебя есть игра, в ней есть монстры, которые имеют id и оно как раз будет строкой, т.к. ты не можешь заменить его числом, потому что если пилить на такую игру еще и моды, то там такой ад начнется, поэтому используют id строковые, бывает как просто имя того самого монстра типа "red_dragon"
Аноним 15/08/23 Втр 05:46:22 2806737 373
>>2806728
> Как бородатые байтоёбы на это смотрят, что говорят?
Да, лучше, но долго будет отвоевывать себе пространство
Опять же уже есть готовый rust, который уже давно готов и уже отвоевал себе часть ниши, поэтому зигу будет еще сложнее
Аноним 15/08/23 Втр 05:48:48 2806738 374
>>2806728
>только без боли и с нужными вещами
зигодоун спокундрий, если у тебя жопа болит от сишки пиши на питухоне
Аноним 15/08/23 Втр 05:51:13 2806739 375
>>2806736
>которые имеют id и оно как раз будет строкой, т.к. ты не можешь заменить его числом
окей зумер
Аноним 15/08/23 Втр 08:20:19 2806761 376
>>2806731
>всё отформатировал
Все что угодно может форматировать код, всегда эту залупу отключаю.
>vscode
В 100 раз лучше ДжетБрейновского говна
Аноним 15/08/23 Втр 09:14:10 2806775 377
>>2806736
Зачем строкой, есть же GUID, это обычное целое беззнаковое число, только 128‐битное. Уникальность гарантирована, причём так, чтобы пересчитать все атомы во вселенной.
Аноним 15/08/23 Втр 09:34:49 2806782 378
>>2806761
>>vscode
>В 100 раз лучше ДжетБрейновского говна
А теперь пруфани. Как в vscode сделать для html файла со свтроенным javascript: автоформат текста, intellisense, всплывающую справку по всем функциям, анализ кода с сообщениями где не так. Со скриншотами, а лучше видео или анимашку.

В WebStorm всё из коробки работает, а в твоём "в 100 раз лучше" что? Нинужно? Пук? Спасибо за внимание.
Аноним 15/08/23 Втр 09:47:38 2806786 379
>>2806728
У тебя подход неверный! Циг хорош, но чтобы его по достоинству оценить, ты должен столкнуться с проблемами в системном программировании, которых лишён этот самый циг. Это как после кодинга на асме ты пересаживаешься на Си и ощущаешь всю мощь и изящество Си, ведь, по сути его и создавали для того, чтобы не кодить огромные системы (UNIX) на асме.
С цигом и растом та же ситуация - если ты не пердолился с проблемами, которые возникают при кодинге на Си и плюсах, то как ты поймёшь весь "кайф" кодинга на языках, которые призваны решить проблемы Си и плюсов?
Аноним 15/08/23 Втр 10:06:03 2806794 380
>>2806526
Видел, там еще хуже. Поэтому плюнул сразу же как увидел что его рекомендуют. Дауны спецом газлайтят я клянусь.
Аноним 15/08/23 Втр 10:09:38 2806796 381
>>2806782
>javascript
у вас вроде был отдельный топик, что вы тут делаете со своими языками сценариев для покраски кнопочек?
Аноним 15/08/23 Втр 12:38:45 2806914 382
>>2806782
>для html файла со свтроенным javascript
Ебать ты поехавший. Сам ищи, плагин какой нибудь для VS нужен
Аноним 15/08/23 Втр 16:04:21 2807210 383
>>2806914
Ну вот видишь, говно твой vscode.
Если честно, я его пробовал только за название, думал будет выглядеть как студия, а оказалась та же самая страшенная вебня как и жидбрейны. Только у тех оно хотя бы работает, а это даже не работает. Вот и всё.
Аноним 15/08/23 Втр 16:10:45 2807221 384
>>2806914
И касательно цитаты, я открывал и чистые жс-файлы (плагин для обсидиана) и тоже всё мертво, тупо блокнот голый, ни та что не реагирует, хотя плагин вроде установил этот линтер-хуинтер, но толку ноль. Зато предложил копилот, а потом гордо отрепортил что рахам не положено, мусорное дерьмо.
Аноним 15/08/23 Втр 16:22:01 2807232 385
>>2807210
Работает. Просто ты не сумел настроить.
Тебе нужно поставить несколько плюйгинов:
C/C++ раскрасит весь сикод и позволит отлаживать программы, устанавливать точки останова мышкой
Hex Editor — чтобы смотреть бинарные дампы
Makefile Tools — чтобы собирать проекты утилиткой make
Memory View — чтобы смотреть память программы
Аноним 15/08/23 Втр 16:26:45 2807234 386
image.png 13Кб, 438x199
438x199
Недавно начал изучать Си, и у меня встал вопрос по возвращению массива, так вот, в чём разница между обычный массивом и указателем на пике?
Аноним 15/08/23 Втр 16:27:39 2807235 387
>>2807232
>Hex Editor — чтобы смотреть бинарные дампы
мне проще делать objdump > dump.txt
>Memory View — чтобы смотреть память программы
а это нахуя?
мимо
Аноним 15/08/23 Втр 16:30:41 2807236 388
>>2807234
в том что массив хоть и использует механизм указателей сам таковым не является (почти цитата из K&R)
Аноним 15/08/23 Втр 16:32:42 2807238 389
>>2807235
>мне проще делать objdump > dump.txt
Чтобы во время отладки можно было навести мышку на переменную или указатель и во всплывающей подсказке увидеть её содержимое.
>Memory View — а это нахуя?
Чтбы смотреть память по адресу прямо во время отладки. Например, что функции в стэк кладут.
Аноним 15/08/23 Втр 16:39:11 2807242 390
>>2807238
для этого я использую макросы на дебаг которые срут в консольку этими данными прям в рантайме
щас бы 500 приложений в тулчейне иметь чтобы обойти стандартный притф(интересующая хуйня)
Аноним 15/08/23 Втр 16:48:37 2807251 391
>>2807232
Так он ЖС ковыряет, а плугин на ВС не додумался поискать
Аноним 15/08/23 Втр 16:53:55 2807258 392
>>2807242
>для этого я использую макросы на дебаг которые срут в консольку этими данными прям в рантайме
О вкусах говна не спорят, но иногда приятно ебануть бряк и через мышку посмотреть, а макросопердолинг это такое.
Аноним 15/08/23 Втр 16:54:03 2807259 393
>>2807242
Мало того, что это засорение кода, которое требует перекомпиляции на каждый чих, так ещё и не выводит всю структуру целиком, а только отдельные переменные или поля. О выводе стека вызовов остаётся только мечтать.
Ну и макросы эти не работают в ситуации когда нужно отловить изменение памяти по адресу (поставить точку остановка).
Аноним 15/08/23 Втр 16:58:08 2807267 394
>>2807259
Ну а чо, заебись, на моей старой пеке v8 5 часов собирается, как раз 2 макроса можно за день вставлять.
Аноним 15/08/23 Втр 16:59:43 2807268 395
>>2807259
так я микросервисное пишу у меня компил 0 наносек
о выводе изменений не понял тебя и про стуктуру то же непонял
может ты не знаешь как макросы работают? там для дебага достаточно вставок, в том числе имена полей, имена функций в которых крутишься
я еще таймштампы запилил простенькие чтобы чекать профайлинг без профайлинга

кароч чо я тут с вами вожусь, ковыряйте мышкой, я так то не против
Аноним 15/08/23 Втр 17:02:21 2807274 396
>>2807267
работать не пробовал?
Аноним 15/08/23 Втр 17:04:08 2807276 397
>>2807274
Пробовал, мне не понравилось. Пилю свои проджекты.
Аноним 15/08/23 Втр 19:12:53 2807497 398
Епты, какие макросы? Какие плагины? gdb и тысячи оберток для него для кого придуманы?
Аноним 15/08/23 Втр 20:01:46 2807528 399
>>2807268
>о выводе изменений не понял тебя
Кто‐то или что‐то записал в память по адресу. В этот момент нужно чтобы программа остановилась. Я хочу знать какая функция это сделала, распечатать стек вызовов, посмотреть регистры процессора и всё такое прочее.
>про стуктуру то же непонял
struct student {
char firstName[50];
char lastName[50];
};
struct student s;

Не работает:
printf("%s", s);

А в отладчике print s работает.
Аноним 15/08/23 Втр 20:05:07 2807530 400
>>2807497
Одна из этих обёрток называется VSCode + C:\>C++. Всё нормально с плюйгинами.
Аноним 15/08/23 Втр 20:17:36 2807537 401
image.png 407Кб, 1024x850
1024x850
Аноним 15/08/23 Втр 20:26:11 2807546 402
image.png 85Кб, 300x168
300x168
>>2807528
>Не работает:
>printf("%s", s);
все ясно по поводу уровня вашей аргументации
Аноним 15/08/23 Втр 20:48:49 2807558 403
>>2807528
мне вот лень с тобой спорить, но я думаю тебе будет интересно узнать, что дауны дающие доступ всем подряд к глобал структурам обязаны страдать и заниматься вот такой контрпродуктивной хуетой как
>Я хочу знать какая функция это сделала, распечатать стек вызовов, посмотреть регистры процессора и всё такое прочее.
очевидно проблема не в том что тебе ниудобна пульнуть в макрос поинтер на структуру и разложить ее внутри вариатиками на свои принты, а в том что архитектура твоего монолита говно

еще меня повеселила твоя аргументация в духе "дядечки написали волшебную палочку я взмахнул и все работаит а я вот написал и ниработаит паитаму ты ниправ"

посерьезнее будь
Аноним 15/08/23 Втр 21:41:07 2807580 404
>>2807558
Чёт не понял. Каким образом возможность отладчика распечатать все поля структуры одной инструкцией print s говорит об архитектуре программы?
Аноним 15/08/23 Втр 21:45:39 2807583 405
>>2807580
об архитектуре программы говорит то что ты вынужден смотреть колбэк всех хуйней на стеке и пырить на регистры в поиске виновника которы поменял поля твоей структуры, чо ты тупишь то ептубля, уже на пальцах приходитсся пояснять
Аноним 15/08/23 Втр 22:25:12 2807595 406
>>2806786
> если ты не пердолился с проблемами, которые возникают при кодинге на Си
Пердолился. Жаль, что тогда я думал СЛОЖНА ЗНАЧИТ КРУТА, пиздец.

> ты должен столкнуться с проблемами в системном программировании
Именно в этом я и пытался хоть что то делать, правда под винду. Дрочил на чистый си и чистую сборку + winapi, в итоге ахуел какое это говно.

>>2806737
>Опять же уже есть готовый rust, который уже давно готов
Уже подумывал на него пересесть, стоит ли обмазываться? Хочу его пощупать тк для фронта то же хорош благодоря билд тулам и wasm

>>2806738
СЛОЖНА ЗНАЧИТ КРУТА, ДВУРУЧНИК ДЛЯ ГОСПОД, МАГ ДЛЯ ЛОХОВ
Аноним 15/08/23 Втр 22:28:30 2807596 407
>>2807595
>СЛОЖНА ЗНАЧИТ КРУТА
попробуй скратч, говорят он попроще
Аноним 15/08/23 Втр 22:38:46 2807603 408
>>2807595
> хоть что то делать
Что именно? Хотел прикрутить пару кнопок на WinApi?
Аноним 15/08/23 Втр 23:17:01 2807624 409
>>2807603
Сделал оконное приложенире со всеми необходимыми внутренностями + не мало контьролов + запросы к wmi
Аноним 16/08/23 Срд 00:58:39 2807657 410
>>2807595
>огда я думал СЛОЖНА ЗНАЧИТ КРУТА, пиздец.
>СЛОЖНА ЗНАЧИТ КРУТА, ДВУРУЧНИК ДЛЯ ГОСПОД, МАГ ДЛЯ ЛОХОВ
Лол, что сложного в Си?
Аноним 16/08/23 Срд 01:24:07 2807662 411
>>2807657
Пардон, имел в виду не сам язык а структуру проекта/кода из за блядского винапи
Аноним 16/08/23 Срд 01:32:11 2807663 412
>>2807662
выходит я зря тебя обсирал, полагая что ты очередная формошлепная скриптомакака не осилившая простейший лоулевл язык? вот ты черт, больше так не делай
Аноним 16/08/23 Срд 05:25:03 2807674 413
Аноним 16/08/23 Срд 05:52:57 2807683 414
>>2807657
>Лол, что сложного в Си?
Всё сложно. Сам язык простой, но он в таком виде бесполезен. Для использования Си надо знать железо и ОС, вот тут-то и возникает сложность, макаки этого не знают, ведь макакины языки это всё магия, там знать ничего не нужно кроме самого языка, а в Си наоюорот, абсолютная необходимость знать то, чего макаки не знают, это непреодолимая сложность для них.
Аноним 16/08/23 Срд 06:54:45 2807689 415
Аноним 16/08/23 Срд 07:33:23 2807694 416
>>2807583
Мне, в отличие от тебя, хотя бы не нужно ни исходный код программы править, ни перекомпилировать, ни возиться с макросами и фпринтфами, чтобы посмотреть происходящее в реальном времени.
Аноним 16/08/23 Срд 09:59:18 2807739 417
Аноним 16/08/23 Срд 13:44:30 2807956 418
>>2807694
мне не нужно смотреть происходящее в реальном времени ведь я полностью контролирую процесс лол
>>2807739
я не буду смотреть, плюсы - говно, давно известный факт
Аноним 16/08/23 Срд 16:23:15 2808212 419
>>2807674
Так сишка и простая и легкая.

>>2807683
>сё сложно. Сам язык простой, но он в таком виде бесполезен.
Ну т.е. происходит подмена сложности предметной области на сложность языка. Если заменить Си на язык Х, то нихуя в общем-то не изменится.
Аноним 16/08/23 Срд 16:36:54 2808242 420
>>2808212
ну ващет изменится
перестанешь контролировать срачь на стеке и череду взаимных колбеков конструкторов вызывающих самих себя
но это я щитаю идет ноздря в ноздрю с изменением предметной области как раз таки, то бишь поменял сишку на ооп - сменилась предметная область с ручника на автомат, появились волшебные блобы хуйни в хуйне и все в таком роде
мимодругой анон
Аноним 16/08/23 Срд 19:05:14 2808509 421
>>2807956
Так у тебя программы уровня «лабораторная работа первого семестра», там и контролировать нечего, вся программа в одной main умещается.
Аноним 16/08/23 Срд 19:54:11 2808570 422
>>2808212
Всё изменится, ты проигнорировал сказанное про магию, а это принципиальная разница, как между черным и белым, небом и землей.

И про предметную область ты чушь спорол. Компьютер и ОС не являются предметной областью, это такой же инструмент как язык. Но в макакиных языках нет компьютера и ОС, ибо они работают в своей виртуалке, которая черный ящик, - магия не доступная и не предназначенная для изучения программистом. А на Си машина реальна и обязательна к изучению, иначе ничего не напишешь кроме бесполезного хеллоуворлда.
Аноним 16/08/23 Срд 20:22:20 2808603 423
>>2808509
у теб вообще программы нет лол
Аноним 17/08/23 Чтв 07:52:37 2808895 424
Парни, не скатывайте этот тред, пожалуйста, как асм тред в споры о хуй пойми о чём.
Аноним 17/08/23 Чтв 09:05:14 2808930 425
>>2808895
А чем еще тут заниматься? Решать коней в вакууме с литкода что ли?
Аноним 17/08/23 Чтв 10:19:17 2808999 426
>>2808930
Та я же не призываю совсем не спорить, просто не хочется, чтобы и этот тред скатился в бесконечный спор о хуй пойми о чём.
Аноним 17/08/23 Чтв 15:12:54 2809456 427
>>2806775
> Зачем строкой, есть же GUID, это обычное целое беззнаковое число, только 128‐битное. Уникальность гарантирована, причём так, чтобы пересчитать все атомы во вселенной.
потому что в модах id чего-либо приходится часто использовать в скриптах, поэтому его и делают строкой с неймспейсом мода, чтобы убрать коллизии лишние
Аноним 18/08/23 Птн 00:12:27 2810080 428
>>2804291
Так поэтому я и топлю за изучение Си в любом случае, чтоб не было потом на плюсах
>тяп ляп и в продаккшин
а было pravilno. Живых продуктов с вакансиями на Си может быть не так много, зато есть на плюсах, и есть такие, где в команде правильные традиции.
Аноним 18/08/23 Птн 01:22:10 2810107 429
Да, я вижу, что и там и там int! Я просто подумал, что мб ты сам додумаешься, что нужно просто расширить до ансайнед лонга, чтобы проверить теорию о SIMD инструкции, но не судьба, поэтому подсказка: расширь до ансайнед лонга и проверь
Аноним 18/08/23 Птн 13:48:45 2810505 430
Что вообще такое «учить си»? Весь язык из 30 ключевых слов состоит, что там учить‐то. За пять минут весь язык можно выучить.
Аноним 18/08/23 Птн 14:02:56 2810519 431
>>2810505
Си это мем. Сюда приходят всякие макаки пишущие на питоне и тому подобном, чтобы "приобщиться". Короче, попиздеть и повесить себе лапшу на уши, что они теперь не совсем опущи. А более честные себе не изменяют и просто заходят написать "си нинужон".
Аноним 18/08/23 Птн 14:23:04 2810550 432
>>2810505
попробуй линуксовые программы на Си поддерживать
Аноним 18/08/23 Птн 15:34:04 2810662 433
>>2810505
Ну чота никто в треди так и не выучил его. Многие сдались и теперь убеждают себя что это не они лошки подзаборные, а это "си нинужон".
Аноним 18/08/23 Птн 15:36:12 2810671 434
>>2807739
Успокойте меня что такая черная магия на самом деле используется лишь в 5% проектов на сишке и что на реальной работе будет намного проще. Иначе я хуй знает смогу ли я вообще ВКАТ
Аноним 18/08/23 Птн 15:40:22 2810686 435
А вообще я уже понял что нужно смотреть как другие делают и повторять как макака пока не поймешь самостоятельно как это работает. Так решая простые задачки я иногда видел имплементации о который я просто физически не знал и знать не мог.
Аноним 18/08/23 Птн 16:17:52 2810762 436
>>2810671
Это развод чтобы набрать классы. В реальности на галере ты 100% времени говнокодишь хуету чтобы успеть сдать ее вчера. Набравшись опыта ты становишься синьйором помидором и твоя задача перелопатить навермишеленный до тебя говнокод во что то приемлемое. Видиво не смотред, мне похуй.
Аноним 18/08/23 Птн 17:57:52 2810987 437
>>2810762
>навермишеленный до тебя говнокод
навермишеленный тобой говнокод пока ты становился синьором
а потом приходит озарение "итак сойдет"
Аноним 18/08/23 Птн 18:26:52 2811047 438
Вопрос от полного нуба в С. (чат гпт не помогает). Есть два кода и они работают по разному (один просто проверка ифами, другой - цикл с функцией и шаблонами). Почему так?
первый

if (temp_data & 0b10000000) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

REGISTER_PORT |= (1 << SH_CP); // SH_CP 1
REGISTER_PORT &= ~(1 << SH_CP); // SH_CP 0

if (temp_data & 0b01000000) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

REGISTER_PORT |= (1 << SH_CP); // SH_CP 1
REGISTER_PORT &= ~(1 << SH_CP); // SH_CP 0

if (temp_data & 0b00100000) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

REGISTER_PORT |= (1 << SH_CP); // SH_CP 1
REGISTER_PORT &= ~(1 << SH_CP); // SH_CP 0

if (temp_data & 0b00010000) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

REGISTER_PORT |= (1 << SH_CP); // SH_CP 1
REGISTER_PORT &= ~(1 << SH_CP); // SH_CP 0

if (temp_data & 0b00001000) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

REGISTER_PORT |= (1 << SH_CP); // SH_CP 1
REGISTER_PORT &= ~(1 << SH_CP); // SH_CP 0

if (temp_data & 0b00000100) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

REGISTER_PORT |= (1 << SH_CP); // SH_CP 1
REGISTER_PORT &= ~(1 << SH_CP); // SH_CP 0

if (temp_data & 0b00000010) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

REGISTER_PORT |= (1 << SH_CP); // SH_CP 1
REGISTER_PORT &= ~(1 << SH_CP); // SH_CP 0

if (temp_data & 0b00000001) {
REGISTER_PORT |= (1 << DS);
}
else {
REGISTER_PORT &= ~(1 << DS);
}

второй
#define REGISTER_DATA_0 REGISTER_PORT &= ~(1 << DS)
#define REGISTER_DATA_1 REGISTER_PORT |= (1 << DS)

#define REGISTER_SHIFT_CLOCK_0 REGISTER_PORT &= ~(1 << SH_CP)
#define REGISTER_SHIFT_CLOCK_1 REGISTER_PORT |= (1 << SH_CP)

void push_bit(int type) {
if (type) {
REGISTER_DATA_1;
}
else {
REGISTER_DATA_0;
}
REGISTER_SHIFT_CLOCK_1;
REGISTER_SHIFT_CLOCK_0;
}

unsigned int mask;

for (mask = 0x80; mask >= 0x1; mask >>= 1) {
push_bit(temp_data & mask);
}
Аноним 18/08/23 Птн 18:29:50 2811055 439
>>2810987
Ну это если ты в той же галере и на том же проекте доперделся до сеньера. Сам понимаешь что это уровень фантастики.
Аноним 18/08/23 Птн 18:31:42 2811060 440
>>2811047
Почему так что? Не вайпай тред.
Аноним 18/08/23 Птн 18:36:41 2811070 441
>>2811060
Почему я не могу заменить одну реализацию другой и что бы всё работало так же?
Аноним 18/08/23 Птн 18:39:10 2811076 442
>>2811070
Полагаю сепарация условий не совпадает. А ты сам то как думаешь? В первом варианте твои ифы чекают одни данные, во втором другие, так схерали эти два куска должны делать одно и то же?
Аноним 18/08/23 Птн 18:43:06 2811085 443
>>2811076
Почему другие? temp_data одна, или ты имеешь ввиду
mask != 0b10000000 (etc)?
Аноним 18/08/23 Птн 18:46:58 2811093 444
>>2811085
>Почему другие?
Автора кодов надо спросить почему. Чекай ифы. Пока не прочекаешь спать не ляжешь!
Аноним 18/08/23 Птн 18:56:05 2811110 445
>>2811093
Реально, я слепой далбоёб. На последней итерации мы не "хлопаем" защёлкой. Благодарю.
Аноним 18/08/23 Птн 19:00:55 2811122 446
>>2811070
У тебя везде пидерское сравнение в ифах по типу
if (temp_data & 0b00000001)
Если твое темпдата будет 0b11111111 то оно проскочит, нужно сравнивать
if ((temp_data & 0b00000001) == 0b00000001)
С радача пришел?
Аноним 18/08/23 Птн 19:06:33 2811128 447
>>2811122
Ну там и "шаблоны" кривенькие. Для перегруза есть макро ## склейка.
Аноним 18/08/23 Птн 19:09:02 2811135 448
>>2811122
А вот кстати философский вопрос. Что быстрее?
if( вычисляемое == невычисляемое )
if( невычисляемое == вычисляемое )
Аноним 18/08/23 Птн 19:09:05 2811136 449
>>2811122
>С радача пришел?
Yep. Ну сейчас вроде начинает что-то получатся. Это я эти ифы переписал в функцию и перестало всё работать, а оказывается я не заметил, что в конце происходит.
>>2811128
Ну шаблонами только учусь пользоваться, увидел в видео, понравилось, что меньше простыни в функциях получается.
Аноним 18/08/23 Птн 19:13:33 2811143 450
Аноним 18/08/23 Птн 19:17:16 2811149 451
>>2811143
Вот я это и спрашиваю собсна.
Аноним 18/08/23 Птн 19:31:35 2811168 452
>int должен быть не меньше 2х байт.
снится по ночам, как ваш код собрали компилятором, который 2 байта только предоставляет?
Аноним 18/08/23 Птн 19:36:04 2811176 453
>>2811168
Ничо страшного, обрастет ифдефами как взрослый кроссплатформенный мальчуган.
Аноним 18/08/23 Птн 19:50:24 2811207 454
>>2810762
Я еще не умею быстро...
Аноним 18/08/23 Птн 19:56:44 2811222 455
как же надоело эти ошибки хэндлить
выделение памяти - хэндли нульпоинтеры, разбираешь JSON - чекай типы и проверяй отсутвие нужных структур, как вы с этим миритесь?
Аноним 18/08/23 Птн 20:01:09 2811229 456
>>2811222
еще бесит андефайнед символы, приходится хэндлить отсутствующие переменные
Аноним 18/08/23 Птн 20:01:23 2811231 457
Подскажите а в С++ тоже нужно хуячить как можно более изотерический неподдерживаемый код только для того чтобы тебя не могли больше никем заменить, потому что никто нихуя в нем не понимает?
Аноним 18/08/23 Птн 20:03:46 2811241 458
>>2811231
В плюсах надо СТЛ переписывать каждый поенедельник, иначе никруто.
Аноним 19/08/23 Суб 10:52:30 2811663 459
>>2811222
А если выделение памяти завершится неудачей? Предлагаешь не проверять такую ситуацию? Кто должен отвечать за это?
Аноним 19/08/23 Суб 15:50:37 2811906 460
А если я пройду 30 часовой курс с ютуба я могу сразу на миддла идти? Рабочего опыта разумеется нихуя.
Аноним 19/08/23 Суб 16:10:01 2811932 461
>>2811906
Можешь сразу нахуй идти.
Аноним 19/08/23 Суб 16:38:29 2811982 462
Аноним 19/08/23 Суб 23:23:11 2812474 463
16924764309240.mp4 315Кб, 360x202, 00:00:06
360x202
Аноним 20/08/23 Вск 11:54:07 2812748 464
Сишка умирает? Даже треды подохли. Мертвый не нужный язык.
Аноним 20/08/23 Вск 11:56:08 2812749 465
Хочу написать p2p ботнет. Где можно посмотреть, как реализуется кастомный протокол поверх tcp/udp?
Аноним 20/08/23 Вск 12:01:15 2812757 466
>>2812749
Чо значит поверх? Ты хочешь кастомный транспортный протокол, или кастомный какой? Кастомный межсетевой, кастомный канальный?
Аноним 20/08/23 Вск 12:18:42 2812773 467
>>2812748
Продолжай себя утешать.
Аноним 20/08/23 Вск 12:21:55 2812781 468
>>2812749
По сути весь сетевой стек так или иначе кастомный. Гугли RFC декларации интересующих тебя протоколов и все увидишь. Можешь по такому же принципу предложить очередной кастомный транспортник, главное задекларировать описание по общепринятому шаблону request for comments (RFC).
Аноним 20/08/23 Вск 13:44:00 2812828 469
>>2812757
Ну хочу написать протокол, по которому боты будут обмениваться командами и выполнять их. Возможно, какой-то паттерн проектирования понадобится, пока не уверен. Пока думаю над двумя частями бота: протокол обмена сообщениями и исполнитель, который выполняет полученные команды. Есть примеры такого?
Аноним 20/08/23 Вск 13:55:21 2812832 470
>>2812828
Пример чего именно? Любой транслятор ЯП пример трансляции байтиков команд в реальное исполнение этих команд. А процессы между собой обмениваются всем известным способом - шлют байты в сокетфайл и из него читают соответственно. Кодируй этот поток как душе угодно, ты же потом раскодировать будешь.
Аноним 20/08/23 Вск 15:51:17 2812947 471
>>2812926
Это сокращение от европейские геи.
Аноним 20/08/23 Вск 17:44:15 2813079 472
Вопрос от нуба. Подскажите по IDE, чем пользоваться? Я пока начинаю и пишу в редакторе протеуса неудобно, пиздец, но и код я пишу не сложный. Если я установлю avr studio и подключу какую-то библу в файл, у меня будет автокомплит всего того, что есть в библе? Алсо, вс код даст всю функциональность?
Аноним 20/08/23 Вск 18:03:48 2813091 473
>>2813079
VSCode + PlatformIO. Если микрухи прошиваешь. Ничего удобнее не придумали пока что.
Аноним 20/08/23 Вск 18:32:55 2813115 474
>>2813079
Я продолжительное время юзал эклипс. Отличная тачка, только надо настройки проковырять чтобы поехала.
Аноним 20/08/23 Вск 18:34:14 2813117 475
Жипити и живой пример на сайте решают одну и ту же проблему совсем по разному. Живой пример нагородил ифов и скобочек а жипити как то умудрилась без ифов
Оба варианта работают по разному тоже.
Аноним 20/08/23 Вск 19:20:54 2813138 476
>>2813091
>>2813115
Буду вскод пробовать, там вроде меньше настраивать надо.
Аноним 20/08/23 Вск 19:54:22 2813163 477
Снимок экрана 2[...].png 28Кб, 138x138
138x138
>>2813079
Ща кодю в джини. Потихоньку пишу свой джини с блекджеком и воркспейсами.
Аноним 20/08/23 Вск 20:31:33 2813192 478
>>2813117
Учи алгоритмы, дискретную математику, устройство и принцип работы компьютера и будет тебе счастье. Ты же в треде Си, в конце концов!!!
Аноним 20/08/23 Вск 21:06:56 2813234 479
Аноним 20/08/23 Вск 21:20:10 2813247 480
>>2813234
>я на крестах...
Как откинешься, тогда и приступай к изучению того, что я перечислил, и тогда ты будешь нагибать гопоту.
Аноним 21/08/23 Пнд 03:18:56 2813386 481
>>2804550
>int y = x++;
Тут сперва присваивание, а затем прибавление единицы. То есть, сперва вставляется сам x, и как бы на след. строке x = x + 1

>int y = ++x;
А тут сперва прибавление единицы, а затем уже присваивание. Как бы суть ты поняла, этот код превращается в
>x = x + 1;
>int y = x;
Аноним 21/08/23 Пнд 09:03:50 2813485 482
>>2804550
>Почему так?
Если ты задиссассемблишь эту операцию, то увидишь, что первым делом переменная по адресу икса копируется в регистр (допустим, rax), потом по адресу этой переменной к ней прибавляется единица, а уже после этих действий идёт копирование значения из регистра rax по адресу игрек, т.е. идёт присваивание предыдущего значения икса игреку.
Совет на будущее: Если что-то ломает голову в Си, то дизассембли, для этого, конечно, нужно уметь читать код на асме и пользоваться дизассемблерами типа edb, radare2 (c GUI Cutter), ida, etc.
Аноним 21/08/23 Пнд 09:10:56 2813489 483
>>2813485
Для одной операции это выглядит нелогично, но, если ты устраиваешь цикл:
for(int i = 0; i < n; i++) {
что-то происходит
с присваиванием
i другим переменым
}


То тут и становится ясным для чего нужон этот выверт - для того, чтобы переменная i присваивалась чему-то начиная с нуля, т.е. с самого первого её значения.
Аноним 21/08/23 Пнд 09:24:37 2813491 484
>>2813485
gcc -s
всем доступный дизасемблер
Аноним 21/08/23 Пнд 09:41:53 2813500 485
>>2813491
Можно и в гдб задиссассемблить, но, если тебе нужно задисассемблить большую и непонятную ф-цию, то тут лучше пройтись по шагам и понять, что она делает, иначе, просто читая дизассемблерный код, можно лишь сильнее запутаться. Так что лучше сразу юзать мощные инструменты, дизассембля простенькие ф-ции, постепенно усложняя себе задачу.
Аноним 21/08/23 Пнд 09:45:53 2813502 486
>>2813500
ты сам себе противорчечишь
>если большая функция - запутаешься
>поэтому юзай мощный дизасембл для маленьких

на деле дизасембл вообще не особо то и нужный инструмент, если только ты не реверс инженер
все вопросы по нюансам сишного сахара разжевываются пока усваиваешь базу, в дальнейшем уже нет вопросов почему так нахуй, база усвоена
Аноним 21/08/23 Пнд 09:54:56 2813510 487
>>2813502
Ладно, убедил! Действительно, для базы можно и без мощных инструментов обойтись.
Аноним 21/08/23 Пнд 10:58:05 2813550 488
>>2813510
Можно но нужно ли? Может лучше сходу в воду? С прыжка в огонька? На коня с разбегу?
Аноним 21/08/23 Пнд 11:03:22 2813556 489
>>2813550
Тогда бы первой программой в учебнике была бы тредсейв пир ту пир ботнет срущий хеловоррлдами.
Аноним 21/08/23 Пнд 11:07:51 2813562 490
>>2813550
Ну, давай исходить из того, что всё зависит от источника, из которого ты черпаешь знания по языку Си, если в этом источнике тебе разжевали, почему в той или иной операции получается то, что получается, то, следовательно, не надо; если после получения инфы из твоего источника у тебя остаются вопросы, то ты можешь обратиться к другому источнику, но есть вероятность, что и там ты не найдёшь ответ на тот вопрос, который витает в твоей голове, следовательно, в этой ситуации проще самому исследовать операцию, чем перелопачивать тырнет в поисках нужной тебе информации.
Аноним 21/08/23 Пнд 11:38:50 2813598 491
>>2813562
Ну вот я смотрю докумнтацию на сайте а там в примере вот такая хуйня

for (const char* str: {" #1 test", "\t #2 test", "#3 test"})
{
std::string line;
std::getline(std::istringstream{str}, line);
std::cout << "getline returns:\t" << quoted(line) << '\n';

std::istringstream iss{str};
std::getline(iss >> std::ws, line);
std::cout << "ws + getline returns:\t" << quoted(line) << '\n';

Вроде и несложно и по отдельности все понятно но как же это блядь сложно читать. Мне потребовалось несколько минут только чтобы прочитать и понять что оно нахуй делает, хотя по отдельности каждая строчка проста и понятна.
Да и вообще эта документация параша какая то, перемудрили до пизды.
Аноним 21/08/23 Пнд 11:39:36 2813600 492
Аноны, подскажите, как мне лучше поступить? Цель: у меня есть исполняемый файл (программа написанная на Си), и я хочу написать программу, в которой я хочу организовать цикл, в котором должен запускаться этот исполняемый файл энтое кол-во раз, а результат его исполнения складывать в другой файл. Что-то не могу найти инфу о работе с исполняемыми файлами.
Аноним 21/08/23 Пнд 11:43:04 2813604 493
>>2813598
>Да и вообще эта документация параша какая то, перемудрили до пизды.
следствие парашности плюсов
страуструпа то же никто не читает за его душку
Аноним 21/08/23 Пнд 11:44:26 2813607 494
>>2813598
Я эти ваши плюсы чёт совсем не понимаю. Обычно тут может помочь какой-нибудь дебагер, чтобы можно было бы пройтись по шагам.
Аноним 21/08/23 Пнд 11:54:36 2813614 495
>>2813600
Я кажись понял!! Можно же открыть файл на запись и организовать цикл, который будет складывать результат в открытый на запись файл.
Аноним 21/08/23 Пнд 12:08:03 2813617 496
>>2813600
Линух?
Гугли системный вызов execl()
Аноним 21/08/23 Пнд 12:17:03 2813624 497
>>2813617
>Линух?
Ага
>Гугли системный вызов execl()
Спасибо!
Аноним 21/08/23 Пнд 12:55:48 2813651 498
Я смогу пройти собеседование если у меня есть 10 лет опыта в торговле, серебрянный язык способный уговорить сердитого отца отдать мне его девственную дочь и харизма чтобы управлять десятками людей но нет реального опыта в кодинге?
Аноним 21/08/23 Пнд 13:03:22 2813657 499
>>2813651
>отдать мне его девственную дочь
Всё зависит от возраста этой его дочери, от положения этого её отца в обществе и от взглядов этой их семьи. Если батя какой-то большой чин в силовых структурах, придерживающийся крайне традиционных ценностей, заставляющий свои семью придерживаться этих же ценностей, и этой его дочери было от 12-15 лет, и он знал, что ты мерзкий педофил, но, несмотря на это, ты его уболтал отдать её тебе, то, получается, что ты совершил чудо, а потому ты можешь рассчитывать на что-то более крутое, чем просто формошлёп без опыта.
Аноним 21/08/23 Пнд 13:40:40 2813701 500
>>2813657
>крайне традиционных ценностей
>дочери было от 12-15 лет
Ну так все ж довольно традиционно. Иногда и в 11 уже в брак отдавали.
Аноним 21/08/23 Пнд 14:07:55 2813745 501
>>2813701
>Ну так все ж довольно традиционно.
Ты там из средневековья капчуешь, что ли? Сейчас 21-й век и человек до 18-ти это ещё жеребёнок, да с учётом глобальной инфантильности и обилия всего того, что нужно изучить, чтобы голова встала на место и начала думать в правильном направлении, то человек до 25-ти является ещё жеребёнком (но это уже будут традиции 22-го века).
Аноним 21/08/23 Пнд 14:30:17 2813776 502
>>2813745
У людей в головах все еще мозги средневековья, да, ты как погромист должен знать.
Аноним 21/08/23 Пнд 14:59:23 2813804 503
>>2813776
Не, ну, если так рассуждать, то можно дойти и до того, что люди ещё недалеко ушли от обезьян. Поэтому, чтобы не возникало такого спора, я и указал одним из условий - положение бати в обществе, ибо, с большой долей вероятности можно утверждать, если её батя достиг большого чина в силовых структурах, то это делает его как минимум очень дисциплинированным и волевым человеком. Дисциплина и воля это есть два качества сознания, т.е. это говорит о том, что батя живёт не инстинктами, а рассудком, а раз так, то, если он придерживается крайне традиционных ценностей (ходить в церковь, любить женщину, гнобить пидоров, соблюдение законов, и как следствие секс и алкоголь только после 18), то однажды вбив в свой рассудок эти самые традиционные ценности, он от них не откажется, ибо железная воля и дисциплина.
Короче, ты прекрасно понимаешь о чём я, просто строишь из себя дурачка.
Аноним 21/08/23 Пнд 16:49:57 2813928 504
16925401679310.png 478Кб, 735x488
735x488
Не забудьте в шапку перекатного треда влепить двачезвезды ⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹⚹

Вот отсыпал вам нимножка.
Аноним 21/08/23 Пнд 17:30:10 2813977 505
>>2813804
>если её батя достиг большого чина в силовых структурах, то это делает его как минимум очень дисциплинированным и волевым человеком
Чет захихикал с рассуждений домашней корзинки.
Аноним 21/08/23 Пнд 17:51:45 2814019 506
Аноны, подскажите

char c = 5;
printf("%d", c);

Это UB?
Аноним 21/08/23 Пнд 17:55:26 2814026 507
>>2813977
Мань, я понимаю, что ты хочешь мне сказать, что есть чины, которые совсем не дисциплинированные и не волевые, и которые просто по блату попали на эту должность, являясь людьми безвольными. Конечно, я с тобой полностью согласен, что есть и такие чины, но этих людей нельзя считать людьми, которые придерживаются крайне традиционных ценностей, ибо они и не против гомосятины, возможно, что и любят это дело, они и не против с детьми, ибо есть и деньги и власть, они и с кайфом торчат на тяжёлых наркотиках, и перечислять их огрехи и слабости можно до бесконечности. Но я же не просто так ввёл условие о том, что этот батя должен быть крайне традиционных ценностей, просто потому что, когда ты живёшь в мире полном соблазнов, и когда у тебя есть и деньги и власть, то, чтобы придерживаться крайне традиционных ценностей, нужно обладать нехилыми яйцами и сильным и здравым рассудком, чтобы не попасть под влияние этих самых соблазнов. А таких людей немало в силовых структурах, и они как правило все дисциплинированные и волевые. Это как раз те люди, благодаря которым нас до сих пор не завоевали хохлы.
Ты же программист, почему ты не можешь читать условие задачи?
Аноним 21/08/23 Пнд 17:58:40 2814034 508
>>2814019
Что за UB? Вообще-то он тебе выведет 5.
Аноним 21/08/23 Пнд 18:01:46 2814039 509
>>2814034
Ну компилятор же не знает, что мне нужно преобразовать char в int. Поэтому в аргументах физически лежит char. А как он лежит уже зависит от реализации. Значит, это неопределённое поведение, так?
Аноним 21/08/23 Пнд 18:05:59 2814046 510
>>2814039
А зачем компилятору что-то преобразовывать? У тебя в переменной лежит целое число, и ты даёшь задание вывести это целое число, которое не превышает выделенной для этого числа памяти, с чем компилятор с лёгкостью и справляется.
Аноним 21/08/23 Пнд 18:08:47 2814051 511
>>2814046
Так char и int разного размера. "%d" ожидает int, но получает char, даже не зная об этом.
Аноним 21/08/23 Пнд 18:09:59 2814053 512
>>2814026
Дак ты погодь, хохлам щас ядерку дадут так они сразу до сибири дойдут.
Аноним 21/08/23 Пнд 18:18:21 2814071 513
>>2814051
Чар и инт это типы данных, которые предназначены для хранения целых чисел. Когда ты передаёшь что-то в printf, то ты указываешь спецификаторы, которые говорят о данных какого типа ты передаёшь в эту ф-цию. У тебя спецификатор %d говорит о том, что ты хочешь передать целое число, после этого ты и передаёшь это самое целое число, которое у тебя хранится в переменной с. Просто это целое число не может превышать 127, чтобы оно имело смысл.
Аноним 21/08/23 Пнд 18:19:00 2814074 514
>>2814053
Залупу им за щеку только могут дать.
Аноним 21/08/23 Пнд 18:34:23 2814103 515
>>2814071
Как ты тогда объясняешь существование спецификаторов "%ld", "%lld", "%hd" и пр.? "%d" запрашивает не целое число, а именно int.
Аноним 21/08/23 Пнд 18:59:20 2814146 516
Аноним 21/08/23 Пнд 19:00:30 2814147 517
>>2814146
Здесь объясняется про спецификаторы, но про типы данных тебе нужно читать отдельно.
Аноним 21/08/23 Пнд 19:02:29 2814156 518
>>2814146
1. Там прямым текстом сказано, что "%d" выводит int.
2. Ты не ответил на мой вопрос.
3. Ткни пальцем, где в статье ответ на мой изначальный вопрос, или объясни своими словами.
Аноним 21/08/23 Пнд 19:21:14 2814228 519
>>2814019
>>2814156
>>2814147
>>2814103
>>2814051
>>2814046
>>2814039
Когда вы уже запомните...
В памяти лежат голые биты. Никаких интов чаров флоатов. Просто биты в байтах по виртуальным адресам. Все.

Ты говоришь, я буду юзать чар (читай однобайтные знаковые децималы), компилер такой - без базара. Ты говоришь положи по адресу Ц значение 5. Компилер такой без базара и пишет в адрес 0b101 (добавсь слева нули если не понятно). Потому ты говоришь выведи на экран %d компилер говорит без базара, НО %d настроен на вывод четырех байт, а ты записал в один.Происходит неявное преобразование типов, твой чар кастуется к интам (любая студия, апример эклипс, тебе бы ворнинг вывела в этом месте), тобишь компилер просто приклеивает справа нулевые байты (справа а не слева потому что порядок чтения битов и байтов обратный) и пихает в поток вывода (но вообще то это в теории, на практике реализация принтфа завязана на write() которая в сырцах компилера должна лежать, крч в стдлибе нет описания блекбокса как именно это происходит).

В общем, если подводить итоги. В памяти лежат какие то битики. Как их декодировать и что с ними делать определяют типы данных. Как их писать в память/читать из памяти определяет программист. Можешь положить в инт большое число и вывести как строку. Или записать в массив даблов текст. Надеюсь я приоткрыл вам дверцу.
Аноним 21/08/23 Пнд 19:27:05 2814241 520
>>2814228
Вообще если разбираться, то на 32битных машинах при любой математике с выражениями меньше 4 байт компилер будет жонглировать и клеить нулевые байты к ним, поэтому если надо написать быстрый прогрух хэшей из рама по 32 битной шине - юзают инты или 4 байтные поинтеры. И по этой же причине в сишке инт кондишен. Потому что 32 битные шины данных это канон.

Крч тебе нужен 1 байт? Компилер грит без базара, грузит 4 байта, отрезает тот который нужен, клеит к нему нулевые и в от ты получил свой байт.
Аноним 21/08/23 Пнд 19:28:51 2814243 521
>>2814156
>Там прямым текстом сказано, что "%d" выводит int.
Имеется в виду, что может выводить целое число, которое не превышает инт, т.е. 2^32. Пойми, что и чар и инт это представление целого числа, только разница в разрядности. Когда ты хочешь переменной вида чар присвоить какой-либо символ, то этой переменной присваивается не сам этот символ, а его представление в таблице аскии. Допустим:

char c = 'a';
printf("%d", c); // выведет 97
c = 97;
printf("%c", 97); // выведет 'a'
char a = '!';
printf("%d", a + c); // выведет 120

В памяти компа символы и целые/дробные числа это всего-лишь набор битов, и этими битами ты можешь оперировать, а вид операций зависит от того, как ты говоришь компу интерпретировать эти биты (типы данных, виды спецификаторов).
Аноним 21/08/23 Пнд 19:33:08 2814251 522
>>2814228
>Ты говоришь, я буду юзать чар (читай однобайтные знаковые децималы), компилер такой - без базара. Ты говоришь положи по адресу Ц значение 5. Компилер такой без базара и пишет в адрес 0b101 (добавсь слева нули если не понятно). Потому ты говоришь выведи на экран %d компилер говорит без базара, НО %d настроен на вывод четырех байт, а ты записал в один. Происходит неявное преобразование типов, твой чар кастуется к интам (любая студия, апример эклипс, тебе бы ворнинг вывела в этом месте), тобишь компилер просто приклеивает справа нулевые байты (справа а не слева потому что порядок чтения битов и байтов обратный) и пихает в поток вывода (но вообще то это в теории, на практике реализация принтфа завязана на write() которая в сырцах компилера должна лежать, крч в стдлибе нет описания блекбокса как именно это происходит).

Вот это хорошее объяснение.
Аноним 21/08/23 Пнд 19:51:48 2814270 523
Чтобы закрепился пройденный материал предлагаю анону мысленный эксперимент.

int printf(const char ⚹, ...); /⚹ или __VA_ARGLIST__ не помню как прототип описан у принтфа, но по идее линковщик без инклюда либы слинкует описание принтфа по прототипу ⚹/

d = "huy";
int main(void){
printf("%d -> %s \n", d);
return 0;
}
Аноним 21/08/23 Пнд 19:53:51 2814271 524
>>2814243
>printf("%d", a + c); // выведет 120
Я тут чёт проебался, это будет -126, тому что 97 + 33 = 130, но чар может хранить числа до 127, следовательно дальше начинается обратный отсчёт.
Аноним 21/08/23 Пнд 19:56:26 2814274 525
>>2814271
>до 127
Ну тащемта это то же спорный момент. Границы типов это не стандарт и на разных машинах по разному бывает. Имеется ввиду что на некоторых машинах верхняя граница выше, на некоторых нижняя ниже. В общем ты понял.
Аноним 21/08/23 Пнд 20:00:29 2814277 526
>>2814274
Чар же всегда был одним байтом. Байт это универсальная единица измерения, поэтому чар не должен зависеть от машины.
Аноним 21/08/23 Пнд 20:04:34 2814283 527
>>2814277
Чар и не зависит от машины. А вот способ декодирования битов из байт ой как зависит. Вон на рисках слова, к примеру, фрагментированные, полслова в начале, полслова в конце, посередине гвоздик слово данных.
Аноним 21/08/23 Пнд 20:09:36 2814292 528
>>2814277
Ладно я фигово объяснил. Чар это один байт, он не зависит от машины, ты прав. А вот когда ты пишешь 127 или -126 это не чар, это ты уже декодировал биты из этого байта в децималы. И вот сам процесс декодирования зависит от машины. Если быть точным от процессора, от камня, от его набора инструкций и архитектуры. К римеру я не уверен сможет ли камень на ГПУ вообще раскодировать твой байт как децимал, учитывая что там матядро с инструкциями по флоатам.
Аноним 21/08/23 Пнд 20:14:37 2814297 529
>>2814228
Когда вы уже запомните...
Никаких битов байтов в стандарте НЕТ. Есть только абстракция на абстракции, выраженная в отвлеченных терминах. Всё.
Стандарт C/C++ би лайк;
"Ой, чар это один байт, но байт это, короче, не байт, который 8 бит, а любая хуйня, главное, чтобы минимум 256 значений вмещал"
"Ой, пук пук, а я хз, что такое INT_MAX + 1, мб INT_MIN, а мб у тебя хуй отвалится, иди нахуй, короче"

То, что ты написал ниже, чушь ебаная. Спойлер: я уже нашёл ответ на свой вопрос сам - арифметический тип меньше инта, например чар, будет преобразован в int всегда без всяких вопросов. А теперь разберём по частям тобою сказанное.

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

> (любая студия, апример эклипс, тебе бы ворнинг вывела в этом месте), тобишь компилер просто приклеивает справа нулевые байты (справа а не слева потому что порядок чтения битов и байтов обратный) и пихает в поток вывода (но вообще то это в теории, на практике реализация принтфа завязана на write() которая в сырцах компилера должна лежать, крч в стдлибе нет описания блекбокса как именно это происходит).
"Четыре байта", "приклеивает справа, а не слева", "порядок чтения битов и байтов" - ты понимаешь, что в стандарте нет всей этой хуйни малафьи? Банально "порядок чтения байтов" зависит от endianness конкретного компьютера? АЛЛО, В СТАНДАРТЕ АБСТРАКТНАЯ МАШИНА!

> В общем, если подводить итоги. В памяти лежат какие то битики. Как их декодировать и что с ними делать определяют типы данных. Как их писать в память/читать из памяти определяет программист. Можешь положить в инт большое число и вывести как строку. Или записать в массив даблов текст. Надеюсь я приоткрыл вам дверцу.
В этом и проблема. Оттуда и изначальный вопрос: "я положил один байт там, где ожидается 4 байта; компилятор об этом знать не может, следовательно на выходе - рандомная хуйня". Потом оказалось по-другому: https://stackoverflow.com/a/12830110
Аноним 21/08/23 Пнд 20:17:33 2814302 530
>>2814241
Ты же в курсе, что:
а) int это не всегда 4 байта;
б) int не всегда 32-битный, даже если он 4 байта?
Аноним 21/08/23 Пнд 20:22:26 2814312 531
>>2814302
Я вкурсе. Про пункт б стало интересно, обоснуй. Еще можешь рассказать что побудило тебя написать этот пост, то что в сишке инт кондишен? Как твои утверждения это опровергают? Инты на машине это word величина. Если там 16 битная шина и камень, то инты там двухбайтные. Но все децимальные константы все равно интовые. Так что я не понял с чем именно ты споришь.
Аноним 21/08/23 Пнд 20:24:05 2814313 532
>>2814297
Уич хардварь, макака.
Аноним 21/08/23 Пнд 20:33:20 2814322 533
>>2814312
> Я вкурсе. Про пункт б стало интересно, обоснуй.
Байт не обязан быть 8 бит. Стандарт говорит, что:
1) char это всегда один байт
2) char не может быть меньше 8 бит (но может быть больше, см. CHAR_BIT)

> Еще можешь рассказать что побудило тебя написать этот пост, то что в сишке инт кондишен?
Не знаю, про какой ты конкретно пост (видимо, не мой), но меня не интересует, как работает си на конкретной архитектуре. Мне интереснее разобраться, что стандарт гарантирует на любой машине, а что не гарантирует.
Аноним 21/08/23 Пнд 20:34:02 2814324 534
Аноним 21/08/23 Пнд 20:40:30 2814336 535
>>2814322
Почти ничего не гарантирует. Зоопарк разнообразных машин вставил свое слово в написание стандарта.

>>2814324
Цель? Ты никуда не денешься от конкретной реализации конкретной машины. Смирись с этим макакич.
Аноним 21/08/23 Пнд 21:00:12 2814355 536
Снимок экрана 2[...].png 41Кб, 1270x90
1270x90
>>2814322
>Байт не обязан быть 8 бит. Стандарт говорит, что:
>1) char это всегда один байт
>2) char не может быть меньше 8 бит (но может быть больше, см. CHAR_BIT)
Ну тут вот стандарт то же врет, или ты врешь.
Как насчет шестибитных чаров? Я вот пытаюсь понять зачем ты учишь стандарт языка, который напрямую привязан к железкам, а у железок нет стандарта. Глупость какая то. И как стандарт сихи описывает работу с третичной логикой (да такие компы то же были)? Крч пустая трата времени. Глянь дефайны на своей машине и кодь приложуню, не будь макакой которая срет тут нечитабельной хуетой зато по стандарту.
Аноним 21/08/23 Пнд 21:08:53 2814359 537
>>2814336
> Почти ничего не гарантирует. Зоопарк разнообразных машин вставил свое слово в написание стандарта.
В этом и суть. В том, чтобы не допускать того, что по стандарту является неопределённым поведением. А иначе получается, перешёл с GCC на Clang - умер от уб. Ну или с x86 на ARM, тем более. Мне такое не оч нравится.
> Цель? Ты никуда не денешься от конкретной реализации конкретной машины. Смирись с этим макакич.
Ты никуда не денешься от опасностей UB и необходимости portability. Смирись с этим.
Аноним 21/08/23 Пнд 21:14:16 2814363 538
>>2814359
в твоем примере не было уб, ты просто даун
Аноним 21/08/23 Пнд 21:26:37 2814373 539
>>2814355
> >Байт не обязан быть 8 бит. Стандарт говорит, что:
> >1) char это всегда один байт
> >2) char не может быть меньше 8 бит (но может быть больше, см. CHAR_BIT)
> Ну тут вот стандарт то же врет, или ты врешь.
> Как насчет шестибитных чаров?
Покажи их. У тебя на скрине некий компьютер с шестибитным байтом. Где ты вычитал про 6-битный чар? На таком компьютере либо невозможна реализация Си, либо на нём char будет 12-битным. Два байта с точки зрения машины, но один "байт" с точки зрения языка. И на таком компиляторе sizeof(char) будет равен 1, а CHAR_BIT - 12.
> Я вот пытаюсь понять зачем ты учишь стандарт языка, который напрямую привязан к железкам, а у железок нет стандарта. Глупость какая то.
Не привязан, вот и весь секрет. То, что он был мотивирован железками, не значит, что стандарт к ним привязан намертво.
> И как стандарт сихи описывает работу с третичной логикой (да такие компы то же были)?
Во-первых, можно задаться вопросом, как так вышло, что троичных компьютеров нет (и едва ли они были). Во-вторых, опять таки, скорее всего Сишка на таком компьютере просто невозможна (только если преобразованная, нестандартная). Так тоже бывает. И то, я не уверен насчет того, что невозможна.
> Крч пустая трата времени. Глянь дефайны на своей машине и кодь приложуню, не будь макакой которая срет тут нечитабельной хуетой зато по стандарту.
А потом переносим проект на другой комплюктерн и БАЦ, БАЦ, БАЦ
Кстати, никто не запрещает использовать platform-specific и implementation defined фичи, просто делать это надо в меру, и только когда это целесообразно.
Аноним 21/08/23 Пнд 21:28:29 2814375 540
>>2814363
В каком примере? Про принтф я и не говорил, что это уб, а спрашивал. Если ты про INT_MAX + 1, то сорян, но даун здесь ты, а не я :(
Аноним 21/08/23 Пнд 22:11:15 2814404 541
Хуй знает о чём вы вообще, но с точки зрения асма, когда ты в принтф передаёшь, что-то типа такого:

char c = 128;
printf("%d%", c); \\ он напечатает -128

то вывод на конечных этапах будет выглядеть так:

mov ax, byte[пер_арг]
...
syscall

где пер_арг это переданная в принтф переменная c, следовательно, в ах будет значение 0xff == 0b11111111, то есть все остальные нули, которые были переданы в принтф, чтобы преобразовать его к инту не учитываются, иначе было бы напечатано 128.
Вообще это дело связано с соглашениями о вызовах, которые требуют выравнивания по 16-ричному адресу, что связано с архитектурой х86_64.
Аноним 21/08/23 Пнд 22:23:44 2814411 542
>>2814404
>Вообще это дело связано с соглашениями о вызовах, которые требуют выравнивания по 16-ричному адресу, что связано с архитектурой х86_64.
А не, я чёт хуиту сморозил, выравнивание нужно для rsp.
Аноним 21/08/23 Пнд 22:43:34 2814416 543
>>2814373
Карочи классическое врети. Ставлю точку.
Аноним 21/08/23 Пнд 22:48:49 2814418 544
>>2814404
Знаковый бит перенесется в старший байт на всех архитектурах.
Аноним 21/08/23 Пнд 23:04:20 2814430 545
>>2814418
Да, но берётся именно байт, иначе было бы значение -2147483647.
Аноним 21/08/23 Пнд 23:05:37 2814432 546
Аноним 21/08/23 Пнд 23:10:41 2814440 547
Аноним 21/08/23 Пнд 23:15:00 2814445 548
Я не понимаю о чем вы тут спорите и вы наверное тоже не понимаете о чем говорите вообще.
Аноним 21/08/23 Пнд 23:20:47 2814447 549
>>2814416
Какое "врёти"? Ты бы хоть прочитал для начала, что я написал. Я сказал, что существование шестибитного компьютера не отменяет того, что в Си байт не может быть шестибитным, хоть ты усрись. Если очень захочется для такого компьютера написать компилятор Си, то придётся сделать байт (char) 12-, 18-, да хоть 60-битным, но 6-ти битным он не будет, иначе это не Си.
Аноним 21/08/23 Пнд 23:31:37 2814452 550
>>2814447
Ну выходит что чар не всегда равен байту. Опять врети?
Аноним 22/08/23 Втр 00:58:29 2814480 551
>>2814452
Нет, не выходит, потому что байт в стандарте это не то же самое, что машинный байт. Ты пойми, слово одно и тоже, но значения разные.
Аноним 22/08/23 Втр 07:56:01 2814535 552
>>2814480
Ахахах эти виляния жопой попущенного стандартодебила.
Аноним 22/08/23 Втр 09:03:13 2814581 553
>>2814404
Пиздос, я чёт вчера и здесь объебался, ведь -128 == 0b10000000 в двоичном представлении. Чёт вчера везде где только можно объебался.
Аноним 22/08/23 Втр 09:20:04 2814591 554
>>2814581
Кодить по границам типов это вообще супермразотная техника.
Аноним 22/08/23 Втр 10:02:49 2814611 555
>>2814591
Не знаю о чём ты, но, в принципе, типов не так много, поэтому можно и изучить их границы, а там уже на автомате будешь выбирать нужный тебе тип.
Аноним 22/08/23 Втр 10:14:12 2814635 556
>>2814611
Да похуй на вас. Сборище додиков. Один со стандартом носится как со святым писанием, второй кодит неподдерживаемую хуйню, которая для проца еще и неудобная. Ай билять, делайте чо хотите, макаки.
Аноним 22/08/23 Втр 10:55:56 2814674 557
Аноним 22/08/23 Втр 14:30:56 2815133 558
А я хелло ворлд сделал без ютуба, вот.
Аноним 22/08/23 Втр 15:35:21 2815272 559
>>2815133
Проверь теперь на наличие UB, а то мало ли.
Аноним 22/08/23 Втр 16:10:35 2815318 560
16164794197530.mp4 543Кб, 1280x720, 00:00:03
1280x720
Аноним 22/08/23 Втр 16:44:34 2815339 561
Аноним 22/08/23 Втр 16:57:06 2815354 562
image.png 281Кб, 1024x520
1024x520
Аноним 22/08/23 Втр 17:40:56 2815409 563
>>2815354
Денис, ты? Я твой одноклассник.
Аноним 22/08/23 Втр 17:59:15 2815424 564
Аноним 22/08/23 Втр 18:46:37 2815511 565
>>2815424
Вайлом по гетчару разбирать поток?
Аноним 22/08/23 Втр 19:08:14 2815545 566
>>2815424
Блин чот я не туда думаю. Наверное трабл в том что чар[10] и в него тупа могут пульнуть строку длиннее и записать в какой нить служебный сегмент всякую бяку. Но эт в теории, чот я не уверен в такой возможности.
Аноним 22/08/23 Втр 19:16:26 2815562 567
image.png 205Кб, 702x535
702x535
Аноним 22/08/23 Втр 19:19:25 2815571 568
>>2815562
На стр. 291 не оч. описана проблема переполнения буфера. Об этом лучше почитать у Криса Касперского, либо в какой-нибудь другой книге по безопасности или в той, где описываются различные виды атак и всяких там мальварей, троянов, и т.д. и т.п.
Аноним 22/08/23 Втр 19:20:38 2815573 569
>>2815571
>>2815562
Ну на служебных адресах рам стоят флажки доступа и типа хер ты туда чо запишешь, разве не так?
Аноним 22/08/23 Втр 19:22:42 2815577 570
>>2815573
Ну, грубо говоря, в строку можно закинуть команды машинного кода, которые смогут прыгнуть туда, куда потребует пенетратор. Вообще, я сам не особо в этом шарю, т.к. ещё не дошёл до книг Криса Касперского и других книг по безопасности.
Аноним 22/08/23 Втр 19:38:17 2815620 571
>>2815272
Что такое UB? Вижу что о нем часто говорят в треде, но лично его еще не встречал. Звучит как интересный мужик.
Аноним 22/08/23 Втр 19:39:43 2815624 572
Аноним 22/08/23 Втр 19:53:55 2815651 573
>>2815624
> int i = 5;
> i = ++i + ++i;
Я так сделал и на меня теперь ругаются. Но мне понравилось.
Аноним 22/08/23 Втр 20:31:38 2815708 574
image.png 423Кб, 960x540
960x540
Аноним 22/08/23 Втр 20:35:15 2815715 575
>>2815651
>Я так сделал
Бедный Дениска, написал целый абзац о том что так делать не надо а оне делают. Ну и кто типерь дурак?
Аноним 22/08/23 Втр 20:40:11 2815719 576
>>2815651
>Ускоряется работа программ (так как не нужно проверять всевозможные «маргинальные» случаи).
Маргинал! Покинь тред уважаемых господ!
Аноним 22/08/23 Втр 21:15:38 2815747 577
Смех5.webm 418Кб, 640x360, 00:00:04
640x360
Аноним 22/08/23 Втр 22:28:52 2815793 578
>>2814535
>>2814635
>>2815272
Блядей корёжит от моего базированного мнения про стандарт))
Аноним 23/08/23 Срд 05:58:49 2815919 579
c-exp.png 5Кб, 953x82
953x82
>>2814404
> char c = 128;
> printf("%d%", c); \\ он напечатает -128
так просто смотри, что тебе умный компилятор пишет и не делай так
Аноним 23/08/23 Срд 08:52:50 2815971 580
1692769970078.jpg 115Кб, 800x800
800x800
Аноним 23/08/23 Срд 13:41:33 2816252 581
>>2815133
А я сделал мейкфайл для твоего хелловорлда. Кооперация.
Аноним 23/08/23 Срд 14:06:39 2816285 582
Аноны, а чем отличается эта конструкция:

for (i = p; i != id; i = id);

от этой:

i = p;
if (i != id) i = id;


где id[] это целочисленный массив, а p это целое число, которое принимает программа через ф-цию scanf()?
Аноним 23/08/23 Срд 14:11:42 2816293 583
>>2816285
Стандартодебил, ты?
Аноним 23/08/23 Срд 14:21:14 2816312 584
>>2816293
Нет, просто вычитал эту конструкцию
>for (i = p; i != id; i = id);
в одной книге и хочу понять отличия от этой конструкции
>i = p;
>if (i != id) i = id;
Аноним 23/08/23 Срд 14:34:25 2816320 585
image.png 22Кб, 638x516
638x516
>>2816312
Ёбанный двач, убирает всё важное!
Вот так эта программа выглядит - смысл её в том, что она решает связные задачи, но я хочу понять именно эту конструкции, и то почему именно её употребили.

https://pastebin.com/rHg1RsX2
Аноним 23/08/23 Срд 14:45:25 2816327 586
>>2816320
Что за книга в которой не объясняют примененный алгоритм?
Аноним 23/08/23 Срд 14:49:28 2816332 587
>>2816327
Седжвик "Алгоритмы на Си"
Там есть объяснение, но мне не понятно, почему именно эту конструкцию применили.
Аноним 23/08/23 Срд 14:53:55 2816333 588
>>2816332
Давай сюда объяснение.
Аноним 23/08/23 Срд 14:58:59 2816338 589
image.png 58Кб, 896x420
896x420
image.png 147Кб, 767x622
767x622
>>2816333
Тогда надо начать с пикрил 1, а потом пикрил 2
Аноним 23/08/23 Срд 15:02:21 2816341 590
Снимок экрана 2[...].png 675Кб, 1816x1104
1816x1104
Снимок экрана 2[...].png 652Кб, 1834x1116
1834x1116
>>2816285
Разница в том что фор работает по шаблону ду вайл и один прокрут тела точно будет, а потому фор крутанет 2 цикла
Иф выполнится 1 раз

Нахуй оно тебе надо - да мне похуй.

Протестировано на рисках.
Поправь если я не понял алгоритм.
Аноним 23/08/23 Срд 15:03:07 2816342 591
>>2816338
Ну чтоб юнионы собрать, там же написано.
Аноним 23/08/23 Срд 15:09:10 2816350 592
>>2816341
Понял! Спасибо!

>>2816342
Так это понятно. Цель ясна, но средство не особо понятно.
Аноним 23/08/23 Срд 15:17:55 2816363 593
>>2816341
>фор крутанет 2 цикла
1, но точно крутанет его даже если по условиям не должен, стартовый прокрут как в ду вайле

другое дело что у анона тела форов пустые, та что книжка хуйню какюу то предлагает писать
Аноним 23/08/23 Срд 16:50:03 2816470 594
printf("My float: %f\n", 1 / 5 * 2); -> 0.000000
Это у вас такие приколы, да? Как мне дробное число получить-то блять?
Аноним 23/08/23 Срд 17:02:12 2816474 595
Аноним 23/08/23 Срд 17:06:06 2816478 596
>>2816474
Тогда другой вопрос. Вот я скастовал, получил
0.000064. Как мне получить uint 0.000064 * 1000000?
Синтаксис, моё почтение нахуй. (float)a / b и гадай блять, что за (float) и к чему он относится, к a, или к небу, или к Аллаху или ко всему выражению
Аноним 23/08/23 Срд 17:08:27 2816481 597
>>2816478
>0.000064. Как мне получить uint 0.000064 1000000?
(uint) (0.000064
1000000)?
Аноним 23/08/23 Срд 17:09:27 2816484 598
>>2816478
скастовать блять, ты же маг нахой
Аноним 23/08/23 Срд 17:09:54 2816485 599
>>2816478
в твоем примере каст относится к а
Аноним 23/08/23 Срд 17:11:13 2816486 600
Аноним 23/08/23 Срд 17:18:53 2816495 601
>>2816478
прекрасный синтаксис, самый лучший в мире
можно одним движением поменять вычисления например вот так

float a = 12.5;
float b = 6.3;

float result1 = (float) a / (float) b;
int result2 = (int) a / (int) b;
int result3 = (int)(a/b);
float result4 = a/(int)b;

сильно не придирайся к примерам, чисто на коленке нацарапал
Аноним 23/08/23 Срд 17:23:10 2816498 602
>>2816495
А есть возможность кастить в uint8/16 etc например, или каст не влияет на выделение памяти, а просто говорит компилятору тип?
Аноним 23/08/23 Срд 17:25:14 2816500 603
>>2816498
да куда угодно можно кастить, ты же маг нахой
хоть в структуру кастуй
Аноним 23/08/23 Срд 19:13:33 2816615 604
>>2816498
Можешь кастить uint16_t в uint8_t и так далее, будет сохраняться младший байт.
Аноним 23/08/23 Срд 21:11:25 2816712 605
А я могу накастовать себе зарплату с шестью нолями после первой цифры и работу чтобы 2 часа в день на удаленке?
Аноним 23/08/23 Срд 22:01:07 2816766 606
>>2816712
Конечно можешь - ты же маг, в конце концов!!
Аноним 23/08/23 Срд 23:55:17 2816831 607
>>2816766
Да, я маг! Волшебник!
Аноним 24/08/23 Чтв 14:12:33 2817233 608
11.png 19Кб, 842x642
842x642
В общем. Базово - вроде разобрался в Vim'ом на винде.

Теперь вопрос. Как прикрутить к нему LS, чтобы подсказочки там, ссылочки, переход к определению и всякие рефакторинги, чтобы как в VSCode короче.
Аноним 24/08/23 Чтв 14:14:07 2817235 609
>>2817233
Бля. Я тредом промазал...
Хотя думаю не важен же тред. Думаю проблемы вима на винде и у сишников должны быть. Так что все равно тута мож кто ответит.
Аноним 24/08/23 Чтв 15:10:21 2817280 610
>>2817233
Ни вим миллиард плагинов. Пояндекси те что делают твои штуки хуюки. Мимо сижу на ви.
Аноним 24/08/23 Чтв 15:37:57 2817295 611
Снимок экрана 2[...].png 208Кб, 1598x356
1598x356
Блять похоже надо реверс инженерингом заниматься. Нихя не понятно стало. Чо там за система окон на макоси? И как на сях под нее чот написать? Дайте пример симпол окна на сях под макось.

На шинде винапи, на юниксах иксы(xlib) а на макоси чо? Пишут что кути, но кути обертка над xlib а иксов в макоси я не обнаружил

Вощим дайте пастбин симпол окна на макось в сях или мне придется зайти в богомерзкий икскод, нахуякать там сипол окно на богомерзком свифте, скомпилить, трансфернуть опкоды в асм и затем из асма ковырять исходник на сях и вот этим всем я ваще не хочу заниматься.
Аноним 24/08/23 Чтв 15:55:37 2817308 612
Снимок экрана 2[...].png 27Кб, 1398x50
1398x50
>>2817295
Ну должны быть Х11, ну и где они?
Крч аноны помогайте, я потерял иксы.
Аноним 24/08/23 Чтв 16:24:36 2817333 613
>>2817308
>>2817295
>а на макоси чо?
Эти петухи потёрли свои либы для ру-пользователей, чтобы мы не кодили на их "прекрасных" компах и осях.
Аноним 24/08/23 Чтв 16:31:47 2817339 614
>>2817333
Чо несешь то? Икскод со своим обжектив си или свифт кодирует же. Значит си то же может. Вопрос как?
Линковщик силанга то же грит хуй знает чо за Х11 не вижу нихуя.
Ну блять заебись сука падла.
Аноним 24/08/23 Чтв 16:50:26 2817359 615
>>2817339
Переходи на линукс. Макось-петухи не позволяют нормально кодить.
Аноним 24/08/23 Чтв 17:02:41 2817378 616
>>2817359
На пинусе у меня клава и тачпад в иксах не подтянулись, так что надо будет поковырять хал наверн или иксовые конфиги, крч попердолиться. А я пока не хочу пердолиться, хочу просто оконный хеловорлд на макоси написать. Но вот не получается.

Если тестить на qt то тама кумейк ебучий генерит мейкфайл с мусором под g++ ни того ни другого у меня нет, я даже тестить не буду эту парашу.

ГТК вестимо на макоси не бывает.

Остается хлиб. Кыс кыс кыс блять.
Аноним 24/08/23 Чтв 21:10:09 2817679 617
>>2816341
А что за риски? Тоже хочу попробовать взять, но хз что.
Аноним 25/08/23 Птн 09:23:00 2817851 618
Аноним 25/08/23 Птн 12:33:54 2818000 619
Аноним 25/08/23 Птн 13:01:14 2818015 620
>>2818000
Типо ты не увидел на скринах маковский терминал?
Аноним 25/08/23 Птн 13:41:04 2818047 621
>>2818015
А я хз какой на маке, похож на одну из бесконечных светлых тем гнома.
Аноним 25/08/23 Птн 14:20:47 2818096 622
>>2818047
Ну так то да. Дипиай на скринах слышком высокий для дефолтных гну/линуксов. То же один из маркеров эплодевайсов.
Аноним 25/08/23 Птн 16:57:38 2818247 623
>>2817295
>>2817308
>>2817333
В общем я нашел вот эту какаву
https://translated.turbopages.org/proxy_u/en-ru.ru.2a6d2fe7-64e8b0be-645589d1-74722d776562/https/stackoverflow.com/questions/30269329/creating-a-windowed-application-in-pure-c-on-macos

Остается загадкой нахуя они так сильно завернули колбеки в жопу иксам, но лично мне прям осейчас абсолютно поебать, я просто не хочу перепрыгивать с сей на свифты ебаные ради как ой то операционки.
Аноним 25/08/23 Птн 17:18:08 2818281 624
Снимок экрана 2[...].png 1851Кб, 2880x1800
2880x1800
>>2818247
Маненько поковырял эту какаву. Судя по выводу тут та же структура что и в свинге жабы. Виндоу в ней панелька и уже в панельке все остальное (хз чо в этой какаве есть, лайоут манагеры, батоны, лейблы...)

Крч пойду читать про какаву и с чем ее едят.
Аноним 25/08/23 Птн 19:06:05 2818571 625
>>2818281
скинь тут потом в итоге получившийся hello world для яблока
Аноним 25/08/23 Птн 19:10:46 2818582 626
А еще я нашел ответ куда запрятали иксы и пример на чистых иксах, так что в принципе в жопу эту какаву.
Аноним 25/08/23 Птн 19:11:48 2818583 627
Аноним 25/08/23 Птн 19:19:33 2818589 628
Снимок экрана 2[...].png 685Кб, 2136x722
2136x722
Снимок экрана 2[...].png 80Кб, 314x356
314x356
>>2818571
Ну вот например обжектив си в файле си скомпиленный с флажками под обжектив си и какава фреймворк
буду добавлять как только тесты заведуться, пример на пьюр си пока не завелся потому что он не под эпол силикон, но там есть под эпол силикон.
Аноним 25/08/23 Птн 20:07:06 2818658 629
Снимок экрана 2[...].png 316Кб, 2702x396
2702x396
Снимок экрана 2[...].png 243Кб, 2868x302
2868x302
>>2818589
Пример с википедии на голых иксах не компилился потому что хидеры иксов не лежат по пути из википедии. Пришлось поискать их файндом. Судя по выхлопу я чота нашел.

Проверим лежит ли там нужный xlib.h пик2 говорит что лежит

Ну чтож, теперь у нас два путя:
первый - хуярим новую запись в $path консольки чтобы гцц умел цеплять xlib по инклюду <X11/Xlib.h>
второй - заинклюдим хлиб с полным прописанным путем до него

Кароче я щас пытаюсь победить эти референсы туповатые, которые не могут найти блять файлы, уже даже скопировал в папочку отдельно, но это не помогло. В общем надо экспортить новый референс для $PATH под путь к Х11 хидерам. Иначе чота прям слишком трудно получается. Займусь этим в следующий раз.
Аноним 25/08/23 Птн 20:46:00 2818693 630
Снимок экрана 2[...].png 487Кб, 1818x1100
1818x1100
Снимок экрана 2[...].png 711Кб, 1868x1112
1868x1112
>>2818658
Ну я пока что хз если честно.
Вроде бы прописал путь, но чота все равно он не хочет цепляться.

Я пробовал прописывать путь как Х11/инклюдс, пробовал напрямую присвоить путь в переменную
Наверное я что то делаю не так, но я пока не знаю что именно.
Аноним 25/08/23 Птн 21:47:50 2818721 631
>>2818693
Макось-петухи не дадут тебе спокойной жизни!!!
Аноним 25/08/23 Птн 21:59:54 2818726 632
>>2818721
Да мне кажется это на стаке хуйню советуют. Откуда они взяли вообще переменную окружения C_INCLUDE_PATH? Я прочекал стой zsh и он такой переменной не пользуется. Похоже надо пути прописывать в конфиг набора инструментов gcc или в ckang или в cc, только я пока что не знаю чо там по конфигам и откуда gcc черпает относительные пути.

Ну есть второй вариант - скопировать всю папку хидеров туда где лежит stdio.h, то место ведь gcc уже знает.

Ну и может кто из пердоликов подскажет как прописать пути корректно.
Аноним 25/08/23 Птн 22:28:25 2818759 633
>>2818726
>набора инструментов gcc или в ckang или в cc
Так они же же должны пользовать пути баша/зэтша?
Аноним 25/08/23 Птн 22:31:54 2818763 634
Снимок экрана 2[...].png 434Кб, 1328x1148
1328x1148
>>2818759
Да хер пойми, я то же так думал, но чот вроде бы и нет выходит.
Скомпилил первый пример на чистом си под фреймворк какаву.

Потестил гцц через абсолютные пути до иксов и наконец то цепанулось, но срет ошибками об анделаредах. Прочекал хидеры из папки иксов и реально там тупо нет прототипов функций построения окошек. Ни одной. Хмм. Вот петухи!!!
Аноним 25/08/23 Птн 22:33:23 2818765 635
Аноним 25/08/23 Птн 22:38:16 2818768 636
Аноним 25/08/23 Птн 22:38:53 2818769 637
>>2818765
Да это не поможет. Там в иксовом примере всякие XCreateWindow() и прочие функции задействованы, а в хидерах не лежат их прототипы, то бишь линкеру не от куда их линковать. Это значит что кроме хидеров с дефайнами всякого говна и структур должны быть еще статичные либы по типу libX11.so которую надо уже слинковать по типу gcc ... -lX11 и вот тогда тела этих функций попадут в обджектдамп приложуни и все заработает, но эплопетухи не оставили мне в СДК статик библы
Аноним 25/08/23 Птн 22:40:55 2818771 638
>>2818769
Понял! Тогда хз как это решить.
Аноним 25/08/23 Птн 22:43:55 2818774 639
>>2818769
>The value of COMPILER_PATH is a colon-separated list of directories, much like PATH. GCC tries the directories thus specified when searching for subprograms, if it cannot find the subprograms using GCC_EXEC_PREFIX.

А это не пробовал?
Аноним 25/08/23 Птн 22:50:23 2818778 640
Аноним 25/08/23 Птн 22:56:28 2818781 641
>>2818771
>>2818774
>>2818778
Есть вариант чекнуть какаву на предмет как она строит окна, коллдамп глянуть крч. Какава как и кути и всякие там мотиф ксав и прочие хуйни это же обертка над иксами. То бишь так или иначе они тягают иксовые интерфейсы.

Но не сегодня уже.
Аноним 25/08/23 Птн 23:00:07 2818786 642
>>2818781
Крепись, анонче! Ты близок!!
Аноним 26/08/23 Суб 09:43:36 2818928 643
Снимок экрана 2[...].png 434Кб, 1328x1148
1328x1148
>>2818571
Вот первый удачный компил
https://pastebin.com/FWq7ZufL
Мейкфайл не буду постить, там в шапке комментарий как скомпилить и сурс статьи. В той же статье есть пример на интелы.
Аноним 26/08/23 Суб 14:19:43 2819097 644
Снимок экрана 2[...].png 298Кб, 760x1146
760x1146
Снимок экрана 2[...].png 22Кб, 420x92
420x92
Снимок экрана 2[...].png 81Кб, 594x322
594x322
Снимок экрана 2[...].png 87Кб, 624x358
624x358
В общем я тут немножко поковырялся и вот результаты моих исследований. Эплопетухи вырезали из иксов все интерфейсы через которые можно было бы покодить приложуни на чистых иксах. Но взамен у них есть их собственный фреймворк разного уровня - Cocoa (она же какава, какао, главное не чай "Ява" и не кофискрипт).

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

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

Так же в интернетах пишут, что надо ставить XQuarz фреймворк если хочешь писать под иксы. Мне лень пока что с этим заморачиваться, но имейте ввиду.

Компил под либы у эплопетухов как я понял то же приобретает дополнительный флажок в жопе -framework
А все фреймворки соответственно лежат кое где, но там нет фреймворка Х11, а те обравки где он есть не имеют статик либ или любого другого описания львиной доли функционала (как я уже и говорил).

Вощим вердикт такой - пьюр си под иксы на ОС Х возможен, но надо ставить фреймворк XQuarz. А так пишем на пьюр си под фреймворк предназначенный для свифта/обжектив си и не паримся.
Аноним 26/08/23 Суб 15:27:36 2819204 645
Аноним 26/08/23 Суб 19:37:53 2819494 646
Аноним 26/08/23 Суб 19:47:13 2819506 647
>>2819494
Нет. Я для себя это делаю. Хочу свою ГЛ потестить, алгоритмику, оптимизации, шейдеры, может быть сделаю какой нить САПР, но пока что особых планов нет, кроме как написать рейтрейсинг и реймарчинг. Есть некоторые задумки как описать моушен на полигональных объектах.

Еще мб пощупаю воксели, но не знаю насколько вообще это будет актуально.
Аноним 26/08/23 Суб 21:28:56 2819634 648
Крч все я сдаюсь. Мне просто нужна была рабочая вью форма для ковыряния пикселей, но с этой трансляцией сишника в обжектив си колбеки внутри карбона заебешься. Надо все колбеки переписывать на сишник, читай портировать карбон на пьюр си.

Попробую ка я лучше XQarz накатить и под иксы поковыряться, там то более менее все знакомо.
Аноним 26/08/23 Суб 21:53:57 2819639 649
>>2819506
Понял! Знатно ты долбишься с этим, конечно.
Аноним 27/08/23 Вск 11:26:30 2819879 650
а есть те, кто в реальных новых проектах сталкивался с ограничениями, что нужно использовать только C89, а не C99 хотя бы?
Только не потому, что так захотелось начальству, а что реальное ограничение техническое. Потому что вроде как уже не осталось таких платформ, где не было бы C99, а при выпуске новых платформ тоже особо желающих не находится, чтобы там был строго C89, а чаще всего вообще прикручивают LLVM и не парятся с языками потом.
Видимо уже нет смысла начинать какие-то новые проекты под C89
Аноним 27/08/23 Вск 12:39:47 2819934 651
>>2819879
В BSD такой фигней вроде страдают во имя обратной совместимости. Там все микросервисы внутри sbin написаны по шаблонам ультрастарых стандартов по типу

int
main ()
{
return 0;
}
Аноним 27/08/23 Вск 16:21:12 2820159 652
>>2819934
спасибо, был не в курсе, а еще что-то есть?
просто уже даже микроэлектроника уже на c99 как минимум сидит давно или вообще на плюсах с подтягиванием раста, не говоря уже про какие-то там игровые консоли
Аноним 27/08/23 Вск 16:37:05 2820165 653
image.png 20Кб, 606x99
606x99
>>2819879
>вообще прикручивают LLVM и не парятся с языками потом
"Не парящиеся с языками" - на пике, вот так говношлепят из говна в мочу и обратно и вместо исправления надеются на боженьку. А могли бы код писать своими руками, но куда там макакам, конечно не могли. На пикче кстати хрюст.
Аноним 27/08/23 Вск 17:41:32 2820208 654
>>2820159
Да разве не поебать чо там говношлепы делают? Пусть хоть на скратче микрухи кодируют какая нам разница? Рыночек порешает рано или поздно.
Аноним 27/08/23 Вск 18:41:31 2820267 655
>>2820208
ну мне к тому, что все новые либы уже можно на C99 спокойно писать, а то вкусностей там есть, хочется, получается везде кроме BSD это зайдет
Аноним 27/08/23 Вск 19:05:05 2820318 656
Вопрос назрел.

Оператор break откуда выходит? Разве только из тела цикла? Из тела свича ведь он то же выходит. А выходит ли он из записи стека?

Вот например
{ ...код1... if(1) break; ...код2... }

Как себя ведет процесс в тайо ситуации? При открытии фигурной скобки будут присвоены новые значчения на rbp rsp то бишь это новая запиь стека. Но брейк заставит выйти из нее, или мне надо сделать ретурн чтобы выйти из нее?

В общем есть у меня блок ифов и мне вот надо чтобы при заходе в один из них следующие не вычислялись на истинность, но я та же не хочу использовать оператор goto. В общем надо сделать логику свича ифами по причине того что в свиче можно юзать только константные литералы (если можно так выразиться), а у меня неконстантные по логике.
Аноним 27/08/23 Вск 20:36:59 2820475 657
>>2820318
Блять про стандарты хуй вас заткнешь а такую простую хуйню разложить - пук среньк сразу все в кусты попрятались. Хули толку с вас в этом итт треди тогда? Выебываться мифическими знаниями о хуйне которая никогда не пригодиться?

Полагаю надо делать так
...
{
...
if(a) { dosomething; return;}
if(b) { dosomething; return;}
...
}
...

/thread
Аноним 28/08/23 Пнд 06:45:50 2820673 658
>>2820475
тебе надо чтобы каждую ветку каждый раз что ли проверял твой свич?
Аноним 28/08/23 Пнд 08:11:45 2820688 659
>>2820318
goto нужен как раз для таких ситуаций, когда у тебя есть большое вложение и тебе нужно из него прыгнуть, когда программа уже что-то сделала. Только используй его для прыжка вниз по коду. Этого дебича >>2820475 не слушай, потому что ретёрн это возврат из ф-ции. Если не хочешь юзать goto, тогда переписывай логику, чтобы не было больших вложений, либо тогда каждый иф оформляй в ф-цию, а после выполнения кода возвращайся ретёрном, но это какое-то говнокодерство, ибо проще выпрыгнуть из большого вложения.
Аноним 28/08/23 Пнд 10:47:09 2820765 660
>>2820318
>>2820475
Попробуй так

switch (0){
case 0:
if(a) { dosomething; break;}
if(b) { dosomething; break;}
...
}

Тот же goto, но за этот не обоссут.

З.Ы.: напомните, почему goto считается зашкваром?
Аноним 28/08/23 Пнд 11:52:12 2820815 661
>>2820765
Хмм, вот это тема.
>З.Ы.: напомните, почему goto считается зашкваром?
Бэд стайл. Предубеждения. Интересно линтер переваривает гоуту?
Аноним 28/08/23 Пнд 17:57:15 2821205 662
Снимок экрана 2[...].png 857Кб, 2880x1800
2880x1800
Я написал компайр строк. Как вам? Можно ли сделать его быстрее?
Аноним 29/08/23 Втр 13:33:18 2821975 663
Снимок экрана 2[...].png 518Кб, 2880x1800
2880x1800
Снимок экрана 2[...].png 582Кб, 1174x1426
1174x1426
Ну ладно, двачик, я вижу вы тут все серьезные дядьки и не хотите обсуждать двустрочные лагоритмы.
Ну вот тогда может быть кто то пояснит за этот лагоритм? Почему сишник не пишет число 111 в другой участок памяти? Что за избирательность?
Аноним 29/08/23 Втр 15:59:56 2822129 664
>>2821975
> (result+i+1) = 0;
Ты завершающий ноль не в то место пихаешь.
Аноним 29/08/23 Втр 16:15:05 2822155 665
>>2822129
Точняк! Спасибо, уже голова опухла.
Аноним 30/08/23 Срд 20:50:35 2823875 666
Снимок экрана 2[...].png 150Кб, 460x910
460x910
Анон ты когда нибудь делал три-вьювер? Поделись исходниками?
Аноним 30/08/23 Срд 22:43:30 2823965 667
image.png 61Кб, 668x765
668x765
Что это такое? Исходники юниксовой утилиты, никогда такого не видел.
Аноним 30/08/23 Срд 23:07:23 2823971 668
>>2823965
где то дефайны зарыты
ну или это перлосырец из масачусетской бсдяхи
в бсд вообще любят перл
Аноним 30/08/23 Срд 23:14:47 2823980 669
>>2823971
Да, ты угадал, код парсера из doas, хрен знает что это такое и где почитать вообще можно.
Аноним 30/08/23 Срд 23:22:10 2823986 670
>>2823980
Странные у тебя увлечения - смотреть сырцы утилиты, которая хуй знает чо делает.
Аноним 30/08/23 Срд 23:32:43 2823995 671
>>2823986
>которая хуй знает чо делает
Да нет, вполне известно - аналог sudo.
Аноним 01/09/23 Птн 00:14:16 2825358 672
Че если я добавлю хотяб одну переменную то мой массив не читается. Это типа из-за того, что память переполненна в стаке и надо уже в хип добавлять?


#include <stdio.h>
#include <unistd.h>
int main(){
void holp();
void printsetka(char setka[4][4]);
char setka[4][4];
for(int b=0;b<4;b++){
for(int k=0;k<4;k++){
setka[k] = '#';
}}
int a,b,c,d;

while (0 == 0){


for(a = 0; a < 4; a++){
setka[0][a] = 'X';
printsetka(setka);
setka[0][a] = '#';
sleep(2);
}
for(b = 1; b < 4; b++){
setka[3] = 'X';
printsetka(setka);
setka[3] = '#';
sleep(2);

}
for(c = 2; c > -1; c--){
setka[3][c] = 'X';
printsetka(setka);
setka[3][c] = '#';
sleep(2);

}
for(d = 2; d > 0; d--){
setka[d][0] = 'X';
printsetka(setka);
setka[d][0] = '#';
sleep(2);

}}}
void printsetka(char setka[4][4]){
for(int b=0; b<4;b++){
printf("\n");
for(int y=0;y<4;y++){
printf("%c ",setka[y]);
}
printf("\n");
}
printf("\033[2J\033[1;1H");
}
Аноним 01/09/23 Птн 09:22:40 2825504 673
Снимок экрана 2[...].png 52Кб, 582x472
582x472
>>2825358
во первых на пастбин почему не залил? не уважаешь нас? хочешь чтобы мы не только в твоем говне ковырялись но еще и в поехавшей разметке макабы?

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

в третьих поздравляю с днем знаний
Аноним 02/09/23 Суб 12:19:30 2826686 674
>>2825504
>в третьих поздравляю с днем знаний
Анон, и тебя! Всем мощных знаний!!!
Аноним 02/09/23 Суб 21:38:47 2827258 675
Снимок экрана 2[...].png 357Кб, 1456x776
1456x776
Снимок экрана 2[...].png 934Кб, 2880x1800
2880x1800
Так, пердолики.
У меня есть бинарник.

Как мне его "установить" при помощи сценариев сборки мэйк?
Мейкфайл прикреплю пиками в один не влезло
Ну делаю я sudo make install
Бинарь залезает в нужный путь вся хурма. Но блять переменная PATH экспортируется только в оболочке вызова мейка, а не глобально. А как мне новый путь добавить в $(PATH) чтобы он теперь там глобально жил то?
Аноним 02/09/23 Суб 22:15:22 2827297 676
2023-09-02 22.0[...].jpg 40Кб, 678x520
678x520
>>2827258
У меня есть некоторые догадки, но я пока не знаю как разрешить сей консенсус.
Вощим. Мейк использует какой то свой любимый шелл, каждый раз заного запуская оболчку для каждой строчки сценария. И поидее я могу явно указать какой шелл надо юзать (ну например мой родной шелл надо юзать) и тогда мейк экспортнет PATH в моем родном шелле и поидее все заработает.

Но. У юзера может стоять другой шелл. Баш например. Как мне угадать/прочитать какой юзершелл используется и в какой оболочке экспортить PATH?
Аноним 03/09/23 Вск 22:26:37 2828126 677
>>2827297
Ладно, никто не знает.
Оказывается надо было в юзер локал бин сунуть бинарник.
Аноним 05/09/23 Втр 19:57:59 2830311 678
>>2825358
Что значит массив не читается? Программа падает или что? Стек на Винде 2 мегабайта, поэтому вряд ли ты его переполнил. Скорее всего у тебя запись за пределы массива идёт, которая разрушает весь стек твой . С телефона лень вчитываться , но если инфу об ошибке скинешь, то попробую помочь.
Аноним 08/09/23 Птн 13:08:59 2833235 679
Ну и какое слово из спам-листа присутствует в шапке треда? Чому не даёт перекатить тред?
Аноним 08/09/23 Птн 19:28:46 2833710 680
>>2833235
Да хуй знает. Не забудь двачезвезды в шапку добавить. Выше по треду были.
Аноним 09/09/23 Суб 15:57:26 2834591 681
image.png 12Кб, 317x301
317x301
Помогите нубу.
Что я делаю не так? Почему красненьким горит?
Аноним 09/09/23 Суб 17:25:18 2834709 682
Аноним 09/09/23 Суб 20:54:07 2835040 683
Аноним 09/09/23 Суб 22:30:00 2835171 684
>>2834591
кто же вас научил по гайдам в ютюби смотри без смс и регистрации писать один и тот же нейм структуры и типдефа?

typedef struct {

} name;

struct name {

};


а по поводу твоего IDE хз, вероятно как раз из за нейминга он желает чтобы ты там указал struct result ведь у тебя нейминг похерен

стдио чо не в угловых скобках?
Аноним 07/10/23 Суб 11:47:38 2869322 685
Аноним 09/10/23 Пнд 14:17:28 2871711 686
>>2812749
>Где можно посмотреть, как реализуется кастомный протокол поверх tcp/udp?
гугли
zeroaccess botnet analysis
zeus gameover botnet analysis
sality botnet analysis
kelihos botnet analysis
conficker botnet p2p protocol
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов