Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.Что читать:- Классика от Отцов: http://www.ime.usp.br/~pf/Kernighan-Ritchie/C-Programming-Ebook.pdf- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html- ООП, например: http://www.cs.rit.edu/%7Eats/books/ooc.pdf- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт) не драфт ищем на торрентах- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)- man/Dash/zealdocsЧем конпелировать:- Очевидный GCC.- clang: оче годно, батя рекомендует. Дрочим на --analyze.- Intel C++ Compiler: оптимизации, тысячи их.- Visual Studio 2015 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.- TCC: очень маленький компилятор с багами и неполной поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.Что еще почитать:http://c-faq.com/FAQ из comp.lang.c. Древний, но все еще актуален.Stephen Prata "C Primer Plus, 6th Edition" (2014)Свежая знает про C89, C99, C11, описывает различия, объемная около тысячи страниц, годная хотя есть некоторые шероховатости, с вопросами, упражнениями и ответами. Читать после K&R или до.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? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).Ben Klemens "21st Century C: C Tips from the New School" (2012)Stephen G. Kochan "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://www.iso-9899.info/wiki/Books#Learning_CПрошлые треды:- https://arhivach.org/thread/106153/- https://arhivach.org/thread/131949/- https://arhivach.org/thread/140570/- https://arhivach.org/thread/153698/- https://arhivach.org/thread/155908/- https://arhivach.org/thread/173837/- https://arhivach.org/thread/180461/Шапка: http://piratepad.net/bJ1SdmkZyu
Насру первым.
А что не так с линковкой в go?
>>770264Линк видел? Нажать побоялся?Тебе дали возможность узнать что-то о чем-то за пределами твоего ванямирка. Но нахуй тебе это надо же. Kids these days.
>>770548Несколько лет назад, когда 64-битные системы еще не все заполонили ставил себе Haiku. Чудесная ОС. Жаль что не взлетела. На моем 4 пентиуме выдавала чудеса производительности в области проигрывания видеофайлов. На ней можно было одновременно запустить дохуя HD видео на и они не глючили. В шиндовс и прыщах такое сделать было невозможно.мимо-крокодил
>>770603>чудеса производительности тото анон не о производительность, а об архитектуре ОС, в частности он абассал концепцию "все есть файл", но и в замен ничего не предложил.
>>770623Ни один линк не был кликнут, такова судьба линков в /pr. Вот хуй же знает что с этим делать, никто читать не умеет, букв не знает, продолжает задавать глупые вопросы.В AS400 файлов вообще не было изначально, например.Заодно, если ты тот же анон что хотел обмазаться несвежим ваткомом и спрашивал про современные техники оптимизации> SSA is not an implementation detail, it's a totally different way of thinking about a code. It is a way to turn your messy imperative code into a nice, clean, immutable functional code that is suitable for analysis.Things that were either exceptionally complex or totally unthinkable in the era of three-address IRs are laughably trivial in SSA or CPS. E.g., moving loop invariants, detecting loop induction variables, transforming simple CFG into selects, ADCE and constant folding - all this stuff is absolutely trivial in SSA
>>770624>несвежим ваткомом и спрашивал про современные техники оптимизацииSSA-представление было разработано исследователями Ron Cytron, Jeanne Ferrante, Barry Rosen, Mark Wegman и Ken Zadeck в IBM в 80-х годах.ох, кек>>770624>AS400 файлов вообще не было изначальнону и скорее твой же вопрос, как у них там с правами доступа на объекты?
Я тут криптоты нарыл, VS вставляет код телеметрии в проект:https://www.infoq.com/news/2016/06/visual-cpp-telemetryМегайоба оптипизирующий конпелятор, кек^3
>>770625Угадай, имплементировано ли оно в Watcom C.В угадывании тебе сможет помочь выяснение момента появления этой техники в GCC.AS400 - одна из самых продвинутых систем с точки зрения безопасности и разграничения прав доступа.Специальная роль "security officer", например, там была заложена с самого начала.
>>770624>В AS400 файлов вообще не было изначально, например.
>>770627Иии чо? Мой йобавирус будет залочен до релиза? Или эта хуитка спихдит кредитку, выебет кота и убьёт брата?Раздули конечно из этого невесть что.
Читал до Праты - С++ программирование Герберта Шилдта, потом мне посоветовали книгу Стивена Праты С++ примеры и упражнения, начал читать оглавление и там написано - Прежде чем начинать изучать С++ вам возможно, прийдется начать изучать Си, и вот я здесь, изучаю на данный момент 4 главу книги Праты по Си, там подробно описаны строки, спецификаторы преобразования, в самом начале книги описали побитовые операций, сука, более идеального способа подачи информаций я ещё не видывал, и если хотите начать изучать Си, читайте Прату, не слушайте быдло-долбоебов которые говорят, что эта книга сложная, нихуя подобного, она пизже, чем то, что вам дадут в итоге, разница видна сразу. Алсо хотел бы спросить, так как пишу программки на VS2015, то хотел бы спросить, программы Си теперь полностью совместимы с С++ ? Ибо файл сохраняется не в .c а в .cpp...
>>770629dz хотя бы знает как было устроено в AS400 (в общих чертах), в отличие от тебя.
>>770627> вставляет код телеметрииВо-первых, уже не вставляет (если линковаться с CRT статически - осталось, но отключается документированной магией no_telemetry.obj). Во-вторых, даже в активном состоянии оно бы всего лишь отчитывалось об именах длл и времени загрузки - обычное профилирование, ничего интересного.>>770638Нет, между Си и C++ в Си-стиле есть разница. Сходи в опции проекта, выключи прекомпилированные заголовки, убери stdafx.h из проекта, а файл .c отлично создается (и компилируется именно как C), если при сохранении вручную указать расширение .c, а не .cpp.
>>770638Прата охуенен для начинающих, никто не спорит.> программы Си теперь полностью совместимы с С++Нет, конечно. Разные языки, разные стандарты.
>>770628>В угадывании тебе сможет помочь выяснение момента появления этой техники в GCC.ты приведи цифры, насколько твой модный, современеый гцц с полной оптимизацией дает пасасать старому ваткому с такой же степенью оптимизацией, а все эти модные технологии и фичи оставь хипстерам.> "security officer"в чем ее приемущество?
>>770643>Во-первых, уже не вставляетот самого факта миня аж триасет
>>770643Блять точно, переименовать же надо было... Спасибо.
>>770645>ты приведиТы ничего не хочешь сделать самостоятелдьно, даже на линк не можешь кликнуть.Как ты вообще дожил такой до своих скольки-там лет в дикой природе?>> "security officer">в чем ее приемущество?Я тебе дал все ключевые слова, по которым можно найти информацию.В прошлом треде даже советовал конкретную книжку, могу повторитьт - "Inside AS/400" by Frank G. Soltis.Тебе этого недостаточно?
>>770648>Ты ничего не хочешь сделать самостоятелдьно, мне это не нужно, есть ты, который без ума от каких то там сферических технологий без конкретных доказательств, потрудись их превести на примерах гцц и ваткома>Я тебе дал все ключевые слова, по которым можно найти информацию.тоесть абасать Plan9 с ее срвером авторизации и файловым подходом, можно не вникая в детали?
Что думаете за go?
>>770650>мне это не нужноТогда зачем вопросы задаешь? Пилите ваши сокеты, не отвлекайтесь.>абасать Plan9 с ее срвером авторизации и файловым подходом, можно не вникая в деталиЯ на конкретном примере конкретных технических решений Plan9 тебе показал что эти долбоебы ничего не поняли и ничему не научились, в какие детали мне еще надо вникать?
>>770653Думаем что можно только позавидовать железобетонной репутации Роба Пайка и Кена Томпсона. Если их даже после разработки Go продолжают считать неглупыми людьми, то теперь, вероятно, такое мнение о них сохранится в любом случае, чтоб они не сделали. Даже если повторят любое из достижений лауреатов премии Дарвина — останутся в нашей памяти как неглупые люди
>>770653Хорошая параша, пытался ей обмазаться. Богатая библиотека, много чего попытались упростить. Единственное, слайсы какие-то ебанутые. Но в итоге из-за простоты своей он меня и оттолкнул. Не могу я без байтоебства и понимания того, что происходит. Сейчас пытаюсь понять C++11/14, такая-то зарядка для мозгакоторого нет
>>770661>Я на конкретном примере конкретных технических решений Plan9 тебе показалчто ты там показал, пиздунишка? ты сразу обосрался и слил
Ну а мы продолжаем компилерсрач, благо мой битоебный тест был еще не стерт и я поигрался с конпеляторами. http://pastebin.com/VSiGMPhmИтог:gcc -O3sample.bin:50000003c1: 50000003sub1: 0.030000 secondsc2: 50000003sub2: 0.090000 secondswcl386 /onkhtx bittest.cc1: 50000003sub1: 0.156000 secondsc2: 50000003sub2: 0.109000 secondscl /O2 bittest.cc1: 50000003sub1: 0.310000 secondsc2: 50000003sub2: 0.068000 secondsкек
>>770697>>769952
>>770709ты против прерываний как системных вызовов или концепции "все есть файл", определись.
Посоветуйте статью типа "Указатели для дебилов". Ну или хотя бы на пальцах объясните, зачем они нужны и в чём разница между
>между звездочка-Hui и амперсанд-HuiФикс.
>>770826чтобы не плодить сущности.
>>770826
>>770826Указатели нужны, чтобы было легче выстрелить себе в ногу.Где ещё у тебя будет возможность выйти за пределы массива? Или обратиться к несуществующей переменной?А серьёзно, например, аргументы в функцию передают по значению, то есть копируются. А передавая указатель на переменную ты в функции можешь поменять её значение. Также структуры можно в функцию передать по указателю, что заметно экономнее.
>>770962>структуры можно в функцию передать по указателю, что заметно экономнееВот из-за таких как ты и придумали references, чтоб ты указатели в функции не передавал и не мутировал их там.
>>770826Что за блджад поколение выросло, до википедии не могут дойти https://en.wikibooks.org/wiki/C_Programming/Pointers_and_arrays
>>770826Указатели не понимал только жид Спольский и его друганы. Любой славяно-ариец знает, что это всего лишь целое число, адрес в памяти некоей переменной, содержащей нужные ему данные.
>>770973Сам то понял, что написал?
>>770986Этот дурень наверно спутал тред с плюсовым и говорит о константных ссылках.>>770962>Также структуры можно в функцию передать по указателю, что заметно экономнее.Не учи новичков хуйне. Выигрыш в перформансе будет только при передаче реально больших структур (а небольшие наоборот выгоднее передавать по значению), ты не в 85-м.
>>771228Поясни, почему передать указатель не экономнее по памяти, чем пихать всю структуру в стек?
>>771260Да и по скорости.
>>771260По памяти - нет, выигрыша не будет нигде, когда есть ограничение - приходится держать в одном экземпляре.По скорости - на небольших объектах будет выигрыш за счёт меньшго кол-ва индерекций данных, лучшей лакальности данных, различных оптимизаций компилятора (при передаче по ссылке их, как таковых, не может быть).
>>771292>кол-ва индерекций данныхБез "данных", конешно жеж.
>>771292Все так, но когда захочется изменять что-то в передаваемой по значению структуре, придется править все вызовы функции, а вот подход "всегда передавать указатель, а потом делать локальную копию структуры при необходимости" этим недостатком не страдает. А по значению имеет смысл передавать те структуры, содержимое которых ты мог бы передать в качестве отдельных аргументов (вроде vector3 pos вместо float x, float y, float z).
>>770826> зачем они нужныЧтобы решать проблемы.https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering
>>770973>referencesсинтаксический сахарок
Bump
реквестирую фтотку си кодерши
>>771754>>771754Ты забыл приложить няшку.Поэтому фотка будет анти-Си кодерши.http://www.codersatwork.com/fran-allen.htmlhttps://en.wikipedia.org/wiki/Frances_E._Allen> -Seibel-: When do you think was the last time that you programmed?> -Allen-: Oh, it was quite a while ago. I kind of stopped when C came out. That was a big blow. We were making so much good progress on optimizations and transformations. We were getting rid of just one nice problem after another. When C came out, at one of the SIGPLAN compiler conferences, there was a debate between Steve Johnson from Bell Labs, who was supporting C, and one of our people, Bill Harrison, who was working on a project that I had at that time supporting automatic optimization.> The nubbin of the debate was Steve's defense of not having to build optimizers anymore because the programmer would take care of it. That it was really a programmer's issue. The motivation for the design of C was three problems they couldn't solve in the high-level languages: One of them was interrupt handling. Another was scheduling resources, taking over the machine and scheduling a process that was in the queue. And a third one was allocating memory. And you couldn't do that from a high-level language. So that was the excuse for C.> -Seibel-: Do you think C is a reasonable language if they had restricted its use to operating-system kernels?> -Allen-: Oh, yeah. That would have been fine. And, in fact, you need to have something like that, something where experts can really fine-tune without big bottlenecks because those are key problems to solve.> By 1960, we had a long list of amazing languages: Lisp, APL, Fortran, COBOL, Algol 60. These are higher-level than C. We have seriously regressed, since C developed. C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine. This is one of the reasons compilers are. basically not taught much anymore in colleges and universities.
>>771759они там в ибм все какието ебанутые
>>771759Я не понимаю, когда я читал историю C, было очевидно, что он стал популярным совершенно естественным путём, никто его насильно не форсил. Если так вышло, что этот язык оказался более удобен, может, есть смысл задуматься всем тем, кто ратовал за эти свои amazing languages, которые не стали так известны.
Поясните за WinAPI на Си.
>>771766Тебе лучше знать.> To quote her A.M. Turing Award citation:> Fran Allen's work has had an enormous impact on compiler research and practice. Both alone and in joint work with John Cocke, she introduced many of the abstractions, algorithms, and implementations that laid the groundwork for automatic program optimization technology. Allen's 1966 paper, "Program Optimization," laid the conceptual basis for systematic analysis and transformation of computer programs. This paper introduced the use of graph-theoretic structures to encode program content in order to automatically and efficiently derive relationships and identify opportunities for optimization. Her 1970 papers, "Control Flow Analysis" and "A Basis for Program Optimization" established "intervals" as the context for efficient and effective data flow analysis and optimization. Her 1971 paper with Cocke, "A Catalog of Optimizing Transformations," provided the first description and systematization of optimizing transformations. Her 1973 and 1974 papers on interprocedural data flow analysis extended the analysis to whole programs. Her 1976 paper with Cocke describes one of the two main analysis strategies used in optimizing compilers today. Allen developed and implemented her methods as part of compilers for the IBM STRETCH-HARVEST and the experimental Advanced Computing System. This work established the feasibility and structure of modern machine- and language-independent optimizers. She went on to establish and lead the PTRAN project on the automatic parallel execution of FORTRAN programs. Her PTRAN team developed new parallelism detection schemes and created the concept of the program dependence graph, the primary structuring method used by most parallelizing compilers. > Allen was a professor at New York University from 1970–73.[2] Allen became the first female IBM Fellow in 1989. In 2007, the IBM Ph.D. Fellowship Award was created in her honor
>>771771Какого в пень юникс-вея, похеру всем был вей.Юниск стал популярен потому что малолетние долбоебы, которые сейчас играют в NodeJS, тогда до серьезных компьютеров не допускались. Все во что они могли играться это в тормозные недокофеварки типа PDP, куда они радостно и ставили Unix, потому что нормальная ОС на этом недожелезе во-первых, тормозила, во-вторых с ней надо было разбираться. С Юниксой разбираться было нечего, потому что в этой недосистеме и сейчас-то нихрена нет, а тогда не было совсем ничего.
>>771774WinRT уже, посмотри на календарь.На Си его тоже можно программировать, тот же COM, только в профиль.
>>771775теперь у IBM просто куча оптимизирующих конпеляторов, тетя типичный йоба-рисечер-кукаретик.
>>771779>потому что нормальная ОС
>>771780Везде один Copy Paste Programming с++А на Си введение есть?
>>771784Компилятор Фортрана до сих пор охуенен.Компилятор APL тоже.На сишечке ты для мейнфрейма много не напрограммируешь.С языками программирования у IBM всегда было неплохо. Например, PowerShell списывали с https://en.wikipedia.org/wiki/IBM_i_Control_Language
>>771784>типичный йоба-рисечер-кукаретикIBM сейчас ведущая компьютерная корпорация. Ничем не уступает гуглу по финансовым показателям. А по разработкам дает ему пососать на 10 лет вперед.
>>771788http://stackoverflow.com/questions/7436144/using-winrt-from-c/7437006#7437006
>>771796>Фортраналютейшее говно мамонта, хуже может быть только бейсик>PowerShellтолько до баша ей еще очень далеко>>771804>А по разработкам дает ему пососать на 10 лет впередконечно, так далеко, что сервера от IBM синоним лютейшего пиздеца
>>771804>Ничем не уступает гуглуСорта пузерей. Прыщавый задрот из какого то там гаражного микрософта не напрягаясь дал пасасать всему IBM.
>>771810> Фортрана> лютейшее говно мамонтаШкольник плиз. Фортран ЛУЧШИЙ язык программирования на данный момент. Но поработать с ним дают только тем, кто имеет phd.
>>771815Продолжай писать ножиком в перфокарты.
>>771815>Но поработать с ним дают только тем, кто имеет phdнадеюсь хотя бы на PDP-2
>>771815> Фортран ЛУЧШИЙдаже JS не напрягаясь нассыт фортрану в ротешник
>>771815>PhD>ПрограммированиеТы сам нассал себе в ротейшик.
Школьнички, вот вы никогда не задумывались почему в США изобилие еды? И при чем тут Фортран? Подумайте над этим на досуге. Тогда возможно поймете почему от JS нет изобилия еды, а от Фортрана есть.
>>771830гладиолус же
>>771815Фортран - язык программирования, конечно, отвратительный. Но речь была не о нем, а о качестве его трансляторов. До которого всем - как до Луны.
>>771810>сервера от IBM синоним лютейшего пиздеца Сберу не забудь рассказать, у них процессинг на них крутится.Правда, на нормальные машины денег не хватило, наскребли только на 795. Но справляются и они.
>>771855Такое то маняврирование.
>>771858Маневрирование?Началось вот с чего> теперь у IBM просто куча оптимизирующих конпеляторовВ ответ пришлось напомнить о качестве IBM-овских трансляторов, которыми и занималась анти-С программистка Allen.
>>771857полугосконторам в приказном порядке навязывают ИБМ, инфа 150%
>>771861>качестве IBM-овских трансляторов чинастайл
>>771855>Но речь была не о нем, а о качестве его трансляторов. До которого всем - как до Луны.он сосет с проглотом когда транслирует или что?
>>771759>SeibelЭто тот уебан, что свою CRM форсит?
>>771872>>771874> it seems that even in 2015, Fortran is being used a lot.> I just came across this (alternate link) list which basically is a list of 13 codes approved by DOE's OCLF facility to run on the 300-petaFLOPS Summit machine which will be made available to researchers in 2018. I tried to find the main language used for the code (based on a quick google search) and here is what I found:XGC FortranSPECFEM FortranACME Fortran (Bunch of climate codes)DIRAC Fortran (Mostly)FLASH FortranGTC FortranHACC C/C++LS-DALTON Fortran (some C)NAMD C/C++NUCCOR FortranNWCHEM FortranQMCPACK C++RAPTOR Fortran> So out of 13 codes, at least 10 (based on my quick search) appear to be written in Fortran. Not bad for a 50 year old language.
>>771855Фортран конпелируется в быстрый код только за счет того, что язык очень бедный, оптимизации простые, компилятору много думать не надо.
>>771898Именно по этой, вероятно, причине гнутый фортран сливает фортрану от IBM в разы. И умеет компилировать в архитектуры отличные от говнопекашечек.
>>771810powershell именно как шелл уделывает башпроблема в том что под винду никогда не было годных эмуляторов терминалано ведь шелл и эмуль - разные вещи
>>771810> сервера от IBM синоним лютейшего пиздецаблядь, ты ебанутый, не пиши в том что не разбираешьсяна них была и есть охуенная аппаратная виртуализацияпросто несколько лет назад костылями прикрутили аппаратную виртуализацию и в x86, после этого стало выгодно везде пользовать x86 машины
Есть ли в си возможность выполнить функцию n раз не прибегая к циклам? Каким-нибудь функциональным образом?
>>771999Кластеры так и не прикрутили. https://en.wikipedia.org/wiki/IBM_Parallel_Sysplex
>>772027http://www.cprogramming.com/tutorial/c/lesson16.html
>>771999>охуенная аппаратная виртуализацияпасасация, такое же говно как и например Лотос Домино
>>772092Lotus Domino на момент своего появления была невъебенно прорывной системой. Это был интранетный интернет когда в мире еще не было того интернета как мы его сейчас знаем.Про LPAR же ты знаешь ровным счетом ничего, как видно из твоего аргументированнейшего ответа.
>>772105>на момент своего появления была невъебенно прорывной системой1989? но нахуя это убожество в 2000?
>>772105>LPARнет не знаю, но я знаю, что админы в госконторах настолько днище, что они просто накатят виндовз на сервер и сверху поставят скюл и им поебать на все эти LRAP
>>772151Ты до сих пор продолжаешь под словом "сервер IBM" понимать "ПеКа-сервер", несмотря на то что уже много лет назад IBM весь бизнес по производству этих "ПеКа-серверов" для голодранцев продала Lenovo?>>772148Если клиентам нравится и они платят деньги, зачем же им отказывать? Это тебе не нодэжээсочка, где время жизни фреймворка измеряется в секундах, и пердолься с ним дальше как хочешь, если тебя по неопытности удосужило на нем что-то построить
>>772216IBM xSeries 346 вот это например, в трех шкафах стояли
>>772218Это Пека-"серверы", которые давно проданы китайцам, причем здесь они? В этом треде о ПеКа-"серверах" никто не упоминал кроме тебя. Информацию о 795, которые упоминались, и других серверах IBM ты можешь нагуглить самостоятельно (я в этом уже немного сомневаюсь, судя по тому что ты не смог этого сделать до сих пор, но вряд ли чем-то смогу тебе помочь если так). Могу уверить тебя в одном - Windows на них поставить невозможно.
Аноны помогите, есть некая функция.void WriteFormatted(const char *format, ...){}Собственно, как правильно эти три точки называются, а то я даже загуглить не могу.
>>772229>Могу уверить тебя в одном - Windows на них поставить невозможно.значит им не место в госконторах
>>772240варибал аргументз
>>772256спасибо
>>772251В провинциальных отделениях - может быть. Хотя когда-то стояли и в отделениях одной госконторы Alpha-серверы от Digital, и крутился на них MUMPS.А в головном офисе - отчего же, и мейнфреймы бывают.
>>772216>нодэжээсочка, где время жизни фреймворка измеряется в секундахАй не пизди. Ни один крупный фреймворк на ноджс не умер.
у меня пиздец, ребяткиЗнаю, как работает си, знаю всякие операторы, функции, структуры и другую поеботу, но не могу решать задачки за первый курс универаПросто смотрю на задание, и не могу представить себе алгоритм решения. Пиздец, блядь, я вылечу нахуй из шараги если не сдам
>>772374Ну тащи уже сюда свои задачки.
>>772384Да похуй на задачки, блядьЧто делать, как научиться их решать, сука?
>>772384Например, есть задачка такаяПроверить, есть ли в строке комбинации из двух букв. Учитывая, что эти буквы могут быть разных регистров. Вот, когда я это читаю у меня в голове вообще нихуя не появляется, сука.ну, записать строк, а потом что, сука? Просто нету идей
>>772389 ---------------------------------------------------------------------- strstr -- Locate the first instance of a substring in a string. Results: If string contains substring, the return value is the location of the first matching instance of substring in string. If string doesn't contain substring, the return value is 0. Matching is done on an exact character-for-character basis with no wildcards or special characters. Side effects: None. ----------------------------------------------------------------------
Если тебя интересует как такая функция может быть реализована, то идешь сюда:https://www.google.ru/search?q=strstr.c+source+codeЕсли на реализацию тебе насрать, то ПРОСТО подключаешь и используешь.
>>772392>strstr>учитывая, что буквы могут быть разных регистров
>>771999> на них была и есть охуенная аппаратная виртуализацияДля это есть SPARC: https://en.wikipedia.org/wiki/Oracle_VM_Server_for_SPARC
>>772404https://www.gnu.org/software/libc/manual/html_node/Case-Conversion.html
Ну что как ты там? Справился с кейс-конверсией?
>>772389вот именно поэтому лучше не надо начинать с сишки. Писал бы на лиспе/питоне, не было бы таких глупых вопросов.
>>772461>не надо начинать с сишкиНет надо! Один раз выучил си и спокоен всю оставшуюся жизнь. А выучишь лисп, так все равно потом поинтеры учить.
Дайте гайд по указателям для аутяр
>>771780> посмотри на календарьВнутри WinRT классический Windows API, поменялись только имена DLL. Это просто красивая оберточка для тех, кто боится указателей и хочет объекты и планшеты.
>>772240Точки называются ellipsis, а функция называется variadic function.
>>772389если это учебная задача тоделаешь функцию, которая приводит букву в нижний регистрдальше бежишь по строке, как только нашел букву из тех двух (сравнивая не напрямую, а испльзуя ту функцию), значит нужно сравнить следующий символ - если он второй оставшийся, значит, опа, ты нашел комбинацию
>>772543Начерти реско такую функцию
>>772598ты охуел?
>>772634Я сам уже написалидинахуй
>>772637один хуй тебя отчислят, дегенерат ебаный
>>772641бля, я щас за неделю выучу
>>772406Только если считать что все задачи сводятся к Оракелу
Создан язык будущего> Inline C/Assembler in Bash> https://github.com/eklitzke/c.sh
>>772869> x86 assembler in Bash> shasm is an assembler written in GNU Bash Version 2, which may work in other recent unix-style "shell" command interpreters. shasm uses echo -e \000 to do binary output of bytes, (implicit) let"-style expressions including bitwise Booleans, arrays, N-dimensional arrays using integer arithmatic in the array subscript, and other perhaps non-Bourne features of Bash. It's probably a trivial port to pdksh or zsh. shasm does NOT call externals such as sed, dd, expr and so on. All it needs is the shell,although it does need a cushy shell.> http://lists.gnu.org/archive/html/bug-bash/2001-02/msg00054.html
>>772768>все задачи сводятся к Оракелуты не поверишь...
Плюсы и сишечка со своими жирными стандартными либами и костылями - все. Хоть и сделали musl, uclibc, uclibc++ на них почему-то перекатыватся не стали.Теперь SBCL https://lbolla.wordpress.com/2010/12/05/sbcl-quicker-than-c/
>>772873Большие задачи сводятся только к DB2 для zOS
>>772885Что там? Факториал на лиспе считается быстрее?
>>772885>Хоть и сделали musl, uclibc, uclibc++ на них почему-то перекатыватся не сталикто не стал?
А чому тогда ЛИСП сосет у Джавы?https://benchmarksgame.alioth.debian.org/u64q/lisp.html
>>772918Какой смысл этих бенчмарков, если на реальном софте Джава всегда самое тормозное, что только бывает. Написать быстрый факториал можно и на бейсике.
>>772921Зато на лиспе почему-то никто не сумел, что как бы намекает (лол).
Жду тестов Кобол вс Фортран вс Лисп
>ситред>изучение скорости факториала
>>772910> DB2 Oracle ещё в 70-ых дал пососать твоей DB2, успев выпустить быстрее RDBMS на рынок.
>>773004DB2 Oracle никак не повредил, он работал и продолжает уметь работать только на низкобюджетном хламе.Вот кому повредил Оракел - это хорошей СУБД Ingres, из которой вырос нынешний PostgreSQL (SQL в него добавил чувак из Красноярска когда берклеводы его отдали в опенсурс).В Ingres был язык намного более прямой, назывался QUEL. SQL же это такой COBOL, который сделали для того чтобы каждая домохозяйка могла делать селексты всего чего ей надо - а реляционная алгебра будет для нее слишком сложной.В результате имеет то что имеем.
>>772885дим, ты дурачеккагда нужна производительность, ни кто не юзает сишную стандартную библиотеку под такой проект запиливают что-нибудь по духу apr library
Посоветуйте, что хорошего можно написать на сях?
>>773045Полезный модуль для nginx
>>773045c++
>>773045интерпретатор нормального языка
>>773053Перла?
>>773058APL или Jhttps://github.com/jsoftware/jsource/blob/master/jsrc/s.c
>>773066Перл более божественен
>>773072Нет
>>773077у тебя на пикче протопихтон какойто
>>773079http://tryapl.org/
>>773077Что на пикче?
>>773083точно тряпл )
>>773085Комментарии не дают отвта на этот вопрос?
>>773092Я уже прочитал про твоего Айверсона в википедии. Успокойся.
>>773094Этого недостаточноhttps://en.wikipedia.org/wiki/Roger_Hui
Дядя Гейб из Вентиля сказал:>Даже баба может научиться программировать, не нужно быть гением, чтобы понять, как программировать, однако не каждый блещет оригинальностью.
Пацаны есть вопросСмотрите карочКак мне определить, сколько раз в строке появляется слово\комбинация букв? стрстр ищет только первое вхождение ведьЕсть тема, что надо стртоком поделить все на лексемы, а потом по них проходить стрстром но я хз как это делат
>>773655А циклы тебе на что даны? Сначала strtok в цикле, пока NULL не вернет, потом так же strstr:for (const char ∗ptr = haystack; ((ptr = strstr(ptr, "needle")) != NULL; ++ptr, ++counter);
>>773655> int counter = 0;> String string = "12343151341231231235134123";> Matcher matcher = Pattern.compile("123").matcher(string);> while (matcher.find()) {> counter++;> }Мимо катился джавасударь
>>773674это тред для пердунов-СИстариков, иди нахуй
>>773675Засунь размер этого вебм в средний объем доступной памяти при написании C программ.
>>773680влезет
>>773674>Matcher matcher >String string Иди иди Нахуй нахуй.
>>773674всегда всегда ненавидел ненавидел джава джава пидоров пидоров
>>773691>>773692Знаешь сколько строчек кода ты напишешь, пока у меня загрузится IDE и я объявлю две переменные с указанием их типов?
>>773695не знаю не знаю
>>773728Хули тип переменной не определил, псина незнающая?
>>773730auto ne_znayu = 0;
>>773731> = 0И какая польза от нуля вместо переменной?
>>773735ne_znayu;
>>773738Это значит, что твой код ничего не делает и в нем нет смысла. Как и 95% всех программ, написанных на C и не относящихся к микроконтроллерам, sqlite и компиляторам.
>>773742char otvet_autistu[26] = "poshel nahuy daun ebaniy";
>>773765Сидаун проебал запятую, а она теперь не влазит в переменную. Каков конфуз!
>>773765TypeError
>>773767Почему?
>>773655>>773662http://pastebin.com/kb76abb6
>>773794нихуя не понятно, хоть бы коментариев немножко влепил для даунов
>>773799это шутка?
>>773806для даунов же
>>773807Шутка для даунов?
>>773809Блядь, иди в жопу
>>773794нахрена эта проверка[CODE] if (!*p) return 0;[/CODE]
>>773817спеки strstr смотри
>>773823>Bugs>Early versions of Linux libc (like 4.5.26) would not allow an empty needle argument for strstr(). Later versions (like 4.6.27) work correctly, and return haystack when needle is empty.лол
Анон, зашкварно ли пользоваться онлайн-компиляторами?
>>773833Нет.
Аноны есть одна играhttps://github.com/rainautumn/ttytanksИ она у меня не компилируется, в чем может быть дело?Вот мейкфайл:CC = gcc -std=c99OBJS = main.o utils.o kernel.oCFLAGS = -march=native -O2 -pipeLDFLAGS =LIBS = -lpthread -lncursesTARGET = ttytanks$(TARGET): $(OBJS) gcc $(OBJS) $(CFLAGS) $(LDFLAGS) $(LIBS) -o $(TARGET)all: $(TARGET)clean: rm $(OBJS)Ну а на пикрилейтеде ошибки.
>>773833Я считаю ну хуй его знает.Дебажить через это говно нереально, код тоже абы-какой высрет.Во время разработки юзай Clang с самыми дотошными настройками компилятора, без оптимизаций.Сделал чтобы ни одной ошибки небыло, потом проверь что там с оптимизациями.А готовый пакет собирай с GCC 6.1
>>773848gcc main.o utils.o kernel.o -lpthread -lncurses -std=c11 -O2 -march=native -pipe -o ttytanks/usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: main.o: undefined reference to symbol 'halfdelay'/lib64/libtinfo.so.6: error adding symbols: DSO missing from command linecollect2: error: ld returned 1 exit statusmake: * [Makefile:9: ttytanks] Error 1Теперь срет этим онли.
>>773855Попробуй перенести -lpthread -lncurses в конец команды.
>>773845Вот тебе мейкфайл http://pastebin.com/VA1ZEBZJА автор тот ещё говнокодер, да.
>>773863gcc -std=c11 -O2 -march=native -pipe -c -o kernel.o kernel.cgcc main.o utils.o kernel.o -std=c11 -O2 -march=native -pipe -lpthread -lncurses -o ttytanks/usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: main.o: undefined reference to symbol 'halfdelay'Перенес, не помогло, курсес вроде со стандатными флагами собрана, не пони маю в чем дело.
>>773869По-моему в ней то и дело, только не понятно в какой модуль библиотеки вкючена функция halfdelay
>>773867>А автор тот ещё говнокодер, да.Нет, ну вы полюбуйтесь на эту кашу из табов и пробелов
>>773870Я скинул выше мейкфайл, которым я смог собрать.
>>773867Это Я и по мейк-файлу заметил.Ну можешь пофиксить код, он сейчас пулл-реквесты принимает.
>>773845Эти отступы…
>>773867Дело не только в мейк-файле, да и сним все норм было, ощибку одну и ту-же сыпит.не может достучатся до функции halfdelay
>>773879У меня всё нормально собрало. Попробуй снести .o-файлы.
>>773877Я так не могу мне наиболиее удобочитаемым кажется вариантfunction (args,arg2) { govnocode; govnocode++; govno= ++govno + ++mocha; }GNU - style
>>773880make clean перед каждой пересборкой делаю, не в этом дело, вот к функции доступ получить не может, блядь, сейчас наверно в интернете найду ее и добавлю непосредственно в код.
>>773882Ничего добавлять не надо, это из ncurses функция.У тебя какие-то пакеты не доставлены, возможно. ncurses-dev там, всё такое.
>>773882>>773884http://pubs.opengroup.org/onlinepubs/7908799/xcurses/halfdelay.html
>>773845http://stackoverflow.com/q/26267788
>>773884И чего еще может не хватать?Я конечно еще тот неосилятор, но с этим пакетом вроде все в норме.
А вообще ты неймфаг, так что иди нахуй. Вот что.
>>773888Спасибо антоша -ltinfoПомогло.
CC = gccOBJS = main.o utils.o kernel.oCFLAGS = -std=c11 -O2 -march=native -pipeLIBS = -lpthread -lncurses -lm -ltinfoTARGET = ttytanks$(TARGET): $(OBJS) $(CC) $(OBJS) -o $(TARGET) $(LIBS)all: $(TARGET)clean: rm $(OBJS) $(TARGET)
>>773910Либы суют в LDLIBSПри линковке добавляют LDFLAGSrm -f, чтобы не верещал, когда файлов нет.
>>773912Поебался с ним, а он все верещит. Пусть верещит, хоть выхлоп понятный будет.CC = gccOBJS = main.o utils.o kernel.oCFLAGS = -std=c11 -O2 -march=native -pipeLDLIBS = -lpthread -lncurses -lm -ltinfoTARGET = ttytanks$(TARGET): $(OBJS) $(CC) $(OBJS) $(CFLAGS) $(LDLIBS) -o $(TARGET)all: $(TARGET)clean: rm $(TARGET) $(OBJS}
REST SDK от MShttps://github.com/Microsoft/cpprestsdk
>>774002Вы ошиблись тредом.
>>773873чё у тебя за пидорский редактор на пике
>>773925В каком плане верещит?
Си это же обёртка над ассемблером? Как написать свою ось? Вот написал я хеллоуворлд, скомпилировал в бинарник. Как сделать, чтобы при включении пеки она отображалась?
>>774269тебе предстоит долгий путь...
>>774269>Как сделать, чтобы при включении пеки она отображаласьвсе просто, тебе нужно поместить его в определенный сектор диска который считывается биосом при загрузке, потом просто скопируешь строку в видиопамять и все
Допустим, есть один мультиплеерный рогалик на 5 рыл.Каждому из клиентов нужно отсылать каждую сек пакеты с обновленными координатами соперников и все такое.Вот только я не пойму, по идее для каждого клиента нужно иметь свой поток? Или же как в данном случае поступают?Либо же просто выделить отправку пакетов и прием в тред, отстраненный от остального игрового цикла?
>>774401Если тебе заведомо хватает производительности одного ядра, то лучше вообще с потоками не заморачиваться. Почти любую хуйню проще сделать в одном потоке. Но даже если писать с потоками, то по потоку на клиента это в любом случае хуита.
>>774434Понятно. Пожалуй, просто сделаю один поток на всех, чтобы получение/отправка не шароебилось среди остального говна.
>>774401еще udp пакетами клиентам ебаш
>>774454Чому не тисипи? Все-таки желательно проверять доставку.
>>774461жрет много, ну и если другие сделали ход, а с тисипи еще в процессе подтверждения? это типа риалтайм же?
з.ы. проще засчитывать проеб клиенту по таймауту
>>774472По таймауту чего?
>>774478ну бля, тисипи тебе не гарантирует время доставки, нужно время принятия решения, вообщем подумай над этим
з.ы. а рогалик это чтото для пидоров?
>>774484Окей. Щас в интернетах почитаю примеры.
>>774519дава, потом раскажешь, мы подрочим
>>774528На что? На селфи палку?
>>774598на тисипи и юдипи, глупыш
что читать если не смог осилить k&r?
>>774630> k&rнахуы ты эту парашу вообще читал?
>>774630info glibchttps://www.gnu.org/software/libc/manual/html_node/index.html
>>774639ну типо классика, вроде советовали ее и говорили самая годная
>>774654зочем?
>>774148Что файлов нет, когда их нет)
>>774661нужно быть педагогом, короче начни с Праты
>>774630http://c.learncodethehardway.org/book/
>>774672там легче чем в k&r?
>>774675да
>>774675Не )
>>774678так что тогда читать?
>>774681http://c.learncodethehardway.org/book/https://www.gnu.org/software/libc/manual/html_node/index.html
>>774681>http://c.learncodethehardway.org/book/http://hentenaar.com/dont-learn-c-the-wrong-way
>>774751Если его хейтят, то что еще кроме K&R есть?
>>774755Оппост же.
>>774751Согласен, говно. Это был стёб, как и отсылка к glibc manuals
>>774767там годного вроде ничего больше нет
>>774770Чего ж glibc manuals не почитать, в мануалах много полезного пишут. Дреппер про память годно рассказывал http://lwn.net/Articles/250967/Что человек он нелегкий - то кто из нас сахар
>>774773Пратту прочитал? Линдена прочитал?
>>774802Стёб в смысле отсылать учиться по этим двум источникам.А когда ты уже не нуб, то и learnthehardway почитать невредно.
>>774808Когда ты уже не нуб, тебя от Зеда уже давно тошнит еще с его рельсоизрыганий.
>>774808Раньше учились по манам, когда энторнетов не было, получалось лучше чем сейчас.
>>770283 (OP)Почему функции принимают аргументы типа в "void звездочка", только для того чтобы привести их потом к нужному типу? 88 строка, например.http://pastebin.com/79ZNZJpx
>>774838> Почему функции принимают аргументы типа в "void звездочка"Потому что event_new() требует колбэка с такой сигнатурой.
>>774888Почему он требует колбэка с такой сигнатурой если первой же строчкой приводит его тип к указателю на одну конкретную структуру, без вариантов?
>>774981event_new принимает функцию (колбэк), которая принимает указатель на void. Делает она так потому, что вместо do_accept в нее могла бы быть передана любая другая пользовательская функция с такой же сигнатурой (в этом суть колбэков). В данном случае do_accept принимает указатель на struct event_base, но другая функция могла бы принимать указатель на другой тип. Ну и вот чтобы позволить функции event_new принять и затем передать в колбэк указатель на произвольный тип (такой, какой нужен конкретному колбэку), на месте этого типа и используется указатель на void.Алсо, лучше бы ты спросил, для чего каст вот в этой вот строчке:listener_event = event_new(base, listener, EV_READ|EV_PERSIST, do_accept, (void*)base);Потому что хз зачем он там.
>>775014Компилятор у автора ворнингами ругался при -Wall, вот и вставил каст.
>>775016Интересно, у меня ни gcc -Wall -pedantic ни clang -Weverything -pedantic в таких случаях не ругаются.
>>775022Автор мог злоупотреблять тяжелыми линтами и валграйндами
>>775038Код без каста абсолютно валидный, ругаться там не на что.
>>774041vim
>>775058Многие писатели линтов и валграйндов, не говоря уж о коммерческих статических анализаторах кода, понимают свою задачу не в том чтобы послать нахер, потому что стандарту не противоречит, а в том чтобы указать на все места, где может быть программист допустил ошибку, потому что это место похоже на типичные ошибки, которые программисты допускают.
>>775062Все это так, но в чем же типичная ошибка при передаче типизированного указателя вместо указателя на void?
Как перестать быть хеллоувордщиком? Я даже задачу себе не могу придумать.
>>775103Напиши смс-центр.
>>775103Купи ардуину и дрочи в присядку.
>>775016В C преобразование любого указателя к указателю на void и обратно допустимо без всяких кастов.
>>775119Но, кстати, при этом преобразование указателя на функцию, скажем такого:int (∗f1)(struct xy ∗arg)к такому:int (∗f2)(void ∗arg)недопустимо вообще.Вопрос: разве это не бага в языке? Зачем так сделано? Раз уж разрешили неявное преобразование (void ∗) в другие указатели, то почему не разрешили преобразование таких указателей на функции?
>>775129>Вопрос: разве это не бага в языке?нет.
>>775134Тогда поясни пожалуйста, для чего так сделано? В чем практический смысл? А то уже давно меня мучает этот вопрос.
>>775135Что сделано? Неявное преобразование? Чтобы malloc-ом пользоваться и прочими memcpy
>>775137Отсутствие преобразования (хоть явного, хоть неявного) такого указателя int (∗f1)(struct xy ∗arg) к такому int (∗f2)(void ∗arg). Учитывая тот факт, что преобразование struct xy ∗arg к void ∗arg разрешено, и даже может производиться неявно.
>>775135Этот язык вообще один большой баг. Один только алиасинг чего стоит. Ты еще спроси, почему функции f1 и f2 несовместимы, если у одной параметр - указатель на struct foo { int a; }, а у другой - указатель на struct bar { int a; }.
>>775144>Этот язык вообще один большой баг.
>>775144>Ты еще спроси, почему функции f1 и f2 несовместимы, если у одной параметр - указатель на struct foo { int a; }, а у другой - указатель на struct bar { int a; }.Очевидно, потому что у структур разные теги.
>>775140>int (∗f1)(struct xy ∗arg) к такому int (∗f2)(void ∗arg)Потому что функция хочет принимать именно указатель на struct xy, а не что-то другое.
>>775146Ты отрицаешь очевидное. Например,>>775147А вот и нихуя. Если определения структурок видны полностью на момент вызова - функции совместимы, можно объявлять указатель int (∗ptr)(struct bar ∗) и вызывать по нему обе функции. А вот если на момент вызова одну из структурок не видно, функции уже магически перестают быть совместимыми, скастить f1 к ptr можно, а вызывать уже нельзя.
>>775158>А вот и нихуя.Что "нихуя"? foo и bar это не разные теги?
>>775161Структуры с разными тегами тоже могут быть совместимыми.
>>775163В стандарте сказано, что не могут. Я больше верю стандарту, чем анонимному хуйлу с бредом реформаторства.
>>775166> в стандарте сказаноСказано. C11 6.2.7 же:> If both are completed anywhere within their respective translation units,> then the following additional requirements apply: there shall be a> one-to-one correspondence between their members such that> each pair of corresponding members are declared with compatible types> ...
>>775168Угу. А перед этим предложение> If one is declared with a tag, the other shall be declared with the same tag
>>775144>Ты еще спроси, почему функции f1 и f2 несовместимы, если у одной параметр - указатель на struct foo { int a; }, а у другой - указатель на struct bar { int a; }.Ну, по крайней мереstruct foo x = {99};struct bar y;y = x;тоже выдаст ошибку. В случае же с указателем на void, указатели преобразовываются без проблем, но почему-то только если они не в составе указателей на функции.>>775156А когда я пишу struct xy ∗ptr = malloc(sizeof(struct xy) ∗ 10);ptr хочет принимать в себя только указатель на struct xy, а не что-то другое? Нет, тут для void сделано исключение.В случае же, если этот указатель на void является частью типа указателя на функцию, это исключение уже не работает. Особого практического смысла я в этом пока не вижу, а вот минусы есть: например, менее удобно реализовывать подобие интерфейсов из ООП. Так вот, почему бы это в очередном стандарте не исправить, разрешив преобразование указателей на функции, если типы всех их аргументов друг в друга преобразуются? Ведь даже с обратной совместимостью никаких проблем не будет.
>>775186Ты пытаешься найти логику в Си?http://pastebin.com/UAQaWuWG
>>775186> тут для void сделано исключение.Для него не делали исключение. Указатель но void специально ввели, чтобы возвращать из malloc-а или принимать в memcpy.
>>775197Ну, при принятии очередного стандарта, когда что-то (не) изменяют в языке, какой-то логикой наверно при этом руководствуются? Я надеюсь.>>775198Но почему бы тогда таким же образом не ввести правило, чтобы можно было без проблем присваивать указатели на функции, если списки аргументов у них отличаются только тем, что в одном случае аргумент указатель на void, а в другом – указатель на какой-то полный тип? Все равно ведь это ограничение легко обходится с помощью функции-обертки (и при этом по стандарту, не вызывая UB), так почему бы не избавить программистов от лишнего бойлерплейта?
>>775210Это новая мода — троллинг тупостью?
>>775168И вообще, зачем ты полез в раздел про определения типов в различных translation unit. В стандарте есть место, где совсем явно сказано, что если разные теги — то это разные типы.
>>775212Я не знаю, где ты тут видишь троллинг или тупость. Вызов функции, принимающей (по факту) указатель на некий тип, через указатель на функцию, принимающую указатель на void является повсеместной практикой (те же коллбэки, ООП), без которой нормальное программирование на C было бы невозможным. Я задался вопросом, по какой именно причине связанные с этими практиками неудобства еще не пофикшены в стандарте? Эти причины пока никто толком не смог объяснить.
>>775223http://www.open-std.org/jtc1/sc22/wg14/Ну накатай им свои претензии. Будто цель твоих постов не троллинг
>>775280Ладно, ты меня раскусил.Смотрите, что нашел только что:http://loci-lang.org/LanguageGoals.htmlКто-нибудь что-нибудь знает про эту хуйню?
Уже обсуждали очередную попытку Microsoft испортить язык? https://github.com/Microsoft/checkedc/releases/download/v0.5-final/checkedc-v0.5.pdf
Посоны, экспресс вопрос:приведение переменной к voiduint32_t temp =0;(void)(temp);освободит ее место?
>>775801Конечно нет.
>>775805А в чем тогда смысл такого каста?
>>775810Если у тебя в программе есть переменная, но по каким-то причинам ты временно её не используешь, компилятор будет выдавать warning'и, что типа у тебя лишняя переменная. Если кастануть такую неиспользуемую переменную в void, то компилятор заткнется. А во время компиляции оптимизатор может потом ее и выкинуть в общем-то.
>>775517А уже есть люди, которые уже перекатились на С11?Мне казалось, что как ни крути рулетку, дрочка на С89 никуда не денется.
>>775838Что значит "перекатились"?"Программистов на одном языке" было мало, теперь еще и "программисты на одной версии одного языка" появились?
>>775850Не, в смысле используют новые фичи. Анонимные структуры там, многопоточность в стандартной поставке, более фичастный юникод. Хотя многим приложениям нафиг многопоточность не нужна. Да и в гуестроении своя атмосфера.В общем энивей MS в этом документе усложняет язык, делая этакий С++ Lite, а это нафиг не нужно.
>>775856По сравнению с тем сколько MS всего с С++ сделала, сишникам еще повезло.С++ Managed, C++ CLI, что там еще было?
>>775860Хз, на крестах не писал никогда.
>>775860CLI и Managed это разве не одно и то же?
>>775901Одно, но не совсем, иначе это был бы не MS> Новый набор изменений называется C++/CLI и полностью поддерживается Visual Studio 2005. Таким образом Managed C++ считается устаревшей спецификацией, и код, написанный таким образом, рекомендуется переписать.То что я сразу не вспомнил называется C++ CX
>>775864> "Программистов на одном языке" было мало
>>775921Все равно, что новомодный CX, что CLI, почти не используются, для C/С++ сейчас все используют Qt
>>775922Я не слежу, что там в инфраструктуре C++ разработки под винду происходит.Вот в сишке все просто. Есть autotools, есть cmake, есть meson из систем сборки. Из gui gtk и efl. Ну и до кучи либ для тестирования, производительных серверов, различные бд, вот это вот все.
>>775838> А уже есть люди, которые уже перекатились на С11?Да. У нас на работе новые проекты на C11, старые на C99, а на C89 только форкнутый опенсорс.
>>775856> Анонимные структуры Как расширение GNU, все, кому надо было, использовали задолго до C11> многопоточность в стандартной поставкеПо стандарту опциональна. И никто не поставляет, ни MS, ни GNU. Да и нахуй не нужны C11-треды при живых pthreads.> более фичастный юникодХуичастый. Нормализация есть хоть в твоём "фичастом"?
>>775856>>776223Только не пойми неправильно. Я осознаю, что стандартизация часто это закрепление сложившейся практики. Это и было в случае с C11 (да и 99 тоже). Большая часть новых "фич" уже давно были реализованы в расширениях.В этом радикальное отличие от выхода стандарта C++11.
Что вписать в а чтобы иф срабатывал?http://ideone.com/sNY8Da
>>776223>pthreadsКоторые в Линупсе через Дреппера сделаны.
>>776266Сказать-то что хотел?
>>776262> Что вписатьhttps://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
>>776295Там много читать. Лучше скажи как узнать правильное значение а при котором иф будет работать.
>>776262> float b> b == 3.141593H@H@H@
>>776352Вижу. Сажи как исправить
>>776325В общем случае ты не можешь сравнить два float, но ты можешь удостовериться, что они отличаются не более чем на некоторое число. Это число зависит от задачи. Вспоминай школу - округление, приближенные вычисления, погрешность - вот это все. И втыкай, ну хотя бы if (fabs(b - 3.141593) < 1.0f) printf("В военное время значение пи может достигать четырех\n");
>>776198>проектыв /pr нада писать "проЭкты", баран
>>775860сейчас есть расширение с++ для более удобной работы с winrt и uwp
>>776408Так это ж не мои прожекты.
Как конпелировать с Clang-LLVM на винде, не имея при том всего скама вроде цугвина, мингв, тдм-гцц, и.т.д, чтобы чистый Clang-LLvm с его либой под венду
>>776865Да
>>776865никаклибо с мингвлибо в vs2015 ставишь фронэнд шланга, а бекенд будет майкрософт
котаны, нужно перенести в условие цикла, есть:while (1) {if (a||b||c) break;}получаюwhile (!(a||b||c)) {}так вот, в первом случае, если а истино, то условие остальной части не проверяется, а вот во вторм случае, чета не пойму...
>>777152з.ы. типа равно оно while(!a&!b&!c) что не оптимально
>>777153Вполне оптимально (только &&, а не &, чтобы лениво было). Скорее всего, даже скомпилится в тот же самый код, как и с if (...) break.
>>777152>while (1)Пиздец.
>>777152>>777153Не & а &&.Что неоптимально тебе?
>>777164>>777159очепятка, но с логическим И нужна проверка всех условий, а в случае с ИЛИ не всех. и да, на конпелятор не хочу надеятся, нужно что бы логика была наглядной
>>777167Это ты тут недавно switch() оптимизировал?> с логическим И нужна проверка всех условийЧушь собачья. Первое же встреченное ненулевое значение превратится в нулевое, и справа && уже ничего вычислять не будет.Алсо, да, я был прав. Даже древний компилятор из Visual Studio 6.0 собирает из этих двух вариантов абсолютно идентичный (совпадает до последнего бита!) код.
Привет, ребят. Перевожу проект на vcc14, столкнулся с проблемой. Есть функция, которая считает количество использованной приложением памяти. Вот часть кода:http://pastebin.com/qHBEcKQZПо итогу, оно входит в infinite loop на HeapWalk, и каждый раз записывает одно и то же значение в heapinfo. Может, кто знает, в чем может быть проблема?
>>777173ага и нашел недочеты, битовая версия дает пасасать
>>777173>Первое же встреченное ненулевое значение превратится в нулевоепохоже на то
>>777173>древний компилятор из Visual Studio 6.0Он уже был очень хороший.Вот Microsoft QuickC 2.x тебе бы наоптимизировал.
>>777179Ты подписывай свои сообщения уже.Можешь псевдонимом "ЯлублуВатком"
>>777185зачем?
>>777183Максимум была бы разница в JZ/JNZ.>>777176На реальном проекте тестируешь? Повреждение кучи уже исключил?
>>777186Чтоб душевных сил на тебя не тратить за явной бесперспективностью диалога.
>>777191не трать, можешь даже сходить нахуй.
>>777185>ЯлублуВаткомда и ты не привел слив Ваткома перед GCC
>>777188На реальном. Пытаюсь разобраться. Знаю, что скорее всего, повреждение будет из-за того, что указатель где-то приводится не к uintptr_t, а к int, но хз, где именно.Вообще, легаси - говно. Хуй знает, как обнаружить повреждение.
>>777195> не трать>да и ты не привелНе буду.
>>777197Собрать гцц c -fsanitize=address нереально? Тогда остается gflags. Какие галки ставить, сам разберешься.
>>777208>Не буду.вот и правильно, гцц то уже не спасти.
Ура. Я нашел тред про С. Не буду вас томить. а сразу спрошу - что за херню от меня требует компилятор?
>>777195Нахуй кому-то делать ради тебя что-то? Ватком развивался мелкой командой и давно заброшен, GCC живёт и развивается гигантским коммунити, и там уже не первый год идёт рефакторинг – код не ухудшается день ото дня как ты предполагаешь.
>>777456>Нахуй кому-то делать ради тебя что-тоты же должен признать, что обосрался. ватком заброшен верно, но и даже такое старье не проигрывает живущему и развивающемуся гигантским коммунити гцц, выволд - гцц делают уебаны
>>777439инвалид поинтер инициалазер
>>777439Объявление disp_hardware_t покажи.И покажи что такое DISP_D4_PORT.
>>777516typedef struct{ GPIO_TypeDef *port; GPIO_Pin_TypeDef pin;} disp_hardware_t;
>>777516> что такое DISP_D4_PORT.#define DISP_D4_PORT GPIOC
>>777525>GPIO_TypeDef *port;Звездочка ни на что тебе не намекает?> #define DISP_D4_PORT GPIOC Теперь тоже самое для GPIOC
>>777510В чем оно не проигрывает-то? Не поддерживает и 10-й части платформ GCC? Не имеет выборной поддержки любого стандарта, причём даже с расширениями? Сасай по оптимизации?Блять, ну лол, он выигрывает только в твоём слабоумном мозгу.
>>777439Ламповый ИАР. Как же я его ненавижу!
>>777537#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)#define GPIOC_BASE (uint16_t)0x500A>>777542STVD+CosmicЕсли бы я еще был бы программистом, то сам бы разобрался, а так как я криворукий уебан - приходится вот вас мучить.
>>777541>Сасай по оптимизации?давай пруфы
>>777550>STVD+CosmicЭто же ещё хуже! Stm8 чтоли, раз такой больной выбор IDE?
>>777558Давай лучше ты. Я вот не верю что твоё засохшее говно выиграет топовый компилятор в таком сражении.
>>777568я уже выкладывал, ходя там есть интересные недочеты
>>776266>>pthreads>Которые в Линупсе через Дреппера сделаны.Как будто C11-threads не поверх pthreads будут сделаны.
>>777562Ага, она родимая. Разобрался, файл с дефайнами забыл включить. Спасибо всем ответившим.
>>770283 (OP)Ну-ка быстро объяснили мне! Правильно так#define YOBA 1или такconst int YOBA = 1;?Я слышал, что типа во втором случае может быть выделена память и создана переменная, поэтому он сосет. Так ли это?
>>777814да
Что мне ставить Cygwin или Mingw?
>>777829Убунту на виртуалку накати.
>>777826А тут какие-то петуханы говорили, что #define для констант использовать нельзя. Почему?
>>777814В первом случае препроцессор на этапе компиляции подставит вместо йобы литерал, и его использование будет бесплатным (ничего нигде не надо выделять). Во втором случае, если не брать в расчёт оптимизации компилятора, то на стеке появится переменная i, равная 1.
>>777830Почему нельзя попердолится с цугвином или мингв?
>>777829В десятке называется "подсистема Linux" и включается так:https://habrahabr.ru/company/eset/blog/281418/
>>777836А если так const register int YOBA = 1?
>>777837Зачем городить костыли, если есть нормальное решение?Хочешь удобства линукс но без линукс?
>>777839Компиляторы очень вольно обращаются с модификатором register.
>>777838А там можно gcc накатить?
>>777838Кстати, там есть GCC и Make. Получается, что Microsoft вертит Штульмана на хую? Ведь по GPL нельзя использовать GPL софт в качестве компонента для несвободной системы.
>>777844Он там есть. Еще make, vi, возможно еще какие-то утилиты из Линукса.
>>777846Всем поебать на GPL и прочие недоразумения
>>777839Однохуйственно. register лишь даёт рекомендацию компиляторам (которые, тащем-та, давно уже задрочились класть хуй на рекомендации и делать заебись автоматически) хранить переменную в одном из регистров. Напротив, если она не хранится в регистре, значит, она (или указатель на неё) хранится на стеке, а указатель на вершину стека -- в регистре.
>>777850"ШВАБОДКА!" раздался пронзительный голос со стороны FSF...
>>777839слишком по петуховски, есть божественные дефайны, бесплатно и без смс
>>777850но как... ращве гпл питухи не отстаивают свою права в суде? развели бы мелкопидоров на кучу лямов
>>777846Никто им не мешает выложить исходники линуховой подсистемы, что они и сделают. Она не слинкована статично с вендой, так что все ок.
>>777867Просто неоднократно слышал, что #define это ТИП НИПРАВИЛЬНА и нужно через const. Почему - не объясняют. Я всегда константы объявлял дефайном, не вижу в этом ничего плохого.
кста, я вот пилю свой проджект и хочу его открыть, а в дальнейшем и монетизировать, но я не хочу что бы проприетарные пидоры его или часть кода бесплатно использовали в своих продуктах, как мне его залецензить, чтобы не пасасать?
>>777872Это верно для LGPL, а GCC и Make под GPL.>>777869Вот и непонятно, куда они смотрят? В Mac OS X кстати раньше тоже использовался GCC (сейчас сменили на Clang).
>>777882тебе уже объяснили преимущество дефайнов, всегда есть адеты и хейтеры
>>777883Двойная лицензия, как раньшу у Qt: GPL/коммерческая. Проприетарщикам придется отстегивать бабло либо открывать свой собственный код.
>>777885>Вот и непонятно, куда они смотрятможет мелкософт занесла котлету главарям гпл, а макакам как всегда
>>777891Пиздишь как Троцкий.
>>777891но кьют вроде же статическую линковку не позволяет в комерческих проектах. и да, есть ли шаблон лицензии? я один хуй ее с нуля не напишу
>>777893Разве дедушка Штульман может продаться проприетарщикам? Он же не такой!
>>777897Кьют идет по LGPL, что значит - ты обязан обеспечить возможность ковырять/изменять/изучать кьют в проге. Проще всего это добивается динамической линковкой - кьют это dll/so шки, но в принципе - ты можешь сделать и статику, но тогда сам ебись с механизмом, которым ты сможешь обеспечить это требование.
>>777897За бабло позволяет. У них двойная лицензия, либо покупаешь, либо LGPL (раньше была GPL).>>777896https://en.wikipedia.org/wiki/Qt_(software)https://www.qt.io/licensing/
>>777906> либо LGPLLGPL не обязывает проприетарщиков открывать свой код.
>>777906ну за бабло то понятно, вот в линковке там вся и разница, как я понял
>>777907там помойму все открытые лицензии нихуя пропреитарщиков ничем не обязывают, для этого гитхаб и придумали, что бы залез, скопипастил половину, вставил в свой проект и продал, а авторам гитохуй
>>777909Большой кусок частично не скопипастишь - заебешься.
>>777907Раньше была просто GPL.
>>777916Это было очень сильно раньше, как бы вообще не до 4й ветки.
>>777913ну я том, что не зря этот гитхаб так навязывают
>>777920На Qt4 сменили.
>>777924Нагуглил уже - на 4.5 добавили, в 2009м. Короче, 8 лет назад.Вот тогда Qt то и взлетел, чтоб за пределами линупса и кед.
>>777846> Ведь по GPL нельзя использовать GPL софт в качестве компонента для несвободной системы.Это какая-то GPL из твоего манямирка.
>>777934Ну, тащемто он прав, не?GPL обязывает открывать сорцы проги, которые изают GPL-код. Она же вирусная.
>>777936Ну так там ставится софт из убунту-репозиториев, для которого все исходники есть.А драйверы в ядре и проч. для поддержки запуска этого софта GPL-сырцов не используют.
>>777938Ты не понел. Ты не можешь написать прогу и не открыть ее код, если она использует GPL либу.(То есть конечно можешь, но это будет нзаконно). И насрать, на то что чужие исходники ты приложил - ты обязан выложить и свои, или не использовать. В этом вся суть GPL.Не устраивает - покупай проприетарь, линкуй динамически с LGPL, или ищи BSD (в которой хоть дрочи вприсядку - никаких ограничений)
>>777943И к чему ты это всё написал? Где нарушение GPL при запуске линуксовых прог под виндой?
>>777938Разве драйверы не динамически линкуются?
>>777948Ну можно и так сказать.Только линкуются они с ntoskrnl
>>777947Ты дебил чтоле? У линуксовых прог - код открытый.
>>777952И?
>>777954Хуи, блять.Винда запускает БИНАРЬ, и КОД никаким образом их не использует.А вот выдрать кусок ядра линукса - например сетевой стек - и вставить в код винды - ты не можешь.(Поэтому в винде сетевой стек спиздили из BSD)
>>777956Пиздец ты долбоёб. Нахуй ты мне объясняешь, что нарушения GPL нет, когда я с этим не спорю.
>>777959Это ты долбоеб. Ой все, уебывай, больше не кормлю.
>>777956>(Поэтому в винде сетевой стек спиздили из BSD)пруфов, конечно, нет
>>777960Т.е. нарушений GPL нет.
Ваш срач услышан в шапке> Компания Red Hat объявила об изменении лицензии на DLL-библиотеку Cygwin, эмулирующую базовый Linux API в Windows и позволяющую с минимальными изменениями собирать созданные для Linux программы. Вместо лицензии GPLv3+ библиотека отныне распространяется под лицензией LGPLv3+, которая позволяет связывать код с приложениями под любыми лицензиями, в том числе с проприетарным ПО.> Кроме того, Red Hat отказывается от поставки коммерческой лицензии на Cygwin, так как LGPL позволяет обойтись без лицензионных исключений, и больше не будет требовать от разработчиков, присылающих изменения в Cygwin, подписания соглашения о передаче имущественных прав на код. Соответственно процедура участия в разработке существенно упрощается и лишается бумажной волокиты, отпугивающей многих разработчиков.> Одновременно доступен выпуск Cygwin 2.5.2, в котором отражено изменение лицензии и прекращена поддержка Windows XP и Windows Server 2003. Изменение лицензии произведено только для библиотеки, утилиты и другие компоненты пакета Cygwin (cygserver, cygpath, regtool и т.п.) остались под лицензией GPLv3+.
>>770283 (OP)Анонище, расскажи, что ты пишешь на сишке? Или хочешь написать?
>>778440У цугвина способ другой. Там перекомпиляция требуется специально под cygwin, а в десяточке сделали трансляцию системных вызовов, что позволяет просто брать бинарь с его окружением и запускать, не рассказывая, что ядро не его родное.
>>778470Ну, например на прошлой неделе написал несложное ESME для использования в одном проекте на работе (работаю не программистом, но иногда что-то такое пилю), в свободное время потихоньку пишу свой игровой движок.Что писать мне без разницы, главное, чтобы у этого в итоге было хоть какое-нибудь применение.
>>777846> Ведь по GPL нельзя использовать GPL софт в качестве компонента для несвободной системы.Ты не понял, что в GPL подразумевается под "компонентом системы". Программы, которые ты ставишь на винду — это не компоненты винды.Тем более, что microsoft не распространяет софт. Он подтягивается из убунтовых репов.
>>778440Лол. Красношляпые поняли, что их платная цацка теперь нафиг не нужна с появлением подсистемы Linux в Windows. И стали раздавать её бесплатно всем, а не только опенсорсу.
>>778508>Что писать мне без разницы, главное, чтобы у этого в итоге было хоть какое-нибудь применение.два чаю
>>777960Всё никак не могу догнать эту разницу между LGPL и GPL.Есть библиотека. Распространяется по LGPL. Можно мне её использовать в своём платном приложении с закрытым исходным кодом и если можно то как?
>>778780наверное так же как и все остальные поступают, линкуешь и молчишь
Я вам мемес принес.
>>778922Последняя неправильная
>>778928Хипстеры же. Такие же как сейчас на NodeJS хуякают.Хуя-хуяк и в продакшн.Недоязык, недоОС.
>>778939> НедоязыкМне, простому колхознику, и этот недоязык силов не хватает понять.
>>778440Суки, ЭксПи не пожалели.:(
>>778942Для колхозников есть Delphi.
>>778999Иди нахер, назло тебе Си выучу.
>>779009Delphi один раз выучил, и за вечер клепаешь автоматизацию автосервиса, получаешь бабло.А к Си тебе придется еще учить C++, потом Qt, потом SQLite, потом месяц с этим всем пердолиться, а результат такой же.
>>779012Мне одного Си хватит. Я чтоб с контроллерами пердолиться.
>>779013Для этого Си не надо знать. Битшифтики, ножку 11 поднял, два байта в порт 22 переслал.
>>779066Интересные у тебя представления об этой сфере.
>>779083Ардуинщик наверное.
>>770283 (OP)У меня есть значение цвета в виде INT. У меня есть значение сдвига цвета, тоже в виде INT. Т.е. загружая палитру, я выполняю такой кусок кода:for (i = 0; i < palette_size; i++) vram_palette = rom_palette + shift;Как сделать так, чтобы цвет с нулевым значением так и оставался нулевым, без сдвига? Обыкновенный IF мне кажется слишком медленным, как и такая хуита:sign = (color > 0) — (color < 0);color = color + shift * sign;
>>779105Блядь, макаба форматирование пожрала. Вот на пастебине, короче:http://pastebin.com/tVQTdWk4
>>779083Думаешь он будет DSP программировать и встроенные в кристалл мини-FPGA ловко вертеть на хую, устраивая в них dynamic offloading критических частей сложнейших алгоримтов?Хрен там, будет байтики между портами возить на тележке и закатывать солнце вручную.
https://github.com/nim-lang/Nim/wiki/Nim-for-C-programmers
Посоветуйте книги по обработке сигналов для ньюфагов.
>>779123> stm32> байтики на тележкеню-ню
>>779279Прямая Память-Тележка Двойной Емкости - это ведь совсем не тележка!
Говноеды, что вы там пишете под МК?
>>779504Драйвер вибратора твоей мамки.
А что тут не так?Мимо проходил
>>780042Ты билд делал?Он нормально забилдился?Прошлый запущенный процесс отладки завершен?Почему у меня капча из хуйцов?
>>777814Нет, это ты сосешь.Второй случай нужен, чтобы держать данные ридонли-секции.Это может быть полезно, если ты хочешь разместить конфигурацию портов микроконтроллера в виде массива структур во флешь-памяти и конфигурировать их циклом, в котором обходится каждая структура.Работать будет чуть медленнее (что практически не важно, ибо подобная операция выполняется не часто), но и места займет меньше.Аналогично можно делать таблицы виртуальных методов, конечные автоматы и прочие ABI с размещением во флеш.
>>777885Ну, убунта же делала linux.sys...И никто тебе не запрещает поставить швабодный gcc на венду....Так что вся эта подсистема - тупо пакет швабодки, который можно поставить на венду.покормил
Анон, хочу изучать си, но споткнулся на первом же шаге из Кернигана и Ричи. Вот я написал код для вывода "хелло ворлд".Что мне теперь делать? Как запустить программу? В гугле пишут нажать "начать отладку", но у меня она серая.
>>780268Левее "Сброка", собери, откомпилируй и радуйся жызни.
>>780279Что-то не выходит
>>780290Ты ; проебал после вызова pritf
Объясните, нахуя в каждом Win32 приложении должен быть цикл обработки сообщений? Его задача заключается в том, что функция GetMessage достает из системной очереди приложений очередной сообщение и передает его в DispatchMessage, где производится поиск оконной процедуры, которой предназначено сообщение, и этой процедуре отправляется данное сообщение.Но нахуя это делать в каждом приложении? Пусть, например, эксплорер достает все приложения из системной очереди и передает их нужным оконным процедурам.
>>780300>все приложениВсе сообщения.быстрофикс
>>780298Я видимо что-то не то делаю.
>>780300Наследие Windows 3.1, когда не было тредов и была кооперативная многозадачность.
>>780268Ты ебанутый? У тебя солюшн пустой
>>7803071) int main()2) return 0; добавь еще, после printf
>>780313>>780268> проектов: 0Хм, да. Что-то ты не то сделал. Закрой это нахуй и создай новый проект (Консольное приложение). В проекте добавь новый элемент, файл C++ и назови его main.c. Там уже набирай (или вставляй) код и компилируй.
>>780300Этот цикл нужен для ожидания\обработки действий пользователя. GetMessage - точка блокировки (без блокировки цикл сожрет все процессорное не выполняя полезной работы). Не ну ты конечно можешь их не обрабатывать (например так всякие консольные утилитки делают), но тогда и твой процесс завершиться очень быстро.И это не только в винде, это во всех системах, где ожидают действий от юзера. Эксплорер виндовой это самое обычное приложение, а ты просто ленивая скотина.
>>780330Но можно было просто одной функцией Run(); сделать (вместо 3-х, GetMessage, TranslateMessage и DispatchMessage), а сообщения обрабатывать в отдельных потоках.
>>780338А основная нитка что тогда по твоему делать?В Qt в общем то одним вызовом и запускается все это (а внутри уже и крутится цикл обработки эвентов)
>>780324Всем спасибо, сделал всё по-новой - заработало.
>>780354А, такой вопрос. Что-то посвежее КиР есть? Там не было ничего про return 0 и int перед main тоже не было
>>780344В Run просто вызывать Sleep(1), чтобы не было блокировки. И проверять, не было ли получено сообщение WM_QUIT.
>>780357Какое у тебя издание, не первое случайно?
>>780364
Откуда эти пикчи в книге Криса Касперски про шеллкоды? Он что, из этих?
>>780372Да, он из интернетов
>>780338> Но можно было просто одной функцией Run(); сделатьНельзя. Из тройки GetMessage/TranslateMessage/DispatchMessage обязателен только GetMessage - дождаться уведомления о выключении компа, например. Остальные нужны не всегда. Еще в цикле обработки событий могут быть IsDialogMessage и TranslateAccelerator, они тоже не всегда нужны. А в играх делают цикл без блокировок, что-то типа if (PeekMessage()) { ...dispatch... } else { render(); }. Поэтому одного Run даже с кучей флагов нифига не достаточно, чтобы покрыть все случаи использования.>>780357Прата из шапки. На крайний случай Кочан. Но лучше сначала K&R дочитай.
>>780381А есть ли в этом смысл, если он такой старый?
>>780361Да ты просто гений программирования. Очень замечательный интерфейс получается. Ты правда думаешь, что если тебе не хочется делать цикл приема сообщений, то юзеры должны ждать секунду пока твой код сообразит обработать сообщения?
>>780387Это классика. К тому же, второе издание знает о C89 третьего издания вообще не существует - хуй знает, что за говно у тебя >>780371 тут, а множество консерваторов до сих пор пишет именно на C89.>>780388Ну вообще-то хотя бы один из тредов программы, слинкованной с /SUBSYSTEM:GUI, обязан обрабатывать сообщения, или винда сочтет, что программа зависла.
>>780371Странно, это уже после выхода стандарта. Везде советуют использовать именно int main и возвращать 0:http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?id=1043284376&answer=1044841143https://www.ty-penguin.org.uk/~auj/voidmain/Либо там авторы просто не заморачивались возвращаемым значением.В разных скриптах считается, что при успешном выполнении программа должна возвращать 0, иначе код ошибки.
>>780307>Я видимо что-то не то делаю.Используешь продукты Microsoft.CodeBlocks накати бля.
>>780388> секундуКак же я проиграл.
>>780402Только консолька. Без консольки хороший сишник не получится.
>>780307> проектов: 0Проект создай, епт.>>780411Нахуй иди. Ну напишет он cl /c main.c && link main.obj, и что, это такое адски необходимое на начальных этапах знание? Или про это так сложно прочитать, когда оно понадобится?
Callback функции — это изобретение си или с++? Есть какой-нибудь авторитетный источник с описанием что это такое и как правильно реализовать?
>>780438Это паттерн существовавший ещё до си, просто широкую распространённость получил только после ноды с её асинхронностью на каждый пук.Реализовывается везде одинаково – передаёшь указател на ф-цию как аргумент и вызываешь когда окончишь работу/по опр. событию и тд.
>>780438>Есть какой-нибудь авторитетный источник с описанием что это такое и как правильно реализовать?Лямбда-исчисление.
>>780438Разберись лучше с корутинами, это более общая абстракция https://www.youtube.com/watch?v=_fu0gx-xseY
>>780445> In C++17 this is how you would do...Ты тредом ошибся.
>>780414> Нахуй иди.Ты в скарказм уже не можешь?
>>780394> третьего издания вообще не существует - хуй знает, что за говно у тебяИ у меня
>>780451> Для настоящего третьего русского издания перевод заново сверен с оригиналом, в него внесены некоторые поправки, учитывающие устоявшиеся за прошедшие годы изменения в терминологии, а так же учтены замечанияВ общем, они его придумали. По сути это второе издание перевода второго издания K&R.
>>780442>Это паттерн существовавший ещё до си, просто широкую распространённость получил только после ноды с её асинхронностью на каждый пук.Проиграл с этого хипстера. Он был широко распространён ещё во времена Windows NT, где был коллбек на каждое событие в интерфейсе.
>>780467Проиграл с этого проигравшего. Какое слово во фразе "еще до си" тебе непонятно?
>>780467Олдфажный хакер порвался)))
>>780467Пиздуй вирусы пиши и не выйобуцся
Си старики потрясают клюками, кек
>>780489У пистушков и раби-даунов так печет, что они несут свой баттхерт в тред к старикам. Сделай плиз сайт вот такой как этот.
>>780491У меня вообще не печет, я пришел сюда чтобы стать си стариком, как и вы!
>>780493А я уже старик, а решил Си изучить. Доживу ли до конца изучения?
>>780500Чому нет, это же не плюсы.
>>7805018 лет хватит, чтоб в 50 накатить за знание С?
>>780502А я-то думал, я здесь самый старый. Хватит. Если не залезать в дебри, язык простой. Месяц на изучение синтаксиса, год на изучение либ и тонкостей типа неопределенного поведения. Умножь на два, если ты уже не тот, что прежде.
>>780506> не тот, что преждеДавно уже не тот. В 93 хуярил на Ростовской областной олимпиаде по информатике. Места занимал. А сейчас туплю над структурой по пол дня.
>>780509Осиляторство языка - это еще не главное. Может оказаться, что тебе просто писать нечего, потому что все уже написано, а то, что не написано, неподъемно для одного человека. Тогда, наверно, только реверс и дрочение класических алгоритмов может сохранить интерес к кодингу.
Где в линуксе определен addr_t?
>>780445как связаны сопрограммы и коллбек-функции
>>780438коллбек функции в си - это способ параметризировать поведение (а не данные)в разных языках и разных либах по разному решаетсяэто могут быть делегаты встроенные в язык в шарпике и явке, интерфейсы встроенные в язык, либо делегаты и интерфейсы реализованные на уровне либ, либо тупые коллбеки, либо тру лямбды (не синт сахар) и другая экзотерика в функциональщине
>>780515А что если только это и интересно, а вот писать самому-не очень?
>>780597ах, да, там если лезть в функциональщину, то еще и есть замыкания, функции высших порядковальтернатива в опп - это полиморфизм
А у нас тем временем ПЕРЕКАТ. И снова со старой картинкой и старой шапкой.>>780630 (OP)>>780630 (OP)>>780630 (OP)>>780630 (OP)>>780630 (OP)