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

Ответить в тред Ответить в тред
C Programming Language #60 /clang/ Аноним # OP 08/08/20 Суб 23:24:57 17722901
C Propaganda.jpg 1970Кб, 2000x2610
2000x2610
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- №57: http://arhivach.ng/thread/563334/
- №58: http://arhivach.ng/thread/573804/
- №59: http://arhivach.ng/thread/597021/ >>1754859 (OP)
Аноним 09/08/20 Вск 01:29:44 17723632
Правда ли, что на Си, скорее всего, написано больше всего из ныне существующего кода на пданете Земля? И это первый и самый весомый аргумент бессмертия Сишечки как ЯПа, со всеми его недостатками? Так как переписывать несколько сотен миллиардов строк кода никто не будет, очевидно.
Аноним 09/08/20 Вск 01:45:14 17723673
>>1772363
Несколько сотен миллиардов не будет, а 50 тыс строк — вполне будет. Так и наберется пара тысяч анонов на весь мир, которые в итоге все что будет нужно перепишут.
Аноним 09/08/20 Вск 01:49:34 17723694
>>1772363
Думаю на Бейсике (всех диалектов) и Паскале (+дельфи) написано побольше.
Аноним 09/08/20 Вск 02:03:50 17723735
>>1772367
В одном только линуксе миллионов 20 строчек на Си.
Аноним 09/08/20 Вск 02:48:39 17723806
>>1772367
> 50 тыс строк — вполне будет
Я за 3 года двачевания капчи в нии больше написал.
Аноним 09/08/20 Вск 03:40:56 17723857
>>1772369
Сильно сомневаюсь.
Аноним 09/08/20 Вск 04:16:02 17723898
>>1772363
Тут еще сложно определиться, считать ли Сиси++/Си-с-классами/Си-с-расширением-cpp крестами или няшной.
Аноним 09/08/20 Вск 11:07:54 17724559
>>1772389
Все что компилирует компилятор крестов это кресты. А личные шизоклассификации никому не нужны, они у каждого свои.
Аноним 09/08/20 Вск 12:05:23 177247810
>>1772385
Я просто помню сколько было только книг по ним. И сколько приложений с говноформами на дельфях и вижуал бейсике. В каждой фирме по нескольку было.
Аноним 09/08/20 Вск 12:09:59 177248111
>>1772385
Или вот например COBOL который в банках
Bank of New York Mellon, he is responsible for the health and welfare of 112,500 Cobol programs, 343 million lines of code, that run core banking and other operations.
Аноним 09/08/20 Вск 12:11:46 177248412
>>1772481
343 миллиона против нескольких сотен миллиардов строк кода на Си, лол)
Аноним 09/08/20 Вск 12:15:46 177248613
>>1772484
Так это только ОДИН банк. Понимаешь?
Аноним 09/08/20 Вск 12:21:56 177249014
1503843724485.jpg 57Кб, 630x605
630x605
>>1772484
Все равно прикладного кода написано в разы больше, чем системного. А если вспомнить, в каком стиле принято писать например на Java, то по такой синтетической метрике как LOC она улетит очень далеко вперед тупо на бойлерплейте
Аноним 09/08/20 Вск 12:57:36 177250715
>>1772380
> 50 тыс строк
>за 3 года двачевания капчи в нии
Нафиг ты там пахал как не в себя? Тебе там что, 70к платили?
Аноним 09/08/20 Вск 13:14:23 177251616
>>1772290 (OP)
Поясните, откуда появились зумерки, дрочащие на стандарты и UB?
Раньше, во времена дидов, прогали так - прочитаешь K&R, изучишь стандартную библиотеку, порешаешь задачки и вперед прогать. Диды писали качественный код (в стиле MISRA C) который будет одинаково работать на любом компиляторе и легко читается.
Сейчас же зумерки обмажутся своими стандартами, а потом пишут нечитаемый говно-код, аля:
Z = (X >= Y & Z) ? X * Y + Z : X + Z / Y | Z;
а когда им говоришь, что их код - говно, то они возмущаются и говорят "здесь все по стандарту, ты не шаришь, иди читай стандарт, чтобы понять, что я написал".
Не пойму, откуда они взялись, они перекатились в Си из Джавы или из новомодных параш типо Го и Раста?
Аноним 09/08/20 Вск 13:17:10 177251817
Как вывести цветной текст в консоли виндоуса?
Аноним 09/08/20 Вск 13:55:14 177253818
>>1772516
>Диды писали качественный код (в стиле MISRA C) который будет одинаково работать на любом компиляторе и легко читается.
Ха-ха-ха. Какой бесстыдный манямир. Не обманывай зумеров, урод. То, что какой-то старый код качественный - это ошибка выжившего. За 30 лет хороший и нужный код почистили, а вот те залежи говнокода так и остались в истории.
>а потом пишут нечитаемый говно-код
Диды в их возрасте время писали что-то типа

void initcializacia() {
int peremennaya1, peremennaya2, peremennaya3;
//200 строк кода
if (peremennaya1 >= peremennaya2 & peremennaya3)
peremennaya3 = peremennaya1*peremennya2+peremennaya3
else
peremennaya1 = короче ты понял

Как же я ненавижу даунов, которые реально думают, что они родились уже опытными кодерами и всерьез сравнивают себя со школьниками.
Аноним 09/08/20 Вск 14:09:35 177255419
>>1772516
>откуда появились зумерки, дрочащие на стандарты и UB?
с хабра

>Z = (X >= Y & Z) ? X * Y + Z : X + Z / Y | Z;
Эта хуйня иногда компилятором лучше оптимизируется чем цепочка ифов.
Аноним 09/08/20 Вск 14:24:49 177257020
Аноним 09/08/20 Вск 14:31:34 177257921
>>1772516
деды не были security aware от слова совсем. Деды писали код, который могла взломать даже тупая обезьяна.
Что-то типа такого:
char buffer [228];
gets(buffer);

Когда у людей открылись глаза на то, что можно делать нехорошие вещи таким образом (уже во времена зумерков), то эти самые зумерки начали писать куда более чистый и безопасный код, нежели пердеды.
Аноним 09/08/20 Вск 16:00:26 177264122
>>1772579
Твои программы дидов были по сегодняшним меркам почти идеально защищенными, ибо машины не были подключены к сети круглосуточно, как теперь. Тогда такой стиль кодирования грозил разве что багами и сегфолтами.
Аноним 09/08/20 Вск 16:02:46 177264323
>>1772538
>Диды в их возрасте время писали что-то типа
program abc;
uses crt,graph;
var a,c,d:integer;
begin
a:=100;
b:=200;
d:=300;
writeln('otsosi u programmista');
end.
Аноним 09/08/20 Вск 16:52:23 177267124
Покормлю жирных.

>Z = (X >= Y & Z) ? X Y + Z : X + Z / Y | Z
Для дедов это было читаемо и абсолютно понятно, потому что они попросту обладали б
о*льшим математическим бекграундом, чем современные макаки, и нотация выражений ими воспринималась очень легко.

>читаемость
Это по большей части мем, придуманный корпоративными погонщиками в годы первых бумов программирования, просто простой способ увеличить эффективность макаки, и при этом уменьшить ее ценy. Естественно писать понятно важно, но зумерки и сами не очень понимают почему.
Аноним 09/08/20 Вск 16:58:18 177267825
>>1772671
Да это и сейчас читаемо и понятно, хз у кого могут быть с этим проблемы, может у школьника с дефицитом внимания у которого моск не может сосредоточиться на одном символе и взгляд начинает скакать туда-сюда?
Аноним 09/08/20 Вск 17:38:00 177273726
>>1772490
Еcли коpотко
ДЛЯ TЕX, КTО НЕ ПОНЯЛ, что cейчac пpоизошло - объяcню нa пaльцax: пpедcтaвьте вы пpиxодите нa cобеcедовaние водителем гpyзовичкa в Мaгнит
1. Cнaчaлa тебя мyчaют вопpоcaми, почемy мaшинa едет вообще, можно cлегкa cпpоcить физики об yгловой cкоpоcти пpи движении нa выпyклом моcтy, дaдyт пpоcтyю зaдaчкy вычиcлить ее для опpеделенной кpивизны моcтa и cкоpоcти гpyзовичкa
2. Зaтем вопpоcы по ycтpойcтвy гpyзовичкa: кaк пеpебpaть движок или cнять коленвaл. B целом, ты когдa-то этим зaнимaлcя или влaдеешь нa ypовне "я видел, кaк это делaетcя", поэтомy нa cловax можно донеcти оcновнyю идею
3. Зaодно cпpоcят, кaк вообще paботaет тpaмвaй, нy и кaкой-нибyдь дизель-поезд TЭП-70, и до кyчи велоcипед. Xоть ты дaвно и не кaтaешьcя нa велике, yже лет 10 кaк, но что-то в пaмяти оcтaлоcь и ты paccкaзывaешь, кaк пеpебpaть втyлкy, вилкy, cпицы и вcе тaкое. B оcтaльныx вопpоcax делaешь лишь кaкие-то пpедположения, т.к. никогдa не был мaшиниcтом поездa или тpaмвaя. Но дaть пpaвильный ответ кpaйне желaтельно
4. Зaтем тебя caжaют нa тaбypеткy, дaют бapaнкy в pyки, и говоpят “поеxaли, зaбеpем тaм cо cклaдa нечто и отвезем нa aдpеc тaкой-то”. Aдpеca зapaнее неизвеcтны. B это вpемя ты должен изобpaзить, кaк едешь по yлице в ycловияx огpaниченной yзкой yлочки, вcе повоpоты должен помнить нaизycть по пaмяти без нaвигaтоpa, зaтем paзгpyзитьcя y мaгaзинa. B это вpемя нa тебя cмотpят, кaк ты пеpеключaешь пеpедaчи (веpбaльно, без мaшины), оценивaют cтиль вождения и количеcтво нapyшений. Потом говоpят, нy окей, вpоде пpиеxaли. A потом дaют обpaтнyю cвязь, что вот, во вpемя интеpвью вы тaм по доpоге выеxaли paзок зa cплошнyю, a в конце и вовcе окaзывaетcя пеpеxaли пешеxодa. Пpи этом пpодолбaлиcь по вpемени и не пpиеxaли вовpемя нa cклaд.
Поэтомy по внyтpенним pacпоpядкaм компaнии мы вac не можем взять кaк водителя кaтегоpии ЦЭ
Аноним 09/08/20 Вск 17:40:15 177276727
>>1772579
Джунoв ебут как никoгда раньше. Кoличеcтвo вкатывальщикoв мнoгoкратнo превыcилo пoтребнocти рынка и требoвания к нынешнему джуну - этo middle+ в какoм-нибудь 2016.
Чтo парадoкcальнo, тех же senior, пo прежнему не избытoк и их еще бoлее-менее хантят. Ho дo этoгo ещё надo дoжить.
Middle прoпал как клаcc и теперь в перехoде из junior в senior oтcлеживаетcя c трудoм.
Аноним 09/08/20 Вск 17:40:39 177277428
>>1772484
Вcё так, рабoтаю миддлoм (5 лет oпыта) фрoнтoм в миллиoннике, летoм ycтраиваем cтажирoвкy, на 10 меcт каждый гoд приxoдит бoльше coтни резюме c выпoлненным TЗ. Зарплата cтажёра c каждым гoдoм тoлькo yменьшаетcя, лoл. Как же я прoигрываю c джyнoв нынешниx, кoгда пoнимаю, чтo oни бyдyт зарабатывать на yрoвне oфиc менеджерoв, а c вкатышей, кoтoрые тoлькo начинают шевелитьcя и бyдyт пoлyчать как прoдаван в пятёрoчке - вooбще co cмеxа пo пoлy катаюcь. Mне-тo пoвезлo, я вoвремя влез.
Аноним 09/08/20 Вск 17:41:59 177279029
>>1772643
Читaю нoвoсти, и вижу, чтo кoe-гдe ужe нaхуй пoслaли джунoв. Кoe-гдe зaмopoзили зapплaты, нe гoвopя ужe o тoм, чтo дoллap пoднялся. Дaлeкo нe всe в бaксaх пoлучaют. Щaс aйтишникaм зapплaты peжут нa 30-40%.
Аноним 09/08/20 Вск 17:42:03 177279130
>>1772641
>дpoпнyл BУЗ
Te, ктo yчатся в баyманкe, на карандашe y кадрoвикoв всяких майкoв да цискo
Te, ктo yчатся в МИСИСe, тe на карандашe y 1С и прoчих Group-IB
Te, ктo врываются, - на карандашe y OOO Bазгeн и сынoвья
Аноним 09/08/20 Вск 18:14:37 177282931
>>1772778
За копейки и работа должна быть простой и легкой, копеечной. Если же хотите хорошей работы, извольте платить.
Аноним 09/08/20 Вск 18:32:30 177284432
>>1772791
>Te, ктo yчатся в баyманкe, на карандашe y кадрoвикoв всяких майкoв да цискo
>Te, ктo yчатся в МИСИСe, тe на карандашe y 1С и прoчих Group-IB

Хуйня, я учился в 5 разных вузах Москвы, в том числе и Бауманке, и МИСИСе, и МГУ, и ВШЭ - пока ты сам жопу не поднимешь, никто тебя на карандаш не возьмет, пусть даже если ты неебаца отличник с ФКН
Аноним 09/08/20 Вск 19:14:45 177286233
>>1772844
>пока ты сам жопу не поднимешь, никто тебя на карандаш не возьмет,
Никогда не понимал, что значит "поднимать жопу, крутится, подскакивать кабанчиком".
Какой конкретно порядок действий подразумевается под этими словами? Что именно мне нужно сделать?
мимо 1-курсник программной инженерии мухасранскава вуза...
Аноним 09/08/20 Вск 19:15:08 177286334
hqdefault (12).jpg 10Кб, 480x360
480x360
>>1772790
>>1772791
Че несет, блять? Какие вузы, какие зарплаты? Речь про уязвимости шла.
Аноним 09/08/20 Вск 20:36:11 177292335
>>1772862
Общаться с преподами, подписываться помогать во внеучебке, посещать конференции, всякие межвузовые взаимодействия, делать исследования просто по кайфу и показывать преподам, участвовать в студенческой внеучебке (клубы по интересам), ну и естественно хорошо учиться
Не знаю сколько из этого есть в мухосранских вузах.
Аноним 09/08/20 Вск 20:38:54 177292836
upd: участвовать конечно же нужно в нормальной внеучебке, двигать столы на рандомных встречах руководящего состава вуза это конечно дно для тех кому физру надо закрыть, но чтобы попасть в нормальную обычно сначала занимаются этим
Аноним 09/08/20 Вск 20:45:46 177293237
>>1772862
Ну, как минимум нужно походить по собеседованиям, чтобы тебя взяли.
Но раз ты на 1 курсе, найди себе корешей и ходи с ними на хакатоны и студенческие конференции. Обычно их организуют местные айти конторы, может и вас заметят.

И самое главное - если просто пинать хуй, то ты останешься говном после любого вуза.
Аноним 09/08/20 Вск 20:58:23 177293638
Аноним 09/08/20 Вск 22:24:21 177298539
>>1772641
В 1988 году червьпидор Морриса, который распространялся через эксплуатацию переполнения буфера в fingerd, положил больше половины тогдашнего Интернета (если не 80%). Что еще расскажешь?
Деды говнокодили. И да, если твоя программа сегфолтится, да еще и не при диких edge кейсах, то ты говнокодер. И большинство дедов ими и были.
Аноним 09/08/20 Вск 22:35:50 177299140
>>1772985
Ты сам-то подумай, если бы кейсы а-ля чеврь Морриса были чем-то серьезным, то они бы такую хуйню не писали. А на деле все пользовались антивирусами. И еще рекомендую почитать всякие аналоги Мейерса тех лет, там были всякие ебанутые примеры в духе "а тут мы удаляем буфер два раза, смотрите не охуейте, дети. Прост компилятор писали мудаки и в нем баг, ничо потерпим"
09/08/20 Вск 23:05:01 177299741
>>1772991
> если бы кейсы а-ля чеврь Морриса были чем-то серьезным, то они бы такую хуйню не писали
Так именно после Морриса все и заговорили об эксплуатации buffer overflow, и начались попытки научиться писать так, чтобы их не было.
Аноним 09/08/20 Вск 23:20:56 177300242
>>1772991
>1988
>антивирусы
Жжошь
Аноним 10/08/20 Пнд 00:26:26 177303043
>>1772991
> уязвимости нулевого дня
> антивирусы

No comments. Земля пухом, как говорится.
Аноним 10/08/20 Пнд 00:51:51 177304444
Братва, кто там следит за сиюминутными течениями? Расскажите, в новом 2к20+ мире нам что-то перепадет? Вон, webassembly этот -- оно про нас? Что еще ждет из свеженького?
А то сижу, угрюмый, и думаю -- что делать следующие лет пять:
а) дальше пердолить Сишку, POSIX, задрачивать computer science в целом, лысеть и слепнуть;
б) идти садиться в какой-нибудь веселый node.js - хайпо-поезд, где все красочно, быстро и идиотично, люди смеются просто так и заливают себе смузи прямо в штаны.
мимо джун пять лет стажа
Аноним 10/08/20 Пнд 01:13:55 177304945
>>1773002
>>1773030
Про эвристические анализаторы не слышал, мань?
Как ты эту уязвимость собрался эксплуатировать, если юзвери выходят в инет раз в месяц по выходным или вообще не выходят никогда?
10/08/20 Пнд 01:31:05 177305146
>>1773049
Какие юзвери, если атакованы были рабочие станции/сервера? Какие нахуй эвристические анализаторы? Это сейчас железки могут трафик в реалтайме мониторить, а раньше они маршрутизировали-то с трудом.
Аноним 10/08/20 Пнд 01:37:13 177305347
>>1773049
Какой нахер эвристический анализатор в 1988? Ты там че куришь? Там дай боже первые антивири в принципе появились, а ты уже приписал маняфантазии что они у всех стояли.
Аноним 10/08/20 Пнд 02:26:57 177307348
>>1773049
Эвристические анализаторы работают через раз в лучшем случае, особенно когда полезная нагрузка зашифрована, что нередкость в 2к20 году. Компании не просто так боятся зиродеев, и не просто так ведут учет CVE каждый год. Решал бы антивирус эти вопросы по-настоящему эффективно - проблема зиродеев отпала бы сама собой, но на практике АВ эффективен только против файлов, на которых есть сигнатура. Тем более, есть немало случаев, когда в самом антивирусе была дыра, которая позволяла запускать от его лица произвольный код, лол.

Офк на тебя, васяна, никто зиродей тратить не будет, но вот высокопоставленные чины, компании, люди, которые слишком много чего знают - мишени. И определенный круг людей это великолепно понимают.
Аноним 10/08/20 Пнд 03:30:54 177308349
>>1773049
>Про эвристические анализаторы не слышал, мань?
В 88 году? Мань, у тебя сейчас под столом компьютер, который мощнее самого мощного суперкомпьютера в 1988. Какие эвристические анализаторы, им бы байты успеть по портам разложить и не обмякнуть.

Пиздец конечно стареть и видеть, как комплексующие ровестники выдумывают какую-то хуйню про прошлое, а потом находятся какие-то зумерки, которые им верят, и дальше на этой цепочке самоподдува возникают какие-то легенды про героическое прошлое с летающими драконами. Старый код - говнокод. Старый неговнокод - исключение, за 30 лет много раз пропатченное и переделанное. Средний дед программировал крайне хуево, потому что источников знаний о том, как программировать правильно, у него не было - потому что не нашлось того, кто написал книгу. Никаких драконов в прошлом не существовало. Школьники в прошлом вели себя как школьники, долбоебы как долбоебы, а гениев как было 1 на миллион, так и осталось.
Аноним 10/08/20 Пнд 04:09:27 177308950
96df26c182001a7[...].png 94Кб, 980x736
980x736
>>1773051
>>1773053
>>1773073
>>1773083
А вот и бомбанутые диды понаползли.

Это вы еще пиксельных хипстоподелок в стиме не видели, вот уж где простор для бомбежа про "Нипроуда!11 В Golden Axe и DOTC не так усе былО!!1!11".
10/08/20 Пнд 04:32:29 177309051
1459165749234.jpg 2Кб, 640x400
640x400
>>1773089
Ну на компах до ПеКа где я начинал, пиксели и правда были попроще. Да и шлака на самом деле тогда делали столько же.
Аноним 10/08/20 Пнд 04:38:20 177309352
>>1773090
Что за игра? Верблюдом идти?
Аноним 10/08/20 Пнд 10:00:07 177314953
>>1773044
>джун пять лет стажа
На си джун?
Аноним 10/08/20 Пнд 10:13:21 177315654
>>1773149
>Си
>джун
Делишь на ноль.
В си берут только сразу синьоров.
Аноним 10/08/20 Пнд 10:18:39 177315755
>>1773044
>webassembly этот -- оно про нас?
А смысл вебассембли? Все равно сайтики на си и си плюс плюс в здравом уме никто писать не будет.
Аноним 10/08/20 Пнд 11:17:09 177319056
>>1772373

Большая часть которых - ядерные дрова для всей возможной хуйни.
Аноним 10/08/20 Пнд 11:46:55 177321857
>>1772516
А что короткая запись это какое-то новшество которого раньше не было?
Как по мне вполне нормально читается, если дать нормальные имена переменных.
Аноним 10/08/20 Пнд 12:22:35 177324158
>>1773044
>идти садиться в какой-нибудь веселый node.js

Это нужно было 10 лет назад делать, сейчас node.js уже не модный и не веселы, провалился как бэкенд и остался лишь запускалкой тулзов для вротенда.

А во вротэнд нужно было года 3 -2 назад вкатываться, до ковидлы.
Аноним 10/08/20 Пнд 12:31:57 177324359
>>1773157
Смысл в том, что в вебассембли можно срать в память, что открывает потрясающе огромный attack surface
Аноним 10/08/20 Пнд 12:39:34 177324760
>>1773157
Т.е. убили няшный флэш только ради того, чтобы сделать свой особенный открытый швабодный флэш, в котором от оригинала оставить только дыры, а остальное выкинуть нахуй? Збс, чо.
Аноним 10/08/20 Пнд 13:34:10 177327761
>>1773243

Нельзя. Точнее можно но память та виртуальная поверх выделенного массива с контролем границ.
Аноним 10/08/20 Пнд 15:07:10 177334962
Аноним 10/08/20 Пнд 15:34:09 177335563
Аноним 10/08/20 Пнд 16:56:31 177340764
>>1773218
Во-первых, нужно использовать операторы if else, а не тернарный оператор ? : .
Во-вторых, блоки инструкци должны быть заключены в фигурные скобки.
В-третьих, приоритет арифметических и логических операций нужно указывать скобками.
Но нет, зумерки напишут говнокод, а потом громко кудахчут, "у меня все по стандарту, я стандарт читал, ко ко". И им похуй, что что бы разобрать их код, программистам, которые поддерживают их код, придется открывать стандарт и пытаться понять, что имело в виду это "юное дарование", и похуй, что их код, написанный по стандарту, скажем, для языка С11 будет работать одним образом, а на компиляторе С99 и С89 по-другому.
Аноним 10/08/20 Пнд 17:12:26 177340965
>>1773407
>нужно использовать операторы if else, а не тернарный оператор ? :
Не нужно.
>блоки инструкци должны быть заключены в фигурные скобки.
Это потому что ты только что выдумал блоки вместо выражения.
>приоритет арифметических и логических операций нужно указывать скобками.
Не нужно, приоритет арифметических операций проходят во 2м классе школы.

Аноним 10/08/20 Пнд 17:16:11 177341366
15879151825500.png 527Кб, 900x900
900x900
>>1773407
Пидор, нахуя ты продолжаешь кудахтать про стандарт, холоп?
Стандартобоярам и так понятно, что у тебя жопа уже насквозь прогорела.
Аноним 10/08/20 Пнд 17:21:07 177342167
Каким компилятором пользуются господа отрицающие GNU?
Аноним 10/08/20 Пнд 17:22:22 177342568
10/08/20 Пнд 19:17:13 177352269
51qOYA71kkL.jpg 64Кб, 386x500
386x500
>>1773083
> Никаких драконов в прошлом не существовало.
Ну как же. А пикрелейтед?
Аноним 10/08/20 Пнд 19:33:14 177352970
>>1773421
>отрицающие GNU
Это как?
Аноним 10/08/20 Пнд 19:40:37 177353171
>>1773529
"I use Linux as my operating system," I state proudly to the unkempt, bearded man. He swivels around in his desk chair with a devilish gleam in his eyes, ready to mansplain with extreme precision. "Actually", he says with a grin, "Linux is just the kernel. You use GNU+Linux!' I don't miss a beat and reply with a smirk, "I use Alpine, a distro that doesn't include the GNU coreutils, or any other GNU code. It's Linux, but it's not GNU+Linux."

The smile quickly drops from the man's face. His body begins convulsing and he foams at the mouth and drops to the floor with a sickly thud. As he writhes around he screams "I-IT WAS COMPILED WITH GCC! THAT MEANS IT'S STILL GNU!" Coolly, I reply "If windows was compiled with gcc, would that make it GNU?" I interrupt his response with "-and work is being made on the kernel to make it more compiler-agnostic. Even you were correct, you wont be for long."

With a sickly wheeze, the last of the man's life is ejected from his body. He lies on the floor, cold and limp. I've womansplained him to death.
Аноним 10/08/20 Пнд 19:48:33 177353572
>>1773531
>work is being made on the kernel to make it more compiler-agnostic.
Справедливости ради, ядро написано не на Си.
Большинство из следующих используемых в ядре конструкций отсутствуют в языке Си

Вывод типов - typeof(x)
Ассемблерные вставки - asm volatile("pxor %xmm5,%xmm5");
Диапазоны в свитче - case 1 ... 7:
Массивы нулевой длины - some_variable_len data[0];
Адрес вызывающего - ptr = __builtin_return_address(0)
Определение константности выражения - if __builtin_constant_p(c)
Различные атрибуты функций - __attribute__((always_inline))
Подставляемые функции - inline void fun()
Имя текущей функции - my_func_name = __func__
Инструкции-выражения - ({ int a = b + 1; a; })
Переменное число параметров в макросах - __VA_ARGS__
Арифметика с указателями на void - ++void_ptr
Неконстантные инициализаторы - int arr[2] = { x, y }
Аноним 10/08/20 Пнд 20:09:45 177354773
>>1772290 (OP)
Хочу кодить маленькие хуевинки под разный mips, управляемый древним как говно линуксом и прочими бизибоксами. Желательно ветси разработку под вендой, в уютной студии не старше 2015.

Во что придется вкатываться, в си или в плюсы, и есть ли у меня выбор? Если есть, то что посоветуете?
10/08/20 Пнд 20:21:27 177355674
>>1773535
> Справедливости ради, ядро написано не на Си.
Справедливости ради, в Си есть расширения, их использование делает программу (и компилятор) не соответствующими стандарту, но язык от этого не меняется. Некоторые расширения (для справки) перечислены в стандарте (Annex J), многие из них настолько распространены, что их реализуют абсолютно все.

> __builtin_return_address
Никак не нарушает стандарт, можно реализовать библиотекой.

> __attribute__((always_inline))
Скоро будет стандартом, но с другим синтаксисом.

> inline
> __func__
__VA_ARGS__
Лолшто?

> int arr[2] = { x, y }
Если переменная arr автоматическая - все ок.

>>1773547
> Желательно ветси разработку под вендой
Нежелательно. Бери линукс, бери qemu-mips, подавай ему рутфс и не страдай с кросскомпиляцией. Или бери шланг под виндой и страдай.

> в уютной студии
Будет максимально неуютно.
Аноним 10/08/20 Пнд 20:27:14 177356575
>>1773556
> Нежелательно
> неуютно

Понятно. А что с языком-то? Си или плюсы и какие есть варианты?
Аноним 10/08/20 Пнд 20:34:49 177357276
>>1773565
Зависит от компиляторов которые код для твоего говнеца генерировать умеют. Скорее всего Си, только вот совсем не факт, что нормальный, лол.
Аноним 10/08/20 Пнд 20:40:58 177357977
>>1773572
Ну в прошлый раз я сделал CC=gcc и скросскомпилил хуйнюшку (чужую).

> нормальный
Что именно ты имеешь ввиду под нормальностью? Я в нюфажестве из 8086 сразу на формочки Борланда съебал, так что в этим вашем си-лоре разбираюсь слабо.
Аноним 10/08/20 Пнд 21:08:43 177358878
>>1773556
>язык от этого не меняется
Очень толсто. Расширения это и есть изменения языка.
Аноним 10/08/20 Пнд 21:10:06 177359079
>>1773413
Стандарто-манька, поклюй зернышек.
Аноним 10/08/20 Пнд 21:19:17 177360080
>>1773409
Если ты делаешь пет-проект только для личного пользования - можешь делать, как хочешь, но в продакшене придерживаются определенного code-style, который включает в себя большинство правил MISRA C или хотя бы CERT.
>>нужно использовать операторы if else, а не тернарный оператор ? :
>Не нужно.
А вот в MISRA сказано, что нужно. И в CERT тоже.
>>блоки инструкци должны быть заключены в фигурные скобки.
>Это потому что ты только что выдумал блоки вместо выражения.
Заключать тела операторов if, else, for и т.д. в фигурные скобочки придумали еще Керниган с Ричи, а не я.
>>приоритет арифметических и логических операций нужно указывать скобками.
>Не нужно, приоритет арифметических операций проходят во 2м классе школы.
В Си арифметические операции включают в себя еще и операции булевой алгебры. Со скобочками сразу понятно и код быстрее читается.
Аноним 10/08/20 Пнд 21:25:58 177360581
image.png 28Кб, 378x752
378x752
>>1772290 (OP)
В стандартной библиотеке С89 нет <stdint.h>.
А MISRA требует в обязательном порядке её использовать.
Выходит, что на С89 нельзя написать программу, которая бы соответствовала MISRA?
Аноним 10/08/20 Пнд 21:38:43 177361382
10/08/20 Пнд 21:44:14 177361583
>>1773600
MISRA не запрещает тернарные операторы, ты в очередной раз обосрался, иди стирай штаны.
10/08/20 Пнд 21:46:11 177361784
>>1773565
> и какие есть варианты
Нет вариантов. Обычно мипсы и бизибоксы означают единицы мегабайт памяти, какие тебе там нахуй кресты, бери сишку.

>>1773600
> А вот в MISRA сказано
В MISRA сказано, что маллок нельзя. Иди пиши без маллока, сука! Ты заебал. В MISRA для таких дебилов как ты специально есть раздел Applicability, там рассказывают, для какого конкретно кода предназначены правила, и где именно этот код будет запускаться. Эти правила не о том, как тебе писать свои хелловорлды.

>>1773605
> А MISRA требует в обязательном порядке её использовать.
В MISRA-С:1998 предлагают свои типы определять, так во времена C89 и делали.
Аноним 10/08/20 Пнд 22:01:04 177362585
>>1773617
>В MISRA сказано, что маллок нельзя. Иди пиши без маллока, сука!
Я и так его не использую. Использую только массивы под конкретные нужды, при этом слежу, чтобы при работе программы не произошло переполнение массива и выход за его пределы.
>для какого конкретно кода предназначены правила, и где именно этот код будет запускаться. Эти правила не о том, как тебе писать свои хелловорлды.
Так об этом я и писал.
Свои пет-проекты для гитхаба ты можешь писать, как хочешь, но в продакшене, коде, используемом в промышленности и медицине, будь добр, придерживаться общепринятых правил.
10/08/20 Пнд 22:06:25 177362886
>>1773556
>лолшто
Я написал - большая часть из списка. Что со временем стандартизировали. inline и __VA_ARGS__ стандартизировали только в 1999. __func__ это не стандарт. Поинт в том что ядро можно собрать именно GCC, а не любым компилятором Си если в нем нет расширений.
10/08/20 Пнд 22:09:18 177363287
>>1773625
> Использую только массивы под конкретные нужды
А потом к тебе приходит N+1-ый юзер, и тебя увольняют.

>>1773628
> __func__ это не стандарт
C99, 6.4.2.2 Predefined identifiers: The identifier __func_ _ shall be implicitly declared by the translator и т. д.
Аноним 10/08/20 Пнд 22:12:46 177363588
image.png 26Кб, 906x185
906x185
>>1773615
А писать if-else, for и т.д. без фигурных скобок запрещает.
Я в очередной раз оказался прав.
Аноним 10/08/20 Пнд 22:32:37 177364989
>>1773632
>А потом к тебе приходит N+1-ый юзер, и тебя увольняют.
Как я писал, я делаю защиту от переполнения массива. Один из вариантов защиты от переполнения массива представлен ниже.
Логика кода может быть разной, но принцип защиты от переполнения один - нельзя прочитывать и перезаписывать элементы, которые превышают размер массива.

>/ User came /

>/ To write user to array /

i++;

>/ Overflow protection /
if (i > size_array)
{
    i = 0;
    overflow_array = 1;
};

array = user;
10/08/20 Пнд 22:41:15 177365390
>>1773649
> я делаю защиту от переполнения массива
Я о том же.
- Наша программа поддерживает только 32 юзера! Для изменения этого количества нужно пересобрать ее и развернуть на всех 100500 машинах.
- Уволен!

> if (i > size_array)
> i = 0;
Можете писать это на рекламных проспектах, чтобы люди знали, кого обходить стороной!
Аноним 10/08/20 Пнд 22:50:32 177365591
>>1773617
>какие тебе там нахуй кресты, бери сишку
А разве кресты это не шарп?
Аноним 10/08/20 Пнд 22:53:23 177365792
Аноним 10/08/20 Пнд 22:54:06 177365893
>>1773657
Чо вдруг? цпп всегда были "плюсами", а "крестами" как раз шарп. Ты не зумерок случаем?
10/08/20 Пнд 22:57:03 177366094
>>1773635
Только ты обосрался потому что в арифметическом выражении не пишут if-else.
Аноним 10/08/20 Пнд 23:19:03 177366895
>>1773658
Шарп всегда был решеткой, а плюсы всегда были крестами, на что даже "кресты" во множественном числе намекают, зумерок.
Другой анон.
Аноним 10/08/20 Пнд 23:23:19 177367596
>>1773668
> плюсы всегда были крестами
> плюсы были крестами
> плюсы

А вот это реально тройная рукалицо.

>на что даже "кресты" во множественном числе намекают,

Так-то, решетка это вообще четыре креста, зумерок.

Совсем другой анон.
Аноним 10/08/20 Пнд 23:46:11 177368597
image.png 93Кб, 1000x524
1000x524
image.png 55Кб, 829x752
829x752
image.png 82Кб, 1366x768
1366x768
image.png 118Кб, 602x493
602x493
Визуальная уебищность программ на Qt является следствием лени и/или отсутствия чувства стиля у программистов, или платформа в принципе не позволяет делать годный интерфейс?

Один красивый скриншот богатого интерфейса на Qt будет лучше тысячи слов.
10/08/20 Пнд 23:53:06 177368798
>>1773685
Вы вообще от балды выбираете тред куда срать? Ладно в C++ Qt еще с натяжкой можно писать (хотя это не С++), но в Си тред?
Аноним 10/08/20 Пнд 23:57:05 177369199
>>1773687
>Вы вообще от балды выбираете тред куда срать?
Я об этом подумал, но перевставлять скрины было уже впадлу, к тому же здесь хотя бы кто-то онлайн. А че, на сях с кутэ нельзя писать?
Аноним 11/08/20 Втр 00:01:38 1773695100
Аноним 11/08/20 Втр 02:16:47 1773731101
15878300079840.jpg 66Кб, 567x604
567x604
>>1773613
Но ведь местный петух бесстандартный - это ты.
Тебе и клевать зернышки, манюнь.
Аноним 11/08/20 Втр 02:18:43 1773732102
RRaPYN7Q.png 319Кб, 500x500
500x500
>>1773731
Ой, бля, не тому.
Вот же он, наш петушок бесстандартный: >>1773590
Аноним 11/08/20 Втр 02:27:16 1773736103
Что лучше учить: FLTK или gtk?
Выбираю для написания своих хеллоуворлдов и прочих велосипедов.
Аноним 11/08/20 Втр 02:51:08 1773747104
>>1773736
FLTK проще, имеет няшный код на си с классами, маленький размер бинарников. Из минусов не поддерживает нативные контроллы, и мало готовых виджетов. Также попадаются баги, которые не фиксят годами.

gtk практически единственный кроссплатформенная либа для создания окошек на сишке. Она жирная почти как QT, при этом пилить интерфейс на голом си довольно геморно. Ещё она не собирается статически, под виндой придется таскать с каждым твоим хеллуворлдом пачку ДЛЛок мегабайт на 50.
Аноним 11/08/20 Втр 02:55:18 1773748105
>>1773747
> имеет няшный код на си с классами
Ты тут имеешь в виду C++ или обычные костыльные структуры си с указателями на функции?
Аноним 11/08/20 Втр 03:12:45 1773755106
>>1773748
C++, но из модных модерновых крестовых фич там ничего нет. Вроде даже STL не используются. Только сишные строки, массивы, указатели, только хардкор.
11/08/20 Втр 03:19:39 1773757107
1511893377301.png 55Кб, 1245x858
1245x858
>>1773736
Возможно не совсем то, но посмотри Nuklear (или imgui и так далее)
Аноним 11/08/20 Втр 03:40:26 1773767108
>>1773748
плюсы так-то так или иначе будут удобнее. На плюсах ты можешь писать чуть ли не чистый сишный код, а вот наоборот, увы, нет.
Можешь отказаться от большинства плюх, оставив классы (но не юзая динамический полиморфизм, упорись в CRTP, если позарез нужен бесплатный по рантайму полиморфизм), темплейты, перегрузку функций, дефолтные переменные и прочие зиро-оверхэд конструкции. При компилировании можно вырезать весь балласт исключений вдогонку, например. На выходе получится легкий код, который гибче сишного, а главное ООП (как бы ООП не обсирали, но даже линух, написанный на чистой сишке, активно использует конструкции из ООП через костыли, ибо родного ООП в сях нет).
Аноним 11/08/20 Втр 03:41:25 1773768109
>>1773767
дефолтные аргументы функций
быстрофикс
Аноним 11/08/20 Втр 03:45:57 1773771110
Дайте пример использования CreatePipe для передачи дочернему процессу на стандартный ввод строки или ещё каких-то данных. Не получается найти пример без лишней хуиты, что б чисто только было порождение дочернего процесса и затем передача ему данных.
Аноним 11/08/20 Втр 04:00:22 1773772111
>>1773767
Звучит интересно. Непонятно только
> При компилировании можно вырезать весь балласт исключений вдогонку
Как это можно сделать? Можно ссылочку?
Аноним 11/08/20 Втр 04:02:38 1773773112
>>1773757
>Nuklear
>imgui
Это для игор и прочих 3д приложух работающих в полноэкранном режиме. Для десктопа не очень подходит, т.к. рендерит всё в одно окошко.
Аноним 11/08/20 Втр 06:38:08 1773795113
>>1773773
Большинство программ однооконные.
11/08/20 Втр 08:44:46 1773817114
Аноним 11/08/20 Втр 10:22:17 1773832115
>>1773668
>>1773668
>Другой анон.
Ору пиздец, стандартошизик, тебя видно))
Аноним 11/08/20 Втр 10:36:31 1773835116
>>1773675
>семён засеменил
Иди в крестотред и шарпотред и спроси, что такое кресты.
Аноним 11/08/20 Втр 11:15:51 1773847117
аноны, что в вашем Сишном мирке по вакансиям? Только эмбеддед или есть еще что-то?
Аноним 11/08/20 Втр 11:24:56 1773853118
>>1773817
Это что, ты для какого-то мимокрокодила взял и сам наваял?
Аноним 11/08/20 Втр 12:27:58 1773898119
>>1773772
Хз как в других компиляторах это делается, но в clang и gcc просто передается флаг -fno-exceptions
Аноним 11/08/20 Втр 12:35:30 1773910120
>>1773847
По большей части только эмбедщина. Прикладуху перестали писать на сях еще в 90ых, а вебпараша - другой манямирок и параллельной вселенной.
Аноним 11/08/20 Втр 12:40:22 1773922121
>>1772516
Хорошо мы тебе очко в прошлом треде намылили. Так будет с каждой неграмотной макакой
Аноним 11/08/20 Втр 13:02:34 1773968122
>>1773731
>>1773732
Что, стандартопетушок, так жопу порвало, что уже не видишь, на какой пост отвечаешь, зумерок манямэшный?
Аноним 11/08/20 Втр 13:05:42 1773971123
>>1773922
В прошлом треде разве что тебя всем тредом обоссали, шизик стандартный.
То, что ты знаешь стандарт, не даёт тебе права писать говнокод, вот какую мысль я хотел донести.
Аноним 11/08/20 Втр 13:17:08 1773999124
>>1773971
Неужели тебе настолько лень разобраться в стандарте языка, на котором ты пишешь, что проще защищать какую-то совершенно идиотскую точку зрения на анонимном форуме? Хуёво, наверное
Аноним 11/08/20 Втр 13:25:39 1774020125
>>1773835
>нуб обоссался
>Иди в крестотред и шарпотред и спроси, что такое кресты.

Чтобы там ты же мне то же самое ответил, семен? Я и без двачеров знаю, в чем состоит истина, еще и вас поучить смогу.

Тот первый анон.
Аноним 11/08/20 Втр 13:32:13 1774044126
15953314741460.jpg 76Кб, 592x532
592x532
>>1774020
Ну так иди и узнай на других форумах, проблем-то.
Какой упёртый зумерок.
Аноним 11/08/20 Втр 13:32:24 1774045127
8870f6dfdc9fdf3[...].jpg 8Кб, 226x250
226x250
Аноним 11/08/20 Втр 13:33:13 1774048128
>>1773898
Благодарю, анончик
Аноним 11/08/20 Втр 13:34:30 1774052129
>>1773971
Что, рачок, так и не осилил приоритет операторов?
Аноним 11/08/20 Втр 13:53:17 1774086130
>>1774044
Я и так знаю что к чему, свинья.
Аноним 11/08/20 Втр 14:00:55 1774106131
15830722824990.jpg 36Кб, 400x400
400x400
>>1774052
Он не рачок, он щенок.
Аноним 11/08/20 Втр 15:54:49 1774365132
>>1773999
>лень разобраться в стандарте языка, на котором ты пишешь
По работе(я околоэмбеддер) мне приходится иметь дело и с С11 и с С89, и с С99.
Общее у них одно - они все поддерживают то, что есть в K&R. В остальном они отличаются. Поэтому я придерживаюсь MISRA C и пишу код, который не зависит от компилятора (то бишь код, в котором нет unspecified behavior и undefined behavior).
Вот ты выучил стандарты С89, С99, С11, знаешь, в чем они отличаются друг от друга?
Аноним 11/08/20 Втр 15:58:01 1774371133
>>1774052
Приоритет и в k&r есть, шизик, я его знаю.
Но лучше не писать длинных выражений без скобок, это говно-код, он плохо читается.
В той же книге из шапки треда:
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
советуют так не делать.
Аноним 11/08/20 Втр 15:59:06 1774374134
Аноним 11/08/20 Втр 16:01:42 1774380135
>>1774365
>По работе(я околоэмбеддер) мне приходится иметь дело и с С11 и с С89, и с С99
Работу нормальную найти не пробовал? Где не нужно программировать под некрожелезо
Аноним 11/08/20 Втр 16:08:27 1774395136
>>1774365
Клоун, открой ка K&R параграф A.6.4. Убедись что UB сущесвует прямо в K&R и захлопнись.
Аноним 11/08/20 Втр 16:12:31 1774399137
>>1774395
Я вкурсе, что UB существуют, что с того?
Суть в том, что они не должны отражаться на работе программы.
Аноним 11/08/20 Втр 16:13:15 1774401138
>>1774399
Бляя ты тупое животное
Аноним 11/08/20 Втр 16:17:28 1774407139
Аноним 11/08/20 Втр 16:19:20 1774412140
>>1774407
Ну и чего ты слился, маня?
Аноним 11/08/20 Втр 16:23:13 1774420141
freee.jpg 156Кб, 730x515
730x515
Подскажите почему printf с пропущенными аргументами работает нормально?
Аноним 11/08/20 Втр 16:25:32 1774423142
Аноним 11/08/20 Втр 16:29:53 1774433143
1560162272153.jpg 5Кб, 293x172
293x172
>>1773093
Именно так. Причем это был ассет флип из игры по Звездным Войнам.
Аноним 11/08/20 Втр 16:33:00 1774439144
>>1774420
А ты местами переставь, поймешь. (Вообще то это UB)
Аноним 11/08/20 Втр 16:39:27 1774447145
15393607519401.png 537Кб, 757x502
757x502
>>1774420
Не слушай вот этого >>1774439, он не шарит. Ты все правильно делаешь, так теперь можно. Тебе компилятор просто дооптимизировал недостающие оргументы.
Аноним 11/08/20 Втр 16:39:32 1774448146
>>1774420
>>1774439
Объясню развернутее: за кулисами может происходить примерно следующее
регистрA = 10
регистрB = 2
регистрС = 10-2
вызов printf
-------
регистрА = 10
вызов printf
^ но значения регистрB и регистрC не менялись. А может быть менялись, может в них теперь мусор.
Аноним 11/08/20 Втр 16:40:10 1774449147
>>1774447
Ох уж эти расто тролли
Аноним 11/08/20 Втр 16:42:18 1774454148
>>1774439
Это из Праты пример у него так, и написано что будет случайными цифрами забито. Я так понимаю что где то эти зачения сохраняются.
Аноним 11/08/20 Втр 16:44:36 1774455149
>>1774454
Случайные - неверный термин (там нет рандома). Произвольными.
Аноним 11/08/20 Втр 16:48:06 1774460150
>>1774455
>неверный термин (там нет рандома).
С чего это вдруг?
У тебя проц и озу выполены в радиационностойком исполнении что-ли?
Может нейтрино пролететь и изменить биты в ячейке ОЗУ, такое бывает.
Аноним 11/08/20 Втр 16:48:41 1774462151
Аноним 11/08/20 Втр 16:52:39 1774466152
>>1774462
Её не ставят в обычные пека.
Аноним 11/08/20 Втр 16:58:45 1774474153
>>1774420
В бородатых 90ых не одна сотня прог была нагнута раком через уязвимость форматной строки - это как раз то, что есть сейчас в программе на пикриле. То, что у тебя в четвертом принтэфе, позволяет спиздить 2 значения из стэка. Само по себе это не является прямым путем к произвольному исполнению кода (именно в твоем случае, ибо есть случаи, когда саму форматную строку можно контролировать, и написав туда %n можно добиться примитива на запись произвольных данных в произвольные участки памяти - т.н. write-what-where), но в твоем случае, эксплуатируя данный баг, можно обойти рандомизацию адресного пространства из-за того, что у тебя из-за неправильного принтэфа утекают данные из стэка. Если в такой программе, помимо этого бага, есть еще один, позволяющий произвольно писать в память, то такую программу можно довольно легко взломать (исполнить произвольный код от лица данного процесса).

Но уязвимость форматных строк уже осталась в прошлом, этот баг легко заметить, компиляторы срут ворнингами на этот счет, статические анализаторы кода тоже легко видят такие баги, поэтому в серьезном современном байтоебском софте ты форматную строку не увидишь, разве что в заброшенном легаси, который не трогали с конца 90ых.
Но, понятное дело, не пиши такой код, ибо это небезопасно.
Аноним 11/08/20 Втр 16:59:45 1774475154
>>1774466
Не пизди, у всех сборочках с али стоит.
Аноним 11/08/20 Втр 17:11:24 1774483155
>>1774474
>Но уязвимость форматных строк уже осталась в прошлом
Просто не пользоваться printf :3
Аноним 11/08/20 Втр 18:10:35 1774528156
>>1774483
в сях им все же пользуются, просто обосраться стало куда сложнее - компиляторы стали сложнее, умнее, программисты тоже стали более security aware. Ну и многие компании пользуется статическими анализаторами кода, которые находят такие оплошности моментально.
Аноним 11/08/20 Втр 18:19:25 1774540157
>>1774045
Гринтекст, боевые картиночки. А ни пойти ка тебе нахуй падаль?
Аноним 11/08/20 Втр 19:06:57 1774578158
>>1774374
>>1774540
Как же я понимаю тебя анон. Совсем они тебя обгадили, никаких берегов не знают. Стандартом своим жопы ебут, хотя он никому не нужен.
Аноним 11/08/20 Втр 21:34:19 1774672159
поцоны, а как в системное проганье вкатиться? вуз оттарабанил, с 3 курса работаю (полтора года ембедед, полтора си шарп). Вакансии по системщине вижу - охуеваю. Где вообще набраться опыта, кроме как не в средней крупности конторе - хз. Тем не менее, может здесь есть кто-нибудь, кто работает в этой области. Дайте советы плиз, а то перекладыванием жисонов не очень хочется заниматься
Аноним 11/08/20 Втр 22:32:23 1774719160
Как работает ввод и вывод? У процесса есть область памяти куда данные пишутся, а потом ос оттуда их забирает? Дайте ссылки где можно почитать о этом.
Аноним 11/08/20 Втр 22:56:48 1774743161
Аноним 11/08/20 Втр 22:57:57 1774744162
11/08/20 Втр 23:01:05 1774745163
>>1774719
> Как работает ввод и вывод?
В сишке у FILE есть свой собственный буфер (если не stderr и если не отключишь setbuf()/setvbuf()), fread/fwrite работают с этим буфером, а если он опустошается/переполняется, сишка делает какой-то сорт системных вызовов ОС (read/write), чтобы его наполнить/опустошить соответственно. Как оно там реализовано - зависит от реализации. В какой-нибудь embedded железке оно может тупо по байту читать/писать UART и висеть, пока не закончит. В "больших" ОС системные вызовы реализованы в ядре, ядро выделяет кусок памяти, чтобы туда читать или оттуда писать и выставляет на ожидание операцию ввода-вывода с этим буфером, процесс помечается как ожидающий IO и спит (или не спит, есть неблокирующий IO). Когда драйвер по какому-то событию получает ввод/завершает вывод, он помечает операцию ввода-вывода законченной, ядро снова начинает выполнять соответствующий процесс, системный вызов завершается, fread/fwrite получают управление, а ты получаешь свой ввод/вывод.
Аноним 11/08/20 Втр 23:32:23 1774752164
Аноним 12/08/20 Срд 02:46:01 1774808165
Анон, здарова. Решил написать сайт на Сях.
>дальше не читал

Фронт - html+css, хотелось бы обойтись без js совсем.
Бэк - Си, платформа - linux.

Дай советов мудрых.
Я так понимаю, что мне понадобятся:
1. fastCGI https://github.com/kristapsdz/kcgi какой-нибудь, не знаю.
2. http parser https://github.com/nodejs/http-parser
3. посты, юзеры и говно будут хратиться в mongo, допустим
4. когда настанет время их выдавать, учитывая, что у меня нихуя не rest api, делать буду как в джанге - заполнять данными html шаблон. Что же, получается, нужен какой-то движок под шаблоны? https://gitlab.com/jobol/mustach/ вот эта херня подойдет?

P.S. делать ничего не буду, просто спрашиваю.
Аноним 12/08/20 Срд 02:54:51 1774810166
>>1773687
Мне очень нравится такой интерфейс.

Аноним 12/08/20 Срд 02:56:31 1774812167
Где можно онлайн решать задачки по Си?
В гугле забанили, аноны.
Аноним 12/08/20 Срд 03:09:26 1774817168
>>1774812
В других поисковиках тоже?
12/08/20 Срд 03:21:25 1774822169
>>1774812
> Где можно онлайн решать задачки по Си?
github, любой проект на си, open issues.
Аноним 12/08/20 Срд 11:09:08 1774912170
>>1774808
> делать буду как в джанге - заполнять данными html шаблон
>хотелось бы обойтись без js совсем
Самое смешное, что тормозить-то будет посильнее чем сайты с жсом, потому что ботлнек всё равно будет в сети, лол.
А если задумаешь сделать что нибудь вроде форумной системы — то будет уровень хабра, где комменты без пагинации рендерятся по 2 минуты, лол.
Аноним 12/08/20 Срд 11:10:11 1774913171
15942636665240.jpg 19Кб, 350x301
350x301
>>1774912
Короче, это лол и лол, удачи тебе.
Аноним 12/08/20 Срд 11:19:28 1774920172
>>1773771
> Дочернему процессу
Сыновнему. Процесс - мужского рода.
Аноним 12/08/20 Срд 11:58:54 1774947173
>>1774745
В сишке же есть низкоуровневый без высокоуровневых буферов.
Аноним 12/08/20 Срд 12:21:45 1774975174
>>1774947
И что там есть низкоуровневое? Самое низкое, о чем могу подумать, это непосредственная обёртка сискола write, пишущая байты по адресу, но даже она работает ровно так, как сказал анон, и собственно и находится под капотом у всех ИО функций.
Аноним 12/08/20 Срд 13:09:42 1775017175
>>1774808
Говно без задач, зачем тебе это, ананас?
На сях пишут веб-сервера (типа nginx или apache), ибо там хуйлоуд и нужно упороться в весь возможный перформанс, но ты же просто блять пишешь сайт, зачем?
Ты бы еще на чистом ассемблере пытался его написать, пиздец.
Аноним 12/08/20 Срд 13:24:50 1775026176
>>1775017
Ну дак я думал fastCGI интерфейс nginx'у и скормить.

Хорошо, тогда другой вопрос: если программист на Сях решил сделать себе бложик, какой стек ему можно выбрать?
1) Генераторы статичных веб-страниц, CMS - практично, но это как бы создание контента ради создания контента. Полное отсутствие удовольствия от инженерного процесса.
2) Django - охуенно и быстро. Плюс, питон - это, как-никак, наш младший брат-дебил, который часто выручает. Но Django делает все сама (в т.ч. то, о чем ты ее и не просишь), поэтому удовольствия примерно как от CMS.
3) MERN-стек. Ну, джавоскриптерская тема. Я начал ковырять, но там в джаваскрипте буквально всё ебало, причем 85% кода - это фронт. А почему все ебало в джаваскрипте? Потому что rest api
4) flask - точно так же будет все ебало, потому что rest api

Короче, хоть это и оффтоп, но наверняка у многих из нас есть веб-дев в качестве хобби - поделитесь, что используете.
Аноним 12/08/20 Срд 13:49:13 1775047177
>>1775026
Без обид братиш, но ты какую-то фигню пишешь. Рест это не какой-то интерфейс, а просто набор архитектурных принципов, а rest api - это любое АПИ, используеющее рест архитектуру. Это не какая-то технология, и ты можешь реализовать рестфул ни имея ни строчки жыэс в проекте. Ни фласк, ни мерн, ни меан тебя рестфулы писать не заставляют.

А все что тебе нужно - это открыться на 8080 и написать простой хендлер запросов, хтмлку можешь хоть в const char• хранить, хоть спринтфом собирать, хоть парсить из файла, тебе ее просто нужно завернуть в ответ.
Аноним 12/08/20 Срд 14:00:39 1775062178
>>1775047
Понял (почти). Но ведь на фронте у меня же что-то должно с этим api взаимодействовать, верно?
Аноним 12/08/20 Срд 14:12:11 1775083179
>>1775062
С каким апи-то? Ещё раз, РЕСТ это не апи. И логика на фронте — это точно не про рест. Почитай лучше про веб и как он работает, потому что у тебя очень странное и отдаленное от реальности представление о нем, как я понимаю.
Аноним 12/08/20 Срд 14:23:54 1775099180
>>1775062
Поиграйся с wget или curl
Веб это просто отправка текстовых запросов.
В основе там строка типа GET /pr/index.html HTTP/1.1
После которой идут строки с разными параметрами навроде
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
И в случае запроса POST через отступ новой строки отправляемый контент

В ответ тебе приходит другой набор строк, начинающийся например с
HTTP/1.1 200 OK
Или
HTTP/1.1 404 Not Found
Дальше несколько строк с разными параметрами типа
Content-Length: 1488
Content-Type: text/html
И дальше через отступ в строку сам контент

<html><body>hello</body></html>

Этих знаний тащемта достаточно для обработки статики
Аноним 12/08/20 Срд 14:33:50 1775112181
>>1775062
Реально интересный паренёк =)
Как ты собираешься-то дергать апи с фронта, если ты хочешь без жыеса?
Аноним 12/08/20 Срд 14:42:27 1775120182
>>1775112
Ну дак я и хотел обойтись без api, и формировать страницу на основе шаблонов, как в джанге.
Чел >>1775083 мне начал задвигать, что наличие api на бэке и js'а на фронте никак не связано.
Но выглядит он так, как будто шарит, так что я склонен ему верить.
По поводу того, чтобы слушать 8080 - не вижу смысла делать это за nginx. Ведь если я с ним через fastcgi буду работать, то помимо всего прочего, он возьет еще на себя и работу с ssl-сертификатами. Так ведь?
Аноним 12/08/20 Срд 14:51:07 1775127183
>>1775120
js на фронте нужен для асинхронности. Чтобы когда уже загружена страничка, она отправила запроса на /api/widget, (по таймеру или нажатию пользователем кнопки) получила оттуда скажем json со списком пользователей, и динамично поменяла контент части страницы.
В старом вебе 1.0 этого не было, поэтому при нажатии на ссылку происходил тупо переход по ссылке и перезагрузка страницы. Какой нибудь gmail до сих пор будет работать с отключенным js таким образом.
Аноним 12/08/20 Срд 15:05:10 1775139184
>>1775127
Ну, на самом деле если ты так уж хочешь пофаниться можно и на C написать себе фронт — WASM уже поддерживается всеми.
Аноним 12/08/20 Срд 15:12:35 1775146185
Аноним 12/08/20 Срд 15:38:12 1775160186
>>1775120
>api на бэке и js'а на фронте никак не связано
Именно. Старые статик веб1.0 сайты на джаве/крестах так и работали, логика что-то считала на беке и форматила хтмл строку чтобы вставить ланные перед тем как бросить страницу. Насчет джса тебе другой парень уже верно сказал, но можешь особо не париться, потому что я так понимаю что ты только с ванильным знаком, а с ним даже кашу на фронте не сваришь. Ну можешь в кнопки потыкаться.
Аноним 12/08/20 Срд 17:41:34 1775311187
7e7.jpg 61Кб, 600x516
600x516
Аноним 12/08/20 Срд 18:34:33 1775389188
Кстати, движок двача написан на си
Аноним 12/08/20 Срд 18:54:18 1775413189
external-conten[...].jpeg 22Кб, 474x316
474x316
Аноним 12/08/20 Срд 19:41:18 1775440190
15879151825500.png 527Кб, 900x900
900x900
Аноним 12/08/20 Срд 19:45:52 1775445191
>>1775440
Сейчас так и делают, лол. Дискорд, вскод - там гуй на электроне. Считай, у тебя не просто окошко десктопной аппки открыто, а вкладка в браузере) Выглядит свистопердельно по-зумерски, но бля...
Аноним 12/08/20 Срд 20:32:16 1775472192
>>1775445
Поэтому только телеграмом можно пользоваться
Аноним 12/08/20 Срд 20:36:08 1775478193
600x200.jpeg 27Кб, 600x200
600x200
Аноним 12/08/20 Срд 20:42:38 1775480194
гайс, хочу вкатиться в разработку прошивок на разную эмбедщину. Знаю асм 2 архитектур, Си, кресты (в последнее время больше на крестах пишу, каюсь), основы ОС, писал мелкие байтоебские и околобайтоебские пет-проекты (от 1 до 3к строк кода). Что посоветуете почитать по сабжу? И да, насколько сильно надо вкатываться в хардварь для этого? И надо ли для каждого проекта покупать отдельное железо? Я хочу больше заниматься софтом, но на лоу лвле.
Аноним 12/08/20 Срд 20:47:15 1775482195
>>1775480
забыл добавить - я линуксоид, поэтому мне вся эта движуха с прошивками в эмбедщине, где если и есть ОС, то какой-то кастрированный дистриб Линукса, который запускается даже на картошке, только наруку.
12/08/20 Срд 21:54:17 1775526196
>>1774947
> В сишке же есть низкоуровневый
В сишке нет. Есть в POSIX, есть в Windows API. И, как я уже сказал, можно просто отключить буферизацию, и оно будет дергать read/write на каждый fread/fwrite.

>>1775480
> гайс, хочу вкатиться в разработку прошивок на разную эмбедщину
http://leanpub.com/c_for_embedded_systems (пдф гуглится) Это максимально ньюфажная книга, известные тебе вещи просто пропустишь. Потом можешь взять, например, bluepill и st-link с али за два-три бакса, и, соответственно, Mastering STM32. Или даже просто даташиты, если умеешь читать и гуглить.

> И да, насколько сильно надо вкатываться в хардварь для этого?
Чем больше знаешь, тем проще будет в случае проблем. Умение тыкать осциллографом в плату понадобится без вариантов. Можешь Харрисов полистать и какой-нибудь базовый курс по электронике.

> надо ли для каждого проекта покупать отдельное железо
Что-то надо. Что-то пришлют поюзать. Что-то можно удаленно отладить.
Аноним 13/08/20 Чтв 00:10:38 1775595197
Аноны, если интересно системное проганье, какой пет проект можно заебашить? ну или законтребьютить куда-то? или на худой конец просто почитать хорошие проекты на си какие-нибудь?
И пс, Си вообще (чистый, не плюсы с классами) актуален на рынке?
Аноним 13/08/20 Чтв 00:19:26 1775601198
>>1775595
> если интересно системное проганье, какой пет проект можно заебашить
Если бы было интересно, то вопрос звучал бы "у меня дохуя идей и нет времени, что делать".

> Си вообще (чистый, не плюсы с классами) актуален на рынке
Не очень. И вакансии с сишкой в любом случае не избавляют тебя от необходимости худо-бедно знать кресты.
Аноним 13/08/20 Чтв 09:32:16 1775770199
>>1775601
Как же заебали такие поучатели как ты. Человек спросил примеры пет проектов, которые можно реализовать не охуев, а ты начала блять «еслиб да кабы». В очко себе это «если» засунь.
Аноним 13/08/20 Чтв 10:32:07 1775805200
>>1775595
>какой пет проект можно заебашить
Из прикладного-полезного на си написать что-то стоящее очень сложно и никто этим не занимается.
Вот драйвера какие-нибудь или пердолинг ядра, это да. Правда опять же, я думаю это не очень интересно. Я вот тоже какое-то время писал на си, понял что хуйня и перешел на джаву. Писать легко и приятно, никаких указателей и ебли с памятью, куча библиотек, можно писать под андроид, сервера и десктопики.
Аноним 13/08/20 Чтв 11:19:13 1775830201
>>1775805
просто лоу лвл это не твое. Как по мне, джава - это уныние, а те сферы, где она юзается в проде (по большей части энтерпрайз) - вообще блевать тянет.
Но тут уже смотря к чему тяга. Если челик в душе байтослесарь, то Си/плюсы ему явно зайдут. А если ему больше по душе чето хайлвльное пилить, не думая ни о чем, кроме бизнес-логики, то да, джава/сисярп - его стезя.
Аноним 13/08/20 Чтв 12:04:07 1775853202
casyncawait.png 182Кб, 1914x1125
1914x1125
casyncawaitoutp[...].png 15Кб, 235x901
235x901
Смотрите, какое у меня няшное async/await на макросах. Код бессмысленный, просто чтобы потестить.
Аноним 13/08/20 Чтв 12:50:36 1775909203
Аноним 13/08/20 Чтв 12:56:13 1775918204
>>1775909
кому как
Кому лоу лвл байтослесарство неинтересно, то скорее всего уныло. Хотя я не понимаю что такие люди делают в С треде, лол.
Аноним 13/08/20 Чтв 12:57:31 1775919205
Ребятки, не бейте.
В общем, я начинал с Шарпа, все такое, решил на ступеньку ниже спуститься.
И вот меня что смутило. Почему постоянно при передаче в функцию массива передают два аргумента? Почему бы не обернуть массив в структуру из которой можно будет узнать его длину и размер элемента?
Аноним 13/08/20 Чтв 13:04:14 1775922206
>>1775919
Подозреваю что это медленнее (лишняя запись/чтение в память)
Аноним 13/08/20 Чтв 13:38:35 1775972207
>>1775919
Потому что в сях массивы не обернуты в классы, как это сделано в шарпе. В Си массив - это просто последовательность из N байтов в памяти, на которую у тебя есть указатель. Если ты не передашь в функцию размер массива (количество элементов умноженное на размер каждого элемента), то как ты будешь знать где массив заканчивается?
Запомни, что в Си весь мемори менеджмент не абстрагирован от программиста. И да, пока ты не разобрался в указателях (а если ты задаешь такие вопросы, то ты уж точно не знаешь что такое указатель от А до Я), то не трогай массивы, иначе ты так и будешь мысленно нахлобучивать понятие массива из сисярпа на Си.
Аноним 13/08/20 Чтв 13:39:57 1775974208
>>1775972
>то не трогай массивы
лол, а на чем тогда изучать указатели? просто голые адреса присваивать?
Аноним 13/08/20 Чтв 13:42:51 1775978209
>>1775974
Ну, тащемта, чтобы понять указатели нужно понять адресную арифметику, так что да. Выделяй память, дрочи её указателями, всё как диды завещали.
Аноним 13/08/20 Чтв 13:45:32 1775983210
>>1775978
Зачем нужна адресная арифметика без массивов?
Аноним 13/08/20 Чтв 13:48:51 1775985211
>>1775978
Какой сложный вопрос есть по адресной арифметике?
Аноним 13/08/20 Чтв 13:50:44 1775987212
>>1775853
Ммм, корутинки прямо из в 80-х.
Вообще страшно пытаться понять if(0) case и прочее.
А как будет работать если в скобках несколько операций записать? async(a, b)
Аноним 13/08/20 Чтв 13:52:42 1775989213
>>1775983
пчел, я тебя уверяю, что спрашивающий анон в душе не ебет что означает вот это:
int x = 228;
int ∗ptr = &x;
printf("%d\n", ∗ptr);

Ему надо сначала понять суть указателей, что не так уж и сложно, а потом дрочить массивы (без понимания что есть указатель ты не поймешь что действительно есть массив, а будешь пытаться нахлобучить идею массива из хайлвл языка, не понимая щито происходит, что и случилось вс этим аноном) и арифметику (первый пост про арифметику написал другой анон, если что).
Аноним 13/08/20 Чтв 14:09:42 1775999214
Привет всем эмбедщикам и байтослесарям.
Есть некий общий вопрос по драйверам.
Вот есть у меня железка (хуй с ней, пускай это малинка), вот у меня есть GPIO пины, некоторые из них (смотря что в спеке написано) присобачены, например, к SPI или I2C шине. Прекрасно. Теперь, есть у меня другая хуевина, которую я хочу ПРИШПАНДОРИТЬ. Допустим, это LED дисплей. Совершенно очевидно, что я должен писать драйвер, если я хочу, чтобы на этот дисплей выводился, например, hello world. Вопрос: как мне знать к какой шине мне присоединять дисплей? И вообще, как знать должен ли я железку Х присоединять к пину, который сидит на SPI/UART/I2C (нужное подчеркнуть)? Ибо без знания этой инфы я не знаю какой именно драйвер мне надо писать.

Всем заранее спасибо.
Аноним 13/08/20 Чтв 14:13:31 1776004215
image.png 59Кб, 612x555
612x555
Ньюфаг в треде. Знакомый препод подсказал учебник Полякова. Так вот, мне нужно каким-то образом использовать в visual studio библиотеку graphics.h. Как это сделать? Пробовал скачать graphics.h и запихнуть в папку, где лежит stdio.h. Не заработало. Потом запихнул этот файл в папку с проектом. Теперь #include "graphics.h" не подчёркивается красным, но функции оттуда подчёркиваются. Я так понял, что надо ещё какие-то файлы, кроме заголовочного для работы библиотеки? Можно ли сделать graphics.h встроенной библиотекой, чтобы каждый раз не вставлять в папку с проектом?

Попробовал скачать библиотеку и установить по инструкции https://www.cs.colorado.edu/~main/bgi/visual/ - выдаёт ошибки.
Аноним 13/08/20 Чтв 14:30:41 1776028216
>>1775987
>Вообще страшно пытаться понять if(0) case и прочее.
Там всё очень просто на самом деле. Вдохновлялся прочитанной мной когда-то давно статейкой https://www.chiark.greenend.org.uk/~sgtatham/mp/
>А как будет работать если в скобках несколько операций записать? async(a, b)
В макросе async не будет работать, там ожидается lvalue (т.е. имя переменной для сохранения стейта).
В остальных случаях можно писать что угодно (кроме того, что нельзя, но это как обычно). Можно писать await (process(task1) & process(task2)) и асинхронно ожидать выполнение двух тасков. После всех макросов допустимы фигурные скобки, которые позволяют писать некоторые вещи более наглядно и удобно, например: if (error_detected) leave { task->error_code = -10; task.error_info = "some info" };
Вот ссылка на код https://ideone.com/oISw4y если интересно самому потестить.
Аноним 13/08/20 Чтв 14:41:09 1776047217
Аноним 13/08/20 Чтв 14:45:40 1776052218
>>1776004
>conio.h
Это устаревшая нестандартная библиотека, в современных компиляторах её нет. Твоя лаба написана под древний компилятор от борланда, поставь его и не еби мозг.
Аноним 13/08/20 Чтв 15:11:44 1776096219
>>1775989
Ну, как. Указатель это просто адрес в памяти, в твоём коде ты, условно, говоришь что ptr это адрес по которому нужно обращаться если мы хотим получить переменную x. При развменовывании мы считаем что надо взять кусок памяти размером с тип указателя, начиная с такого-то адреса. Что не так-то?
Аноним 13/08/20 Чтв 16:04:28 1776191220
>>1775595
Сделать очевидный беб-сервер.
Посмотри код того же nginx, он довольно аккуратный, хотя мало комментариев.
Лучший системный проект есть ядро пинуса или *bsd.
Аноним 13/08/20 Чтв 16:10:17 1776196221
>>1775919
Первый и последнмй раз я такое видел в sslref. Это не так удобно и эффективно, как кажется. Хотя немного снижает вероятность ошибок.
Аноним 13/08/20 Чтв 16:19:02 1776206222
>>1775985
Какой тип имеет выражение p-q? Насколько эффективно оно вычисляется?
Аноним 13/08/20 Чтв 16:38:50 1776237223
>>1776206
Что такое p, что такое q
Аноним 13/08/20 Чтв 17:29:34 1776305224
c9.jpg 5Кб, 187x250
187x250
>>1776237
Естественно, указатели
Аноним 13/08/20 Чтв 18:53:39 1776441225
Аноним 13/08/20 Чтв 19:01:10 1776445226
>>1776441
>size_t
Оно беззнаковое же. Как разница может иметь беззнаковый тип?
Аноним 13/08/20 Чтв 19:07:52 1776448227
Аноним 13/08/20 Чтв 21:33:15 1776552228
>>1776445
if (p > q) dif = p - q
else dif = q - p
Аноним 13/08/20 Чтв 21:42:00 1776560229
>>1775999
> Вопрос: как мне знать к какой шине мне присоединять дисплей?
Это у тебя шутки такие? Ты берешь дисплей, на дисплее написаны буковки, буковки ты гуглишь, находишь даташит. В даташите написано, куда подсоединять, что туда посылать и много другой интересной информации.

>>1776004
> Можно ли сделать graphics.h встроенной библиотекой
Можно, добавь в настройках проекта в Include directories путь. Или ключиком /I. Но лучше сожги это говно и не слушай больше этого препода. Так давно никто не делает, если привыкнешь так - создашь себе кучу проблем в будущем.

>>1776206
ptrdiff_t, если указатели на один и тот же объект, и UB, если нет. Абсолютно бесполезное знание.
Аноним 13/08/20 Чтв 21:55:39 1776569230
>>1776004
graphics.h устарел, пользуйся современными библиотеками вроде Vulkan, здесь все хорошо расписано для новичков https://vulkan-tutorial.com/
Аноним 13/08/20 Чтв 22:02:13 1776578231
>>1776560
>ptrdiff_t, если указатели на один и тот же объект
Тогда бы и разницы не было, то есть был бы 0
Аноним 13/08/20 Чтв 22:05:05 1776583232
>>1776578
Есть составные объекты, например, массив. Вот разность указателей и применяется для указателей на элементы одного и того же массива, больше для нее задач нет.
Аноним 13/08/20 Чтв 22:54:07 1776641233
>>1776569
> вулкан
> для новичков
Обосрался
Аноним 14/08/20 Птн 00:38:43 1776707234
так бля
почему вы все тут пишете, что Си сейчас только для эмбедед юзается, а я не увидел НИ ОДНОГО в треде вопроса про эмдедед. (Ну, по крайней мере прямого - крайности ударяться не буду)
Так что вопрос: вы все меня тут наебываете и весь софт на сях ?
Аноним 14/08/20 Птн 00:57:19 1776721235
Аноним 14/08/20 Птн 01:12:06 1776729236
>>1776707
> весь софт на сях
Много софта использует либы, которые на сях. Кое-какой софт сам на сях.

> не увидел НИ ОДНОГО в треде вопроса про эмдедед
Здесь традиционно обитают ньюфаги и студенты с лабами. В /ra/ есть embedded-тредик.

Алсо, что касается ньюфагов и эмбеддеда, я пролистал книжку отсюда >>1775526 и это какое-то максимально бессвязное и одновременно поверхностное днище, из которого сложно чему-либо научиться.
Аноним 14/08/20 Птн 04:05:20 1776774237
>>1776729
>это какое-то максимально бессвязное и одновременно поверхностное днище, из которого сложно чему-либо научиться
Так там даже название бессмысленное. Си это просто язык, нет никакого специального "си для эмбеддед".
Аноним 14/08/20 Птн 04:45:01 1776782238
embedded-c.png 19Кб, 800x80
800x80
>>1776774
> нет никакого специального "си для эмбеддед"
Оно там в том же смысле, что и 21st Century C из шапки, типа, как именно готовить сишку в ембеддед. Алсо есть овердохуя расширений у компиляторов, которые, например, позволяют функцию как isr пометить в каком-нибудь восьмибитном МК, и которые не имеют смысла вне embedded. Но автор книги о них не знает.

А книга очень хороша, чувствуется, что автор проделал большую работу:
> (В языках) Python и Erlang ... программа не компилируется в байт-код, она интерпретируется на лету, строчка за строчкой.
> В языке Си строгая статическая типизация
> swap(a, b, sizeof(a)); // function sizeof() located in STD library
И вот такое попадается на каждой второй странице.
Аноним 14/08/20 Птн 05:37:11 1776787239
>>1776782
>программа не компилируется в байт-код, она интерпретируется на лету, строчка за строчкой
Проиграл. Интересно, что бы случилось с мозгами автора, если ему сообщить, что самый первый язык программирования BASIC, в принципе программы хранил только в байткоде, сразу же "компилируя" каждую введенную строчку после нажатия Enter, а потом "декомпилировал" обратно в текст если хочется посмотреть на исходный код. Таким образом, исходного кода и не существовало в принципе, только байткод.
Аноним 14/08/20 Птн 12:22:11 1777009240
15969224667500.jpg 68Кб, 653x595
653x595
>>1776782
>>1776774
>>1776729
А нахуй вы вообще открываете всякое пидорашье говнище? "Не читайте советских газет", слыхали такое? Совковую и постсовковую макулатуру можно разве что как сборники кринжовых анекдотов воспринимать. А аффтар наверняка какой-нибудь увожаимый пердподаватель из шарашки, который вчера с турбопаскоколя пересел.
Аноним 14/08/20 Птн 12:24:34 1777013241
FortranCardPROJ[...].jpg 376Кб, 1687x809
1687x809
>>1776787
>самый первый язык программирования
>BASIC
>сразу же "компилируя" каждую введенную строчку
>введенную
>самый первый язык программирования
СВАЁ. РАДНОЭ )))) Хоть и мелочь, но не отстаешь от автора, молодец, не посрамил диржаву )))
Аноним 14/08/20 Птн 16:05:28 1777340242
>>1777009
>всякое пидорашье говнище
Автор типичный либирашка 1990 гр
Аноним 14/08/20 Птн 16:42:43 1777389243
Анон, добрый день.
Ниже будет просто мое мнение, там нет вопросов, просто несколько наблюдений.

Постепенно вкатываюсь в WinApi, т.к. сфера в которую хочу вкатиться (вспомогательно-вычеслительные модули для САПР и визуализация результатов) под Линуксом не существует. Речь о серьезных коммерческих проектах. Точнее, серьезных САПР.
И мне кажется, я понимаю почему.
Мало того, что в мире Линукса дикий зоопарк совершенно несовместимых подходов и тулкитов, так еще и никакой гарантии, что завтра половина из них не окажется заброшенной, потому что разработчики разосрались и каждый теперь пилит свой вариант (как пример).
Просто дикое распыление созидательной энергии.
В то же время винапи - цельная, и, не побоюсь этого слова - красивая структура.
Естественно, я смотрю однобоко - моя нынешняя профессия подразумевает использование САПР и глубокое погружение именно в конструирование. Которое доступно только под винду. По абсолютно тем же причинам что и выше.

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

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

Короче, выводов не будет.
Аноним 14/08/20 Птн 16:50:06 1777400244
>>1777389
>винапи
>красивая структура
Слишком толсто, попробуй потоньше, анон.
Аноним 14/08/20 Птн 16:58:10 1777415245
>>1777400
>Слишком толсто
Вообще не пытался. Зачем просто так пишешь и повышаешь энтропию? Лишь бы пукнуть?
Посмотри здесь:
http://zetcode.com/ebooks/windowsapi/
Это красиво.
Аноним 14/08/20 Птн 18:00:34 1777491246
>>1777415
Некоторым вон нравятся волосатые жирухи или старухи. Красиво для них? Безусловно. По факту? Можно поспорить.
Такая же ситуация и здесь, анон. Тебе нравится - да ради чёрта. Только я вот твою простыню выше тоже не понял, к чему это было высрано?
Аноним 14/08/20 Птн 18:13:54 1777514247
Аноним 14/08/20 Птн 18:45:45 1777539248
>>1777491
>Только я вот твою простыню выше тоже не понял, к чему это было высрано?
Для дискуссии, евнух.
Только о чем можно с тобой дисскутировать, если ты не в состоянии понять простой текст?
Ну и еби своих жирух, евнух.
Аноним 14/08/20 Птн 19:25:57 1777570249
>>1777539
виндошиз, у меня каждое яйцо больше, чем твоя головушка, так что свою евнуховскую боль на других-то не проецируй) Забирай свое ненужное говно и вали нахуй отсюда, в этой хуете никто не заинтересован и тем более никто не восторгается, кроме тебя, аутиста.
Аноним 14/08/20 Птн 19:36:16 1777580250
>>1777389
>цельная, и, не побоюсь этого слова - красивая структура
Нет
>трехмерных вычислений, трансформациями матриц и векторов
Почему они не напишут скоростной движок на сях и не дтереьят его через питухон? Хотя возможно что это просто прототип
Аноним 14/08/20 Птн 21:30:12 1777679251
>>1777389
> В то же время винапи - цельная, и, не побоюсь этого слова - красивая структура.
Цельная - более-менее была до висты. Сейчас как в линуксе зоопарк подходов, которые, правда, все худо-бедно поддерживаются, но местами уже ломаются. Красивым это не было никогда, ни на секунду с тех самых времен, как Microsoft получила CP-M/86 сразу с грузом легаси и вынуждена была все это тащить. Не веришь мне - почитай oldnewthing, особенно старые посты (в любом случае полезно будет, если собираешься с Windows API ебаться).

> программа ... на питоне будет безбожно тормозить
Традиционно под вычисления берется нампай+сайпай и прочие сишные либы, или даже своя пишется на сишке, а на питоне остается только менеджмент. Разница в скорости выполнения небольшая, разница в скорости разработки огромная.
Аноним 14/08/20 Птн 22:46:30 1777728252
>>1777389
>Я на протяжении некоторого времени игрался с FreeCad. Я не знаю почему разработчики выбрали именно питон, вместо, например, С++.
>https://github.com/FreeCAD/FreeCAD
>C++ 54.1%
>Python 41.8%
Чел...
Тащемта, за тем же за чем тот же блендер это сделал. Ядро и всё, что требует перформанса — написано на плюсах, а плагинчики и вёрстка кнопочек делается в питоне, ибо всем похуй насколько это будет медленно, потому что сделается на старте за пару секунд и всё, это во-первых. А во-вторых, они это делают за тем же, зачем разрабы языков переписывают компиляторы этих языков на эти же языки — чтобы проверить сам язык (в данном случае, чтобы видеть как разработка расширений происходит с другой стороны и не писать всякого говна).

>Постепенно вкатываюсь в WinApi
Он нахуй не нужен в САПР, там нужна графика, матан и инженерное дело.
Аноним 14/08/20 Птн 23:04:57 1777736253
>>1777389
>И мне кажется, я понимаю почему.
Потому что ведноры видеокарт хуй на них клали, что сейчас стремительно меняется стараниями FAANGов, которые инвестируют в облачные вычисления и гейминг.

>Мало того, что в мире Линукса дикий зоопарк совершенно несовместимых подходов и тулкитов, так еще и никакой гарантии, что завтра половина из них не окажется заброшенной
А тебя-то это как коснётся? Ну форкнете тулкит, если такой уж большой гуй. Хотя обычно в таких проектах гуй — хорошо если 10% кода.
А на всё остальное есть стандарты, и стандартизация в общем у юникс-подобных систем несравнимо выше чем у шинды, лол.

>Просто дикое распыление созидательной энергии.
А теперь иди и загугли откуда появился мем про NIH (по русски надо гуглить фатальный недостаток), зумерок. Хотя можешь не гуглить — http://lurkmore.to/Фатальный_недостаток . M$ — это та компания, которая создаёт и убивает фреймворки/тулкиты/итд чаще чем _все_.
14/08/20 Птн 23:47:52 1777763254
>>1777736
> стандартизация в общем у юникс-подобных систем несравнимо выше чем у шинды
У меня epoll обkqueueался от таких заявлений.
Аноним 15/08/20 Суб 01:56:45 1777806255
>>1777763
И как это противоречит тезису о том, что у никсов стандартизация в целом на голову выше?

На шинде у тебя вообще _всё_ в ебаных ни с чем не совместимых костылях, начиная от ебаных буков в их кодировках (с которыми никто не умеет работать и в 2к20 куча нативного софта может пойти нахуй просто потому что у тебя кириллица в юзернейме), проходя все системные апи (там даже ебаные сокеты и то свои ни с чем не совместимые) и заканчивая концептами самой шинды (вроде реестра и своей залупы на дотнете вместо баша которая прогревается перед стартом чуть ли не 5 секунд, чисто особы путь шинды).
15/08/20 Суб 02:24:47 1777808256
>>1777806
> начиная от ебаных буков в их кодировках
Лал. Ну-ка расскажи нам, в какой кодировке у тебя имена файлов в линуксе лежат?

> ебаные сокеты и то свои ни с чем не совместимые
Обычные сокеты в винде практически ничем кроме WSAStartup/Cleanup от Berkeley не отличаются. А попытки сделать что-то поэффективнее, чем select, мы уже >>1777763 обсудили, они у всех свои, и это как раз последствия той самой "стандартизации" в юниксах.

> концептами самой шинды (вроде реестра
А сколько парсеров конфигов у тебя в /bin? Сколько разных синтаксисов в /etc? А про dconf слышал?

> залупы на дотнете вместо баша
Не нравится - не пользуйся. Мне не нравится хочу в командной строке командовать, а не программировать, поэтому у меня cmd и bash в зависимости от задачи. А кому-то доставляет, очень мощная штука, баши даже близко не стояли.
Аноним 15/08/20 Суб 03:04:01 1777812257
>>1777806
кек, попробуй на этом стандартизованом линуксе запустить гуишное приложение написаное 20 лет назад.

А под виндоус книга Петцольда (написана в 90е) до сих пор актуальная и все примеры из нее будут прекрасно работать под десяткой
Аноним 15/08/20 Суб 12:23:03 1778040258
Аноны, какие интересные вопросы на собеседованиях вы слышали? Естественно вопросы по Си.
Аноним 15/08/20 Суб 13:39:58 1778074259
>>1778040
> Нахуй вы сюда пришли с этим убогим высером мамонта, идите домой, учите жс, пилите сайты
Аноним 15/08/20 Суб 13:46:19 1778078260
>>1778040
Не совсем по Си, но однажды, когдя я упомянул bss, меня спросили: "кстати, как это расшифровывается, не помните?"
Аноним 15/08/20 Суб 14:11:17 1778088261
>>1778078
Никогда бы не догадался.
Аноним 15/08/20 Суб 15:55:30 1778143262
>>1778078
Интересный вопрос.
Аноним 15/08/20 Суб 17:54:13 1778252263
Как правильно изучать Си в 2020 году? Я чего то начитался линукс вея, начал слепую печать тренировать, линукс установил, редактор вим начал осваивать, но собственно на сам язык си как то взял и забил до того как на уровне мышечной памяти освою слепую печать и основные комбинации клавиш вим. А сейчас думаю, а это вообще надо? С помощью вим и командной строки линукс точно можно делать всё что с помощью IDE Clion? Язык я учу по книге Прата, и там нет ничего про инструменты программиста. Гитхаб, гитлаб, AppVeyor, Travis CL, валгринд мемчек, профилировка, рефакторинг, CMake, режимы Release и Debag, и в этом самом CLione полно ещё всяких кнопочек и настроек непонятного функционала. Короче стоит ли упарываться линукс веем и как учиться пользоваться современными инструментами для программиста? Например у меня уже возникает потребность в системах контроля версий, так как меняю что то в программе и программа начинает работать хуже чем до, а я уже не всегда помню каким код был до внесения изменений, но в книге голяк
Аноним 15/08/20 Суб 19:02:04 1778277264
>>1778252
>стоит ли упарываться
Может быть, хорощая IDE (вроде турбо паскаля) удобнее vim+sed+grep+bash.
Но таковой нет на всех машинах, где я правлю код и отлаживаюсь, поэтому я использую то, что есть, и внезапно этого хватает.
Аноним 15/08/20 Суб 19:02:14 1778278265
>>1778252
>С помощью вим и командной строки линукс точно можно делать всё что с помощью IDE Clion?
Для байтоебских проектов - да, вполне. Если тебе нужны функции автовысирания формочек, окошек с генерацией кода под эту шнягу, то вряд ли, там только IDE.
>Например у меня уже возникает потребность в системах контроля версий
Гит обязателен к изучению, тут и спорить нет никакого смысла. Прогер, не умеющий работать с гитом, некомпетентен.


В книге тебе дадут теорию, тулинг же учится в гугле и методом проб и ошибок. Я вот сейчас с cmake ебусь, могу только в основы, такая хуйня из-под коня, но делать нечего. Шарить в тулинге - мастхэв.
Аноним 15/08/20 Суб 19:26:17 1778290266
Как то я умудрился пропустить момент где обсуждался смысл подобного объявления функции:
char getword(char str)
Конкретно вопрос по поводу первого указателя. Для чего это и что он делает?
Аноним 15/08/20 Суб 19:27:03 1778294267
image.png 1Кб, 194x21
194x21
>>1778290
Найс, -оба указателя. Короче вот
Аноним 15/08/20 Суб 19:42:32 1778301268
>>1778290
У тебя объявлена функция getword, которая получает указатель на char в качестве аргумента и возвращает указатель на char. В чем вопрос-то заключается?
Аноним 15/08/20 Суб 20:54:28 1778351269
>>1778294
Правильно писать char• function(char• argument), потому что звёздочка в данном случае — это часть типа, а при вызове писать аргумент с пробелом
Аноним 15/08/20 Суб 21:18:59 1778376270
>>1778351
>потому что звёздочка в данном случае — это часть типа

жыр
Аноним 15/08/20 Суб 21:34:30 1778384271
>>1778294
Функция получает указатель на чар (ну то есть строку), и возвращает указатель на чар, ну то есть скорее всего на строку.
Если бы первой звездочки не было, функция вернула бы просто один символ по значению.
Аноним 15/08/20 Суб 21:36:04 1778385272
1447083329904.jpg 69Кб, 1920x1080
1920x1080
>>1778351
Ты ошибся, это не с++ тред
Аноним 15/08/20 Суб 21:45:32 1778392273
123.png 42Кб, 511x296
511x296
Анончики, какие типы проектов можно делать с данной железкой?
Аноним 15/08/20 Суб 22:02:10 1778418274
>>1778392
На F4 вообще все можно делать, хоть трудэ игры с корованами.
Аноним 15/08/20 Суб 22:07:57 1778424275
>>1778418
А типичные эмбедед-проекты? Как правило, челики сооружают целые IoT проекты, присоединяя куча периферийных устройств (пропеллеры, джойстики, детекторы температур и т.д. и т.п.), пишут на все это дело драйвера + программу, которая удаленно может хэндлить все эти дела.
Аноним 16/08/20 Вск 02:23:10 1778521276
>>1778424
>присоединяя куча периферийных устройств
Для этого тебе нужна куча ног у контроллера, которыми нужно дрыгать, периферия типа таймеров, которые будут дрыгать ногами независимо от CPU, возможно интерфейсы типа i2c или i2s. У stm контроллеры жирные и имеют много периферии, поэтому их хватает для многого, а если не хватает, можно какую-нибудь внешнюю микруху поставить, типа ЦАП для вывода звуков. Но с этим тебе в /ra и вообще без знаний электроники там делать нечего.
Лично я за месяц на самоизоляции вкатился в эту хуиту на практике (именно в стмы), но у меня в свое время и курсач был с расчетом аналоговых схем в микрокапе, и прошивки для устройств я писал на заводе (но не электроникой и дизайном всего этого)
Аноним 16/08/20 Вск 02:30:24 1778526277
>>1778424
Да, все можно. Только дорого. У китайцев в районе 700-800 рублей можно купить что-нибудь на F4.
Аноним 16/08/20 Вск 09:57:09 1778593278
>>1778424
В большинстве успешных случаев создаётся очередная дыра в безопасности.
Аноним 16/08/20 Вск 18:45:44 1778886279
>>1778521
ну смотря какой электроники. Как работают транзисторы/резисторы тебе зачастую накхуй не надо знать, особенно в конторах, где платы и софт делают разные люди
а микруху и логику то да, но это, имхо, полегче чем аналоговая хуйня. Так что не так страшно
к чему я это? да хуй знает. Наверное к тому, что пару видосов по логическим схемам и знаниями си (+ стмлайк мп таки стоит потрогать за вымя) норм для поиска какой-никакой работы
Аноним 16/08/20 Вск 21:32:30 1778991280
>>1772290 (OP)
Что покодить для практики и углубления в язык после Праты? Сразу в ядра линупса лезть или какой-нибудь коконтроллер закодить?
Аноним 16/08/20 Вск 21:46:05 1779005281
Аноны, я заинтересовался разработкой драйверов на Линукс. Некоторые уже пугали, что работы там на 3.5 места, но из разработки мне все равно только это нравится. Ну и вообще весь лоу-лвл, но углубиться поначалу нужно хотя бы во что-то одно, драйвера мне показались наиболее интересными.

В индустрии, видать, такие челики как я (но более опытные) нужны в компаниях, где железом и софтом под железо занимаются разные люди, я правильно понимаю? Есть board designers, которые высирают плату/SoC, а есть лоу-лвл прогеры, которые пишут под это дело прошивки и драйвера. Все верно?
Аноним 16/08/20 Вск 22:09:44 1779017282
>>1779005
Добавлю:
Пишу на С/С++ уже около двух лет, получил степень по информатике, знаю Линукс + постоянно его юзаю, умею писать базовые виртуальные (не на настоящие железки) драйвера, есть парочка личных проектов разных уровней сложности и объема (от 1 до 3.5к строк кода, но почти все из них на плюсах и все из них - юзер-спейс проги, хоть и все равно лоу-лвльно байтоебские), знаю основы работы ОС и участвовал в CTFах, оттуда опыт в реверс инжиниринге и бинарной эксплуатации, а также знания языка ассемблера.

Поэтому я не совсем зеленый в мире лоу-лвл программирования. Это если кто-то думал, что я очередной вкатыш с нулевыми знаниями, а то мало ли... Все-таки двач.

Но так или иначе, я надеюсь увидеть здесь адекватных анонов с опытом работы в сфере разработки драйверов, буду рад услышать что да как, вплоть до описания типичного рабочего дня, что нравится, что не нравится и т.д. За ЗП не гонюсь, реально нравится только лоу-лвл, другим не смогу заниматься. Всем адекватным анонам заранее спасибо!
Аноним 16/08/20 Вск 22:14:16 1779019283
>>1778991
Напиши конпелятор Си
Аноним 16/08/20 Вск 22:18:26 1779021284
>>1779019
Это не стёб я надеюсь? Норм практика для совсем юных?
Аноним 16/08/20 Вск 22:26:47 1779024285
>>1775389

Нет. Вакаба на Перле лол.
Аноним 16/08/20 Вск 23:15:50 1779046286
>>1779021
Для урезанной Сишки без адовых оптимизаций - вполне норм проектик. Полный клон gcc/clang - да, непосильная задача, особенно для одного челика и ососбенно для зеленого.
Аноним 16/08/20 Вск 23:20:27 1779051287
>>1779046
Понял+Принял, уже развлекаюсь. Спс, анон.
Аноним 16/08/20 Вск 23:46:31 1779069288
>>1779024
> Вакаба на Перле
А макаба на крестах.

>>1779046
> вполне норм проектик
Это все же у тебя троллинг такой. Опыта, конечно, с такого проекта можно овердохуя получить, но и шанс дропнуть из-за общего объема задач крайне высок. Особенно, если это первый самостоятельный проект.
Аноним 17/08/20 Пнд 10:03:56 1779194289
Может кто объяснить зачем в коде:
https://github.com/sgreenlee/C-Primer-Plus-Exercises/blob/master/ch11/exercise01.c
юзерская функция возвращает указатель на чар если мы внутри этой же функции изменяем аргумент по указателю а возвращаемое значение даже никуда не ассигнится? Нормально если я буду возвращать воид? Всё работает и так.
Аноним 17/08/20 Пнд 10:20:12 1779210290
>>1779194
боже, ну и говнокод
По логике она рили должна возвращать войд, причем вызывается она так, будто ничего не должна вернуть (см. строка 23)
Аноним 17/08/20 Пнд 10:22:20 1779212291
>>1779210
Вот и я за это. Только учусь, как напишу код сверяю с индусами и конкретно этот момент покоробил.
Аноним 17/08/20 Пнд 10:26:51 1779217292
>>1779212
Индусы - самые известные в мире говнокодеры, так что удачи, пчел :-)
Аноним 17/08/20 Пнд 10:29:01 1779218293
>>1779217
Спасибо) Думаю за месяц учёбы я недалеко от них ушёл.
Аноним 17/08/20 Пнд 10:39:03 1779232294
Привет.
Я вам тут интерпретатор Си принёс.
А нет, не принёс. Несу.
Вот, исполняемый файл, параметром к нему Си файл в командной строке и он его начинает почти сразу его исполнять.

Доступна только одна библиотечная функция - printf. но настоящему программисту хватит же. Не принёс, потому что инерпретатор не сумел реурсивно постчитать факториал. Где-то ошибка.

Вот, хотел поинтересоваться - вам EXEшника, readme и пару хелловордов для примера хватит или исходники подавай?
Аноним 17/08/20 Пнд 10:41:44 1779238295
>>1779232
Исходники! Бинарь виндовый с вирусами не нужен твой.
Аноним 17/08/20 Пнд 10:47:37 1779251296
>>1779238
Ладно, как придёт время, дам ссылку на github. Проект уже там, но без интерпретатора, толко лексический и синтаксический анализаторы.

Поддержка Linux и прочих юниксов будет несколько позже. Уж точно не раньше, чем факториал посчитается.
Аноним 17/08/20 Пнд 11:00:26 1779268297
>>1779251
>Поддержка Linux и прочих юниксов будет несколько позже
Гм, а что может быть системно-зависимого в игрушечном интерпретаторе?
Аноним 17/08/20 Пнд 11:10:12 1779290298
>>1779268
он на винапи его писал походу кек
Аноним 17/08/20 Пнд 11:45:42 1779332299
>>1779268
>а что может быть системно-зависимого в игрушечном интерпретаторе?

Ничего. Но вот такие конструкции мой не очень свежий gcc не тянет

for(auto item : : f->overload_list)

и приходится их разворачивать в нечто подобное

for (codeline = code->space->space_code.begin(); codeline != code->space->space_code.end(); ++codeline)

Ну да, тема о Си, а не плюсах. Но я пользовал плюсы.
Аноним 17/08/20 Пнд 11:47:07 1779334300
>>1779332
В смысле не тянет, о чем ты?
Аноним 17/08/20 Пнд 11:48:36 1779337301
0.jpg 4Кб, 200x194
200x194
>>1779332
>for (codeline = code->space->space_code.begin(); codeline != code->space->space_code.end(); ++codeline)
Зачем я это увидел...
Аноним 17/08/20 Пнд 11:48:49 1779338302
>>1779194
> юзерская функция возвращает указатель на чар если мы внутри этой же функции изменяем аргумент по указателю а возвращаемое значение даже никуда не ассигнится
А почему нет? Это фактически бесплатно. Этот подход скопирован с сишной стандартной библиотеки: посмотри, например, fgets.

>>1779232
C exe-шниками к соседям: >>1748635 (OP)
Аноним 17/08/20 Пнд 11:52:53 1779342303
>>1779334

В смысле g++ ругается на вариант цикла с двоеточием. Это появилось в каком-то свежем стандарте плюсов, поэтому компилятор на Линуксе не понимает такие конструкции.
Цикл с двоеточием, кстати в ошибкой в предылущем посте написан - там одно двоеточие, а не два.

Не, если конечно обновить gcc. то должен всё понять. Но это как бы не правильно, обовлять компилятор. Правильно переписать код так, чтобы понимали предыдущие версии компилятора.

Аноним 17/08/20 Пнд 11:53:25 1779343304
>>1779338
>А почему нет? Это фактически бесплатно. Этот подход скопирован с сишной стандартной библиотеки: посмотри, например, fgets.
Хз. А зачем? Просто на будущее если дополнять/изменять код? Это не затрагивает быстродействие кода никак?
Аноним 17/08/20 Пнд 11:58:43 1779345305
>>1779343
> Это не затрагивает быстродействие кода никак?
Плюс одна инструкция в худшем случае. А что касается юзкейсов, ну хуй знает, можно делать func2(func1(buffer, size)) например. Или где-нибудь в шапке for удобнее втыкать, хуй знает. Все на совести автора. Я бы вернул size_t со счетчиком присвоенных символов.
Аноним 17/08/20 Пнд 12:06:59 1779347306
>>1779342
Нет, тебе надо обновить линукс.
Аноним 17/08/20 Пнд 12:15:24 1779349307
>>1779347
Я так со Slackware ушёл в своё время, когда на ей была какая-то уж совсем нестандартная версия компилятора С++. Какой-то ничтожный нюанс поломал многолетнюю любовь к Слаке.

Но насчёт обновления Линукса не согласен. Если ты хочешь показать программу народу, то ради того чтобы её посмотреть почти никто не будет переустанавливать обновлять Линукс. Это рарзработчику нужно, чтобы его программа собралась без проблем у пользователя. А если для embedded пишешь, то туда нужную версию компилятора могут вообще вовремя не подвезти.

Аноним 17/08/20 Пнд 12:20:19 1779352308
>>1779349
For range это 2011 год, анон.
Аноним 17/08/20 Пнд 12:44:19 1779366309
>>1779342
Ты совсем еблан что ли? Или у тебя Линукс необновленный с 2005 года стоит? Пиздец, я в ахуе, потом такие долбоебы как ты кукарекают о том, что Линукс неюзабелен, теперь понятно откуда ноги растут.
17/08/20 Пнд 12:52:49 1779372310
>>1779342
-std=c++11 не компилит? Частичная поддержка уже была в gcc 4.6.0. емнип, когда ставил дебиан на виртуалку, там стоял gcc 4.8.x.
Аноним 17/08/20 Пнд 12:53:10 1779373311
>>1779332
И какая связь между разворачиванием цикла в итераторы под старый стандарт, и невозможностью распространять исходники?
Аноним 17/08/20 Пнд 12:54:34 1779375312
>>1779366
>у тебя Линукс необновленный с 2005 года стоит?

У меня линуксы живут в вирутальных машинах. Зоопарк.
Возможно мне будет лениво переписывать "For range loop" и тогда найду в своём зоопарке линукс со свежим g++. Вот только факториал рекурсивно посчитаю.
Аноним 17/08/20 Пнд 12:59:55 1779379313
Аноним 18/08/20 Втр 14:34:41 1780493314
>>1779232
>Я вам тут интерпретатор Си принёс.
Лол пишу похожее, только для асма.
>почти сразу его исполнять.
Т.е. без immediate code? Даже комменты не препроцессирует?

>Доступна только одна библиотечная функция - printf. но настоящему программисту хватит же.
Сначала подумал, что ты только bitwise и арифметикой писал, проиграл бы с такой ъ-байтоебли.

Аноним 19/08/20 Срд 01:11:24 1781066315
Как работает функция OpenFileMapping? Её можно просто применить в дочернем процессе и она автоматически даст ему хэндл последнего созданного в винде объекта типа "отображение файла"? Или это не так работает? Я не хочу ковырять через онлайн переводчик примеры на буржуйском из тысяч строк лишнего кода, напишите по-Русски про эту функцию.
Аноним 19/08/20 Срд 01:49:48 1781094316
>>1779005
>Аноны, я заинтересовался разработкой драйверов на Линукс
Сколько драйверов уже написал?
Аноним 19/08/20 Срд 02:25:10 1781105317
>>1781066
> даст ему хэндл последнего созданного в винде объекта
Даст хэндл отображения, но не последнего (откуда ты это взял вообще?), а с указанным именем. Если такого нет (не создавался, или создавался, но все хэндлы на него были закрыты), получишь NULL. Сам по себе этот хэндл ничего не дает, но ты можешь с этим хэндлом сделать MapViewOfFile и получить уже указатель на сами данные.
Аноним 19/08/20 Срд 02:50:01 1781109318
изображение.png 30Кб, 1010x501
1010x501
>>1781105
Так, с этим разобрался, спасибо. А теперь, как вообще записывать в отображаемый файл данные и считывать их? В душе не ебу, что делать с выводом функции MapViewOfFile. Её значение — какой-то адрес в памяти, наверное, как раз на отображаемую область для записи данных, но я не могу ничего с этой переменной сделать, потому, что не знаю, что с ней надо делать. И
http://www.cpp.sh/5g3fmt

И как вот эту ошибку решить? Это можно сделать, не создавая реальный файл на постоянном накопителе? Или обмен данными между процессами через отображаемый в память файл нельзя сделать без наличия реального файла?
Аноним 19/08/20 Срд 03:08:13 1781117319
изображение.png 11Кб, 979x512
979x512
Аноним 19/08/20 Срд 03:08:36 1781118320
изображение.png 30Кб, 709x539
709x539
Аноним 19/08/20 Срд 03:14:54 1781120321
изображение.png 33Кб, 1243x589
1243x589
А вот это почему работает? Вроде ж не должно. И предупреждение ещё вылезает. Я вообще верной дорогой иду?
Аноним 19/08/20 Срд 03:15:31 1781121322
изображение.png 42Кб, 1257x602
1257x602
Аноним 19/08/20 Срд 03:15:32 1781122323
А есть какие-нибудь аналоги контейнеров stl, типа vector в чистом Си?

И много ли будет производительности, если одну криптографическую функцию с C++ на чистый Си переписать?
Аноним 19/08/20 Срд 03:17:21 1781123324
>>1781122
Только самописные через ООП-костыли. В C нету ООП, а векторы это из ООП.
Аноним 19/08/20 Срд 03:18:35 1781124325
>>1781122
Нет. Векторы ничего не стоят в крестах, а их имплементация на сишке, очевидно, будет.
Аноним 19/08/20 Срд 03:18:54 1781125326
>>1781123
умри от рака ебанат
Аноним 19/08/20 Срд 03:23:48 1781127327
Аноним 19/08/20 Срд 03:25:53 1781130328
Nata-Lee-linger[...].jpeg 74Кб, 810x1095
810x1095
Аноним 19/08/20 Срд 03:25:55 1781131329
>>1781125
А что не так сказано?
Аноним 19/08/20 Срд 03:30:27 1781136330
изображение.png 430Кб, 480x320
480x320
>>1781131
Наверное, это сбежавший из крестов.
Аноним 19/08/20 Срд 08:26:03 1781203331
>>1781120
> И предупреждение ещё вылезает.
Если у CreateFileMapping сфэйлится (например, другая программа уже создала объект с таким именем), тебе вернут NULL. Ты это не проверяешь.

>>1781120
Работает потому, что изначально память уже забита нулями. Естественно, так лучше не делать и взять strcpy, раз уж ты в тред про сишку пришел. Или даже StringCbCopy, если у тебя Windows API. Ты ведь про это?

>>1781124
> Векторы ничего не стоят в крестах, а их имплементация на сишке, очевидно, будет.
Традиционная реализация с void pointer и size_t будет чуть дороже, да. Нетрадиционная #define TYPE double, #include "myvector.tpl.c", #undef TYPE (или просто через один длинный дефайн) будет точно такой же, как в крестах.

Аноним 19/08/20 Срд 09:38:22 1781233332
>>1781094
4, но это были не на настоящие железки, а просто дрова, которые делают разные вещи (последний фильтровал входящие пакеты, я знаю про iptables, но в образовательных целях это было круто)
Планирую раздобыть тех. референс на какую-то железку (думаю, на сетевую карту) и написать на нее свой драйвер в образовательных целях.
Аноним 19/08/20 Срд 10:49:26 1781277333
>>1781120
>И предупреждение ещё вылезает.
Что, компиляторы уже такие умные стали?

if(FileMap != NULL)
CloseHandle(FileMap);

Так ругацца не будет? Хотя по хорошему надо проверять сразу после созданию хэндла.
19/08/20 Срд 10:53:58 1781280334
>>1781277
Будет, ибо баг в студии.
19/08/20 Срд 10:58:32 1781285335
>>1781066
Сервис обрабатывает запрос и возвращает дескриптор объекта секции в случае успеха.

> Её можно просто применить в дочернем процессе и она автоматически даст ему хэндл последнего созданного в винде объекта типа "отображение файла"?
Можно скопировать хэндл в таблицу дескрипторов удаленного процесса - DuplicateHandle.
Аноним 19/08/20 Срд 11:03:07 1781289336
>>1781233
Круто потому что типа круто? Хуй знает, слишком много ебли с тредами и вообще разработкой, как-то всё лучше, когда есть возможность не лезть в пространство ядра.
Аноним 19/08/20 Срд 12:53:29 1781464337
>>1781289
Круто, потому что субъективно интересно. Есть люди, которые плюются от всего, что ниже пайтона по уровню предоставляемых абстракций, и педалят веб с чувством кайфа. Можно ли их судить за то, что им это нравится? Нет. Точно также и здесь. Есть люди, которым лоу-лвл нравится больше, и которые и в ядро залезть не гнушаются.
Аноним 19/08/20 Срд 13:33:52 1781536338
Аноним 19/08/20 Срд 13:46:44 1781559339
>>1781280
Проверял? Там статический анализатор неплохой, и уж такую ерунду прожевать должен нормально.
Аноним 19/08/20 Срд 15:41:46 1781760340
>>1781122
>А есть какие-нибудь аналоги контейнеров stl, типа vector в чистом Си?
В сторонних либах дохуя. На вскидку: sglib, glib, в stb либе есть динамический массив.
Аноним 19/08/20 Срд 16:19:10 1781836341
Объясните залётной зелени в чём разница объявления строки в этих 2 вариантах и какой из них является наиболее часто юзабельным если границы размыты?:
1. char* string = "pidoras";
2. char string[] = "pidorasina";
(надеюсь правильно написал) И
Аноним 19/08/20 Срд 16:57:04 1781884342
>>1781836
1 - строковый литерал, он иммутабельный
2 - строка на стэке, мутабельная.
Аноним 19/08/20 Срд 17:08:01 1781895343
Аноним 19/08/20 Срд 17:11:01 1781900344
>>1781895
Лолшто? Укажи в чем я неправ (у тебя не получится, потому что я прав)
Аноним 19/08/20 Срд 20:44:29 1782125345
Сап, программач
Можно ли как то передвигаться по двумерному массиву как по одномерному используя array_name++; ?
При попытке сделать two_demensional_array[n]++ получаю ошибку
Аноним 19/08/20 Срд 20:48:42 1782128346
>>1782125
Все, понял почему я идиот
Нельзя так делать с именем массива
Аноним 19/08/20 Срд 20:53:41 1782132347
>>1781884
>иммутабельный
>мутабельная.
Значение знаешь?
Аноним 19/08/20 Срд 21:06:15 1782136348
>>1777812
Вот.
Никак не могу объяснить линушизикам на деле конечно школоте, что даже если микрософт и высрет 10 новых NIH технологий, то всегда есть гарантия, что каждую будут поддерживать лет 10 минимум.
Покажите мне опенсурс проект, где разработчики своей жопой и судебными исками гарантируют подобное.
Наоборот, ВСЕ опенсурсы начинаются с фразы мы вам ничего не должны.
Это не плохо, это просто факт.
Аноним 19/08/20 Срд 21:07:37 1782138349
Аноним 19/08/20 Срд 21:20:06 1782144350
>>1777679
> Сейчас как в линуксе зоопарк подходов, которые, правда, все худо-бедно поддерживаются, но местами уже ломаются
WinApi не ломается, как было основой, так и есть. Все остальные подходы поддерживаются минимум лет 5. Покажи мне где в ядре или не в ядре линукса есть фраза "мы своей жопой гарантируем что ничего не сломаем 5 лет",
>почитай oldnewthing
Эту колонку ПИНК ГАЙ ведет?
>Разница в скорости выполнения небольшая
Каким образом тогда Solidworks какой-нибудь на моей старенькой пеке вполне сносно и комфортно работает а FreeCad тормозит так что хочется убить нахуй?
Аноним 19/08/20 Срд 21:21:59 1782147351
>>1777728
>Он нахуй не нужен в САПР, там нужна графика, матан и инженерное дело.
Я не понял что ты советушь. Если писать расширения для сапр, что еще нужно?
Аноним 19/08/20 Срд 21:37:45 1782159352
>>1782147
>Если писать расширения для сапр, что еще нужно?
Знание предметной области. САПР для проектирования зданий и САПР для электроники ну совсем разные.
Аноним 19/08/20 Срд 21:49:12 1782167353
>>1782159
Ну блядь сука охуеть теперь просто пиздец как же так нахуй жизнь меня к этому не готовила.
Аноним 19/08/20 Срд 22:56:47 1782198354
>>1782132
>иммутабельный
Тип read-only страницы.
Аноним 19/08/20 Срд 23:07:01 1782205355
изображение.png 12Кб, 617x289
617x289
Аноним 19/08/20 Срд 23:32:07 1782215356
>>1782205
В лялихе на 13 строке будет segmentation fault, потому что >>1782198.
Аноним 19/08/20 Срд 23:40:18 1782221357
>>1782144
> WinApi не ломается, как было основой, так и есть
Притащи старое приложение, в котором много формочек и графики в целом в десятку c HiDPI, увидишь. Местами сломана последовательность сообщений, местами надо CoInitialize там, где раньше без него работало, ну и т. д.

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

>>1782205
>>1782215
Не обязательно сегфолт, все зависит от параметров компилятора, от ld-скрипта. Может, например быть так, что другой "хуй" в программе тоже изменится. Может быть сегфолт, может быть разрешена перезапись, но это дает тебе права перезаписывать литералы.
Аноним 19/08/20 Срд 23:53:06 1782228358
>>1782221
>Не обязательно сегфолт, все зависит от параметров компилятора, от ld-скрипта.
Тип литерал будет не в .rodata в elf-файле? Как кстати это сделать, ну какие параметры у линкера?
Аноним 20/08/20 Чтв 00:08:37 1782233359
>>1781124
>Нет. Векторы ничего не стоят в крестах, а их имплементация на сишке, очевидно, будет.

ваще, очень многое перестаёт в сишке стоить, если инклудить не хедер с объявлением функций(как деды завещали), а сорц с имплементацией. Деды это делали из-за лютого отсутствия оперативы в компиляторах и проч. Сейчас же можно прямо так, а компилятор всё збс заинлайнит. Почти весь плюсовый "zero overhead" бьётся нормальным сишным компилятором при условии инклуда сорцов.
Аноним 20/08/20 Чтв 00:13:17 1782234360
изображение.png 16Кб, 649x288
649x288
Аноним 20/08/20 Чтв 00:34:06 1782236361
>>1782205
>>>1781884

ваще, там стоит использовать стандартный указатель на чар (для обратной совместимости сишка поволяет конвертировать при инициализации указатель на константный чар в указатель на чар)
Аноним 20/08/20 Чтв 00:48:32 1782241362
Антох, а мы еще увидим новый стандарт Сишки, какое-то развитие, или как бы уже и добавить нечего?
Аноним 20/08/20 Чтв 01:06:27 1782245363
>>1782228
Раньше вообще было -fwriteable-strings, но потом выпилили.

> какие параметры у линкера
Ну берешь из /lib/ldscripts/ нужный скрипт, правишь (перекладываешь .rodata в .data), скармливаешь его ld через -T.

>>1782241
> Антох, а мы еще увидим новый стандарт Сишки, какое-то развитие
Атрибуты же. Смогут заставить тебя писать про fallthrough в switch или, например, обязательно обрабатывать результаты функций, если разработчик захочет. Черновик в шапке есть, сам смотри.
Аноним 20/08/20 Чтв 01:35:49 1782251364
>>1782228
>Как кстати это сделать
А зачем? Вот вопрос.
Аноним 20/08/20 Чтв 04:29:18 1782287365
Аноним 20/08/20 Чтв 13:20:08 1782675366
>>1781884
>строковый литерал
>иммутабельный
Получается юзабельный только для вывода и сравнения с ним или я хуй пойму?
Аноним 20/08/20 Чтв 15:09:19 1782829367
>>1782675
А как ты иначе сделаешь то? Они все равно в read-only в бинарнике хранятся. Даже те что char str[]="bla" создаются на стеке и в них копируется эта строка из read only литерала.
Аноним 20/08/20 Чтв 15:09:51 1782830368
>>1782221
>Я с этим и не спорил
Ну а что еще есть-то? Не брать же яблоко, в самом деле. В реальности есть только два стула.
Аноним 20/08/20 Чтв 15:13:49 1782838369
>>1782829
Чел, ты не понял сути вопроса. Эти ваши строковые литералы суть #define или константная переменная или есть в них какой-то более глубокий смысл?
Аноним 20/08/20 Чтв 15:46:13 1782891370
>typedef long LONG;
>typedef int INT;
>typedef short SHORT;
>typedef char CHAR;
Кристалльно чистый NIH, аж глаза щиплет.
Аноним 20/08/20 Чтв 15:55:11 1782909371
Screenshot from[...].png 82Кб, 1920x1080
1920x1080
Объясните мне какого хуя оно 80?
Аноним 20/08/20 Чтв 15:56:58 1782911372
>>1782909
Потому что ты запрашиваешь размер массива. 8 бит 1 элемент, массив длины 10.
Аноним 20/08/20 Чтв 15:57:12 1782912373
>>1782838
>Эти ваши строковые литералы суть #define или константная переменная или есть в них какой-то более глубокий смысл?

Суть высраный загрузчиком оси где то после запуска экзешника или эльфа массив чаров который может лежать в разных секциях кучи в зависимости от конпелятора оси. Где он будет лежать и соснешь ли ты хуйца попытавшись в него что либо записать - ось специфик и имплементатион дефайнед.
Аноним 20/08/20 Чтв 16:13:01 1782958374
>>1782838
Что такое литералы вроде на первых страницах учебников по информатике объясняют. Это кастомный токен.
Аноним 20/08/20 Чтв 16:13:37 1782962375
>>1782911

А какого хуя тогда размер инта в байтах, ммм, уеба?
Аноним 20/08/20 Чтв 16:14:18 1782965376
>>1782909
а сколько по твоему должен занимать массив из десяти указателей в 64битной программе?
Аноним 20/08/20 Чтв 18:04:16 1783126377
>>1782909
звезду спрячь, и будет как надо; либо со звездой на 1 переменную, и забери маллоком
Аноним 20/08/20 Чтв 21:23:19 1783330378
>>1782891
>Кристалльно чистый NIH, аж глаза щиплет.
Ващета нет. int может быть 16/32/64 б
char обычно 8 бит, но может быть и 16 и наверное даже 32 и 64.

Аноним 20/08/20 Чтв 22:51:12 1783395379
>>1782909
У тебя явно 64-битная ОСь, где адрес имеет размер 8 байт.
у Тебя массив из 10 указателей на чар. Каждый указатель 8 байт. 8*10 = 80.
Аноним 20/08/20 Чтв 22:53:58 1783398380
>>1782838
#define просто делает find & replace ДО компиляции.
Если это #define huy 1, то все инстансы huy заменяются на 1, что фактически порождает магическое число без адреса (ибо эта 1 не присвоена ни к какой переменной).

В случае с константами, все зависит от ABI (в плане ГДЕ константа помещается в памяти), но факт - есть переменная, которая сожержит какое-то значение. Для отладки это явно лучше, нежели дефайновысирание.
Аноним 20/08/20 Чтв 23:46:23 1783423381
>>1783398
>Для отладки это явно лучше, нежели дефайновысирание.
А с точки зрения практичности и не говнокода?
Аноним 21/08/20 Птн 00:24:11 1783435382
>>1783398
> Для отладки это явно лучше
Для отладки есть символы, ты видишь исходник, в исходнике дефайны, а не замененные значения. При этом const - это возможные тормоза из-за проблем с алиасингом, это невозможность использовать такие константы для массивов, это полная зависимость от того, будет ли компилятор достаточно умным, чтобы такие константы свернуть. В общем, в Си const для чего-то кроме указателей - плохой тон и непонимание языка.
Аноним 21/08/20 Птн 00:24:57 1783436383
Аноним 21/08/20 Птн 00:26:02 1783437384
>>1783436
По существу возразить нечего?
Аноним 21/08/20 Птн 00:30:22 1783440385
>>1783423
абьюз дефайнов - говнокод
В Си порой нет выхода, в плюсах за абьюз (или даже просто ненавязчивое использование) вообще в жопу ебут раскаленным кактусом и поделом
Аноним 21/08/20 Птн 00:32:29 1783441386
>>1783440
Дефайны - единственный вменяемый способ делать константы в Си. В крестах const и enum исправили, поэтому в крестах дефайны с константами гораздо менее важны и используются только если нужно обеспечить совместимость хедеров с Си.
Аноним 21/08/20 Птн 03:43:22 1783483387
>>1783423
Для всего лучше не использовать дефайны, ведь это текстовый макрос исходного кода, по сути обфускатор, затрудняющий чтение текста и размывающий связь между конструктами исходного текста и исполняемого кода. Отсюда же, макросы нельзя отлаживать, ведь это не код.
Аноним 21/08/20 Птн 04:42:16 1783497388
Посоветуйте fgets для массива чисел, вот чтобы вот так вжух, и весь массив одной командой. Не, ну а хули? fgets же тоже массив принимает, но только чаров.
Аноним 21/08/20 Птн 05:06:37 1783511389
>>1783497
прими массив чаров а потом циклом прибавь +'0'
Аноним 21/08/20 Птн 10:14:17 1783598390
>>1783497
fgets же только для записи в файл юзается, разве нет?
Аноним 21/08/20 Птн 10:25:01 1783620391
>>1783598
особенно для записи в stdin
Аноним 21/08/20 Птн 10:29:32 1783629392
>>1783620
Зачем если есть просто gets?
Аноним 21/08/20 Птн 10:41:52 1783661393
>>1783629
> C11. Major changes from the previous edition include:
> removed the gets function (<stdio.h>)
Аноним 21/08/20 Птн 10:43:17 1783663394
21/08/20 Птн 10:49:10 1783678395
>>1783663
Потому что дыра, которую нельзя ни исправить, ни обойти. char buffer[4]; gets(buffer); вводишь 5 букв, пиздец. Потому что стыдно в 21 веке иметь такое в стандартной библиотеке.
Аноним 21/08/20 Птн 10:57:42 1783699396
>>1783678
А fgets получается швейцарский нож?
21/08/20 Птн 10:59:42 1783704397
>>1783699
Да, ты можешь указать ему stdin.
Аноним 21/08/20 Птн 11:02:17 1783709398
Ладно, поговорим серьёзно. Т.е. об аргументах printf.
Не скажу за Linux, но printf в MSVC в 32 битах не знает аргументов типа float, только double.

Для меня это было откровение, пошукал в интернетах и обнаружил что копилятор при вызове printf аргументы с типом float приводятся к типу double.

Собственно интересно на каком этапе компилятор приводит преобразование типа. Зачем это сделано? Но главное - когда?
Аноним 21/08/20 Птн 11:07:01 1783713399
Аноним 21/08/20 Птн 11:07:53 1783716400
>>1783713
Какое нахуй толсто? Я впервые учебник открыл неделю назад.
Аноним 21/08/20 Птн 11:10:01 1783722401
>>1783716
А, ты совсем зелень. Тогда простительно. Не юзай gets, короче.
Аноним 21/08/20 Птн 11:10:41 1783725402
Аноним 21/08/20 Птн 11:11:09 1783728403
>>1783716
>Я впервые учебник открыл неделю назад.
Первую программу на Си, за которую полчил деньги, я написал в 1993 году.
Аноним 21/08/20 Птн 11:13:44 1783734404
>>1783728
Соболезную. Чем сейчас занимаешься?
21/08/20 Птн 11:16:03 1783740405
>>1783709
> Собственно интересно на каком этапе компилятор приводит преобразование типа. Зачем это сделано?
Перед вызовом функции, когда он не знает типа параметра, внезапно. То есть когда у тебя функция декларирована как void func(); или когда у функции есть ... в параметрах (разница не большая).
Аноним 21/08/20 Птн 11:26:21 1783754406
>>1783709
из-за VARGS это происходит. И это делает не компилятор, а в самой реализации прописано такое поведение.
Аноним 21/08/20 Птн 11:39:01 1783770407
>>1783734
Программирую. Это ведь классно когда работа совпадает с хобби.
Аноним 21/08/20 Птн 11:40:08 1783772408
Аноним 21/08/20 Птн 11:42:11 1783777409
>>1783770
Где работаешь? Какая зп?
Аноним 21/08/20 Птн 11:48:23 1783781410
>>1783777
Да на шарпе пишу хайлоад для пиндосов. На си работы нет. Про зп не говорю
Аноним 21/08/20 Птн 11:55:49 1783791411
>>1783781
>На си работы нет.
С чего бы это? Есть же вакансии С++.
Аноним 21/08/20 Птн 11:57:42 1783793412
>>1783791
представляешь хоть как разработка на С++ отличается от разработки на С?
Аноним 21/08/20 Птн 12:02:16 1783802413
>>1783793
Конечно. Большинство корректно написанных на Си программ скомпилируется под C++. Не используй шаблоны, классы, исключения и другие расширения языка и всё заработает.

А сишнику выучить С++ проще простого. Если не знает с чего начать, то пусть включит компиляцию в ассемблер и смотрит чего генерирует С++. Так и выучит постепенно.
Аноним 21/08/20 Птн 12:12:02 1783812414
>>1783802
>А сишнику выучить С++ проще простого.
Норм, а то мне все говорили что учить си перед крестами плохая идея.
Аноним 21/08/20 Птн 12:15:06 1783815415
>>1783802
И ты реально думаешь что выучить синтаксис, пару либок и нано-частицы буста будет достаточно чтобы не обосраться на крестовом проекте?
Аноним 21/08/20 Птн 12:44:05 1783838416
https://repl.it/repls/OverdueUnevenObservatory
Можно было сделать лучше или и так хорошо? Вроде работает as intended. Хотел сделать через switchcase но пососал бибу.
Аноним 21/08/20 Птн 13:07:57 1783854417
>>1783838
>void print_report(const char str);
>
>int main(void)
>{
> ...
>}
>void print_report(const char
str)
>{

Как деды завещали
Аноним 21/08/20 Птн 13:11:06 1783858418
>>1783854
Типо указатель не нужон? Почему так?
Аноним 21/08/20 Птн 13:17:44 1783862419
>>1783858
орнул просто с объявления и определения в разных местах, реально как дядя бьорн в 85-ом завещал
Аноним 21/08/20 Птн 13:22:31 1783867420
>>1783862
Это плохо или хорошо? И что именно?
Аноним 21/08/20 Птн 13:24:09 1783870421
>>1783815
Не понял твоего вопроса. Ты сейчас историю из жизни хочешь рассказать? Мой посыл прост - если ты понимаешь что генерирует компилятор, то шансы выучить С++ у знающего Си вырастают на порядок.
Аноним 21/08/20 Птн 13:32:24 1783877422
>>1783781
>На си работы нет
Драйверописатели в разных там Quallcom, Mellanox, Nvidia, Marvell и т.п. всплакнули после такого смелого заявления

И нет, кресты при этом не юзают, так как там в 99% случаев на железке крутится Линукс, там только на Си драйверы и писать.
Аноним 21/08/20 Птн 18:23:04 1784305423
А я сегодня узнал, что необязательно ставить разные gcc для кросс-компиляции. Достаточно вызвать clang -target mips или clang -target aarch64. Компоновку только не пройдет.
Аноним 21/08/20 Птн 22:37:46 1784454424
Аноним 21/08/20 Птн 23:27:10 1784482425
.png 120Кб, 793x445
793x445
Никак не могу понять, зачем в функцию sendto передаётся два сокета: первый в int s, второй в to?
Я думал, для того чтобы передать кому-то что-то, нужен всего 1 сокет.
Аноним 22/08/20 Суб 00:10:16 1784521426
int i = 0;
int p, p2;
p = &i - получает адрес i
p = i - что получает?
И что по дереференсу?
Аноним 22/08/20 Суб 00:10:39 1784522427
>>1784521
>int p, p2;
Ну это указатели очевидно.
Аноним 22/08/20 Суб 00:16:02 1784531428
>>1784521
Ничего не получает. Ты пытаешься адресной переменной присвоить числовое значение.
нужно *p = i, при условии, что в p не находится мусор, тогда в области памяти, на которую указывает p, будет находиться значение i
Аноним 22/08/20 Суб 00:17:19 1784533429
>>1784521
Блин, не посмотрел, что i = 0. Тут уже как посмотрит на это компилятор, мб не будет ругаться. Но скорее всего будет
22/08/20 Суб 00:23:54 1784539430
>>1784482
В отличие от TCP, в UDP не устанавливаются соединения, поэтому тебе для каждого пакета нужны и исходный адрес (хранится в s, присваивается при посылке первого пакета, или если ты явно делаешь bind), и адрес назначения (to). В TCP ты устанавливаешь адрес назначения, делая connect. Но если адрес назначения у тебя для всех пакетов один и тот же, ты можешь сделать connect на него и в UDP. Соединения как такогово все равно не произойдет, но сокет запомнит у себя внутри адрес назначения, и ты сможешь использовать обычный send.

>>1784533
> Тут уже как посмотрит на это компилятор, мб не будет ругаться.
Ноль работает как NULL только когда он циферкой написан или он результат выражения, которое можно вычислить на этапе компиляции. Когда идет преобразование из целочисленной переменной в указатель, никакой особой магии уже не происходит, и результат implementation defined, даже если в переменной ноль. В реальности, конечно, все конвертируется, и все работает, но гарантий нет.
Аноним 22/08/20 Суб 01:25:11 1784578431
Аноны, по каким причинам Лялекс настолько портабельный? Его запускают на всем, даже на картошке, блять. Почему это так? Сайд-эффекты попенсорса? Почему винда популярна только в десктопе?
Аноним 22/08/20 Суб 02:43:03 1784603432
>>1784578
Потому что шин это в ПЕРВУЮ ОЧЕРЕДЬ десктоп система, а Ляля — в десятую.
Аноним 22/08/20 Суб 03:26:34 1784611433
>>1784578
> Почему это так?
Может потому-что никому в голову не придёт портировать шинду под такое железо? Да и как портировать - исходного кода то нет.
22/08/20 Суб 04:52:06 1784632434
>>1784578
По каким причинам линуксо-дебил промазал не только мимо треда, но и мимо раздела? Ах, да, именно по этой причине: линукс = дебил. Доказано, все свободны.
Аноним 22/08/20 Суб 09:22:23 1784673435
Это процесс A
http://www.cpp.sh/3cihj
А это процесс B
http://www.cpp.sh/5m4vr
Процесс A должен порождать процесс B и передавать в него массив интов. С чарами работает, но когда я попытался переписать код под инты/, уже нихуя не работает. Вот вариант для чаров, который исправно работает.
http://www.cpp.sh/5kosv
http://www.cpp.sh/5kosv

Что я делаю не так, пытаясь переделать это код под инты?
Аноним 22/08/20 Суб 09:24:08 1784674436
asdf.jpg 53Кб, 800x533
800x533
>>1784632
смотрите, шиндовыблядок-говноед порвался!
Аноним 22/08/20 Суб 09:24:11 1784675437
Аноним 22/08/20 Суб 11:35:47 1784728438
CFIHbpLAiWA.jpg 126Кб, 1200x488
1200x488
привет, анон, помоги советом нубу. Короче хочу стать тем самым старым дедом, который на пикрил справа. Понятно, что в таком случае знать нужно до жопы блять дохуя, но ничего, времени и желания много.
Короче вопрос: с чего начать? образование профильное, пару лет встраиваемых систем есть, уник только вот вчера диплом получил. Куда двигаться? Есть ли работа по разработка драйверов/системное проганье для людей не с 13242342 годами опыта блять? И вообще востребованно ли? А то пидорюги с котлином и андроидом по миллиарду в наносекунду получают, а мы типа хуи сосем или как?
Кроче буду рад ответам, спасибо
Аноним 22/08/20 Суб 11:49:09 1784736439
>>1784578
Полагаю винда не очень модульная, из нее сложно выкинуть какой то кусок который не влезает. Плюс это не их рынок поэтому им дела особо не было. Хотя иногда пытались делать всякие штуки типа NET Compact Framework. Да и 10-ку вроде запускают, специально порезанную.
Аноним 22/08/20 Суб 12:07:09 1784743440
>>1784736
На самом деле они достаточно много могут вырезать, можешь серверные окна посмотреть. Я не эксперт по ядру винды, но подозреваю что проблема в том что у них много что склеено вместе из-за обратной совместимости, и например даже гуи сервисы из условного винсервера нельзя вырезать без ущерба другому важному функционалу
Аноним 22/08/20 Суб 12:58:35 1784762441
>>1784736
>Полагаю винда не очень модульная
Винда ГРАФИЧЕСКАЯ, что отсекает все что не компьютеры, и тем более всякие кофеварки.
Аноним 22/08/20 Суб 13:39:52 1784782442