Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.Что читать:- Классика от Отцов: http://www.cypress.com/file/56651/download- Годное пособие для гуманитариев: 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: оче годно, батя рекомендует.- 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/- https://arhivach.org/thread/182958/- https://arhivach.org/thread/188294/- https://arhivach.org/thread/193780/- https://arhivach.org/thread/198868/Шапка: http://piratepad.net/bJ1SdmkZyu
>2016>C/thread
>>837607> 2k14+2> /thread
Есть гайд для тупых как комить на gcc? а то слишком СЛОЖНА.Тем более я только начал учить, не бейте.
>>837660>а то слишком СЛОЖНА???
>>837660> как комить на gcc?Кодить? Компилировать? Если второе, то cc file.c (или даже make file). А если первое, то книжки у нас в шапке.
Есть литература на родном языке? Уровень знания английского низкий, особенно без понимания базовых вещей.
>>837686K&R есть на русском (ищи третье издание перевода), Прата тоже. Обе книги гуглятся.
>>837693Нашел & Схоронил. Спасибо.
Закину и сюда, вдруг это какой-то подводный камень и в ньюфаго треде о нём не знают.Есть один циклwhile ( read(client_socket, &c, 1) > 0)Теперь тело. Варианты:putchar(c) - всё окей, результат устраивает.putchar(c)printf("%d ", c)После каждого символа он ещё и код поясняет.А теперь внимание:printf("%d ", c) выдает совсем другой результат. По крайней мере, коды последних символов не совпадают с вариантом, в котором есть putchar(c). Что за говно? С сокета гарантировано постуают одинаковые символы.
>>838039Никаких подводных камней, просто я не сбрасывал буфер.
>>838056лошара
>>838056
>>838474Там должно быть написано setbuf(stdout, NULL);
Пацаны, скиньте пожалуйста ссылку на пак с VS.
>>838476>setbufчё за говно? опять парашка, в стили винами или позикс?
>>838893Не, вполне себе стандарт.
>>838838https://www.visualstudio.com/ru-ru/products/visual-studio-community-vs.aspx
Какого черта, уже несколько дней одну главу про указатели читаю и перечитываю, хоть бы чего в ней осталось.
>>839206Если не достигаешь полного понимания, попробуй посмотреть отладчиком или порисовать ячейки памяти на бумаге.
>>839206https://www.youtube.com/watch?v=6pmWojisM_EВот попробуй, мне зашло
>>839218Не, мне не очень зашло именно это видео, хотя все что я услышал на этих лекциях про указатели я понял сразу же. У меня теперь другая проблема, хорошо запомнить это., усвоить, и свободно использовать, и я не могу придумать как этого достичь. Читаю сейчас рекомендованную литературу для этого курса, хоть и просрочил все их "сроки" на джве недели уже.>>839217Спасибо, именно так всегда и делаю. Когда не ищу отговорочки.
>>839233Там в задании на сервер (6 сет) наебешься с указателями на указатели
Мимо-студент вкатился. Dev c++ хватит пока для лабораторок ?
>>839245Если забыть, что он древний и слегка течет GDI-хэндлами, то да, хватит.
>>839249А вообще gcc самый оптимальный вариант я так понимаю?
>>839250Да, но у шланга местами лучше диагностические сообщения.
Привет, анон.Поясни пожалуйста про регистры и RAM model.К примеру, у меня есть регистры размера w и слова размера w.Насколько я понял, то чтобы добавить 2 числа мне нужно:1. Из памяти по указателю достать первое значение2. Записать его в регистр3. Из памяти по указателю достать второе значение4. Совершить арифметическую операцию5. Выгрузить результат из регистров в памятьЧто будет если у меня будет регистры размера w и слова такие, что l > w ? Смогу ли я их записать в регистры?Насколько я понял, то могу передавать на указатель на начало ячейки и размер самого слова.
>>839814> Насколько я понял, то могу передавать на указатель на начало ячейки и размер самого слова.Не совсем понятно, о чем ты спрашиваешь. Ты не можешь записать слова размером l в регистры - получатся только остатки от деления, если у тебя little endian или частные, если у тебя big endian.> Насколько я понял, то могу передавать на указатель на начало ячейки и размер самого слова.Кому передавать?Если числа не влезают в регистры, ты складываешь по кускам, используя аппаратный флаг переполнения (если у процессора он есть) или вручную (если сумма меньше одного из слагаемых, добавляешь в следующий раз 1 к слагаемым).
Из предыдущего треда.Антуаны-железячники и мимопроходящие, подскажите, может быть кто-то знает, как решить мою проблему. Есть один CRC32, реализованный в железе. Соответственно, доступа к алгоритму нет. Есть файл и хеш к нему. Как узнать алгоритм, чтобы рассчитать контрольную сумму для других файлов? Перебором полинома? Может быть, какие-то методики есть?Брутфорс - крайне медленное, но, похоже, единственное решение.
сисюны, есть ли стандартная функция для вывода на консоль подстроки из массива, не оканчивающейся на ноль но с известной длиной (типа printf %★s но без спотыка на 0).
>>840072Есть, putchar внутри for.
>>840092ты серьезно?нет, блядь, ты серьезно так стал бы делать?
>>840072еще раз почитай описание printf, она позволяет так делать
>>840130не, если есть нулевой байт в середине подстроки то пиздос
>>840170Ну а ты как хотел? Другого способа найти конец нет сроки нет, ты же не передаешь длину.
>>840175еще раз. есть подсторка, ее длину я знаю, как ее распечатать то? с чотом того, что внутри нее можеть буть нуляка
>>840183>840072>Есть, putchar внутри for.
з.ы. вот такую ебу предлагаютfwrite(string, sizeof(char), length, stdout)чето я не думал, что все так с принтф хуево
>>840092>putchar внутри forне самый хуевый вариант
>>840190С printf все хорошо. Просто не нужно от него ждать волшебства.
>>840194где тут волшебство? нахуй на ноль проверять если длину строки я ее в ебало тычу?
>>840201нет бля, длина сторки мне похую, у тебя нолик в серединке. ненавижу
>>840126Почему бы и нет?
>>840072>>840170>>840183>>840203По определению, строка — это последовательность символов, оканчивающаяся нулём.Или ты из тех, кто лезет кодить даже не выучив определений?
>>840214>По определению, строка — это последовательность символов, оканчивающаяся нулём.нет, ты пытаешься умничать про лексические строки
>>840219и да, как насчет 'превед'?
>>840126да конечно
или "жо\0пко" лол
>>840219> лексические строкиЧто такое "лексический строки"?
>>840226>Или ты из тех, кто лезет кодить даже не выучив определений?кек
>>840227Страницу в стандарте, где приведено определение "лексическая строка"
>>840230я ссу в ротешник твоему стандарту. лексическая строка это строка доступная на этапе конпиляции и вычисляемая по sizeof.
>>839928Стандартные способы расчета пробовал?
>>840233А вот если бы ты не читал кривые переводы, то знал бы общепринятый термин string literal. Алсо, string literal - не строка, а последовательность символов. И если ты не хочешь следовать формату строк, который ожидает printf, можешь тупо вывести свою последовательность символов через fwrite, который как раз и предназначен для вывода последовательностей элементов.
>>840239Что значит "стандартные"?
>>840312> вывести свою последовательность символов через fwrite спасибо кэп
Сап. Объясните ньюфагу, почему на втором круге цикла программа дважды выводит строчку "ЗАГАДАННОЕ ВАМИ ЧИСЛО %число%? (пикрелейтед). Не могу разобраться, аж бесит.Вот код: http://pastebin.com/04TWJ0Vg
>>840369flush buffer
>>840369добавь ещё один scanf("%c", &answer); в конец цикла (после 26ой строки)
>>840379или при работе с программой жми Ctrl+D (или что там в винде нужно жать, чтобы дать знать, что ты закончил input) вместо Enter, а то получается, что ты ещё вводишь знак переноса строки и он также считывается scanf'ом
Аноны, чот я соснул, не омгу запилить функцию чтобы добавляла новый элемент в линкед лист. Укажите, где ошибка в коде? про ошибку в моих генах я уже знаюhttps://ideone.com/FH1jwK
>>840433Давай разберем:1) В строке 27 ты ебешь list_pointer, пока он не станет NULL. В строке 31, где ты вызываешь insertEntry, он, удивительное дело, все еще NULL.2) В строке 43 ты определяешь автоматическую (локальную) переменную. Автоматические переменные "живут", пока не выйдут из области видимости. Т.е., после выхода из insertEntry все указатели, которые у тебя указывают на newEntry уже указывают на мусор. Тебе нужен malloc() или пусть вызывающий создает новый элемент, а insertEntry будет его только втыкать (допустим, ты в main создал элемент, вызвал insertEntry, она его воткнула, и пока выполняется main, жив и элемент, все ок).3) В строке 50 ты зацикливаешь список (нарисуй и увидишь). Тебе бы нужно присваивать list_pointer->next.4) Там же после вставки уже нет смысла крутиться в цикле. Воткни break или return.5) Подумай, что ты передашь, если захочешь элемент в начало (сделать его первым). Алсо подумай, как в таком случае ты уведомишь вызывающего о том, что его начало списка - уже не начало списка (можешь либо всегда возвращать указатель на правильное начало списка, либо принимать указатель на указатель на начало и модифицировать его по необходимости).
>>840437Грандмерси! Все тепреь работает, вот я олух
>>840379Пасиба большое :3
>>839928Бамп. Ну же, нерды-матанщики, дайте мне волшебную формулу.
>>840324Дебил, стандартные, значит описанные в литературе, значит те о которых ты прочитаешь на вики.
Сап. Поясните нюфане, что значит "error: address of stack memory associated with local variable 'array' returned"У меня есть функция int toArray (int length, int number) { int array[length]; for (int i = length-1; i >= 0; i--) { array = (number % 10); number = number / 10; } return array;в методе main делаю так: int array = toArray(5, 13542); Как фиксить? не бейте только
>>841042int* toArray (int length, int number) {быстрофикс. Указатель проебался при копипасте
>>841043Такс, все равно все спят или всем похуй, но я всё таки нашел решение. Если возвращать не array, а создать новый массив в функции, например ar, и сделать ar=array;return ar;то всё будет работать. Стоит ли в это вникать новичку, или забить?
>>841042Смотри сюда >>840437 пункт 2, копипастить лень.
>>841046Понял, спасибо. Пошел изучать malloc()
>>840905>>840898Ничего не хочешь делать, хочешь, чтобы за тебя все анон сделал?
>>839245Pelles C хватит с головой.
Нужно написать программу, считающую периметр квадрата (знаю, что для даунов задача, язык учить начал буквально пару дней назад, а программы нужно писать уже сейчас). Объясните, где проебался, что не так, а то я понять не могу.
>>8415291) В строке 6 scanf хочет указатель на int, а не int.2) В строке 8 printf хочет первым аргументом форматную строку (%d), а не int.
>>841529Почитай как правильно работает scanf и printf.
>>841529man scanf
тут опять приуныл, что нельзя никак проверить вместимость члена структыры в статик ассерте. как же, всё-таки, хуёво. но придумать что-то надо, а то этож пиздец, забудешь, изменишь, и в переполнение.
ещё было бы ништяк, иметь сравнитель членов разных структур по имени, чтобы они совподали или нет. или проще, чтоб одна структура была подмножеством другой. иногда так нужней, ведь меньше оверхеда, ну, определить значения, чем в оболочке структуры пребывать.всё это заставляет меня пить, пить много. хотя не это, а воля. попёр ка я до ночного незаконного
>>842111Ну есть sizeof на худой конец и всякие UINT_MAX. Нормальным людям этого достаточно, а ненормальные могут посмотреть в сторону _Generic.
>>842112>совподалипо смещениям, естественно. может, даже, с от аргументного смещения.
>>842112Это вам в кресты, батенька. Алсо, вот сколько пишу, никогда из-за этого проблем не было. Из-за == были, на единичку ошибался, маски неправильно писал, промоушены эти блядские опять же. Но вот чтобы структуры перепутать - это надо суметь!
>>842113всё это для бедных, и не как не поможет от ошибки. поможет, только от ошибки во второй части выражения.
>>842115идиот. ну в общем-то чтец жопой и не должен быть умным.
ну ладно,чё вы сразу, ну понаписал я хуйни, поругался, всеж мы люди. возвращайтесь.
возможно ли сделать инлайн функцию, не в хедере, но чтоб также работало? чёт как-то не красиво получается. нихуя не понимаю как оно там работает, везде леплю static inline
>>843357Я тебе сейчас очередной секрет открою: когда компилируешь с высоким уровнем оптимизации (в современных компиляторах не обязательно) от этой директивы не зависит вот совсем нихуя.Погугли про weak функции в си, насколько я помню инлайн так же для этого используется.
>>843360разбазариватель секретов, плеаз. статик функция ограничивает область видимости функции в файле, а вот инлайн да.
Хочу посимвольно обработать строку из кириллицы.Однако, даже когда просто вывожу символы, выходит лютая хуита.Что почитать, чтобы разобраться?
Аноны, какие есть годные туториалы по ncurses?В гугле ничего толкового не нашёл.
>>843453Узнай, что такое "кодировка".
>>843360Есть всякие __forceinline компиляторозависимые.
Как на win api отредактировать, например, 24 байта заголовка файла, не копируя файл никуда и не читая его хвост?
>>843656fopen(..., 'rb')/fseek по вкусу/fwrite/fclose или CreateFile(..., OPEN_EXISTING, ...)/SetFilePointer по вкусу/WriteFile/CloseHandle.
>>843671> rbrb+, конечно же.
>>843671>CreateFile(..., OPEN_EXISTING, ...)/SetFilePointer по вкусу/WriteFile/CloseHandleЧто-то не работает. https://ideone.com/mXM6HC
>>843679Уебывай отсюда нахуй.
>>843679Солидарен с предыдущем ананасом.
>>843679А, не, все нормально, лол.>>843682Ссыкнул тебе в ротик. (Автор этого поста был забанен. Помянем.)
Ох как заебись заработало.
Просто охуенно заработало!
test
Анон, прошу помощи:Прога должна выделять заголовки функций в тексте программыПикрил - результат работыПодкинете тестовых примеров? Какие подводные камни? Что не учтено?
>>843959Затести вот это.http://pastebin.com/1wsRwXEr
>>844000Так, я вас понял и благодарю..Невалидного объявления не может же быть в правильно написанной программе?Заголовок может находиться в одной строке с объявлением глобальных переменных, да?(Алсо, может подскажешь, можно ли эту всю задачу делать без регулярных выражений, но и не каким-то тупым посимвольным перебором?
>>844007>Невалидного объявления не может же быть в правильно написанной программе?Это да. Но ведь твоя программа только исходник получает на вход и не может знать, правильная программа или нет. Или я что-то не так понимаю?>Заголовок может находиться в одной строке с объявлением глобальных переменных, да?Компилятору все равно. Главное, чтобы это было разделено точкой с запятой.>без регулярных выраженийСинтаксический анализ. Если не хочешь заморачиваться вручную, то найди описание синтаксиса сишки в формате БНФ, возьми оттуда правила, которые описывают объявление функций (со всеми зависимостями, разумеется) и задействуй ебическую силу flex+yacc.
> можно ли эту всю задачу делать без регулярных выражений, но и не каким-то тупым посимвольным перебором?Выделяешь формальные грамматику, атомарные и не очень структуры и описываешь все через ооп.
>>844012>ебёшься такой с генераторами парсеров и лексеров>целуешь писос когда они генерируют этот самый посимвольный перебор с милиардами gotoА вообще, есть куча более современных и функциональных генераторов, чем это говно зверя с логотипа ГНУ.
>>843959http://ideone.com/HBZnhHУдачи!
>>844049Ну какбе выхлоп генератора тебя волновать не должен, вне зависимости от его вида. В этом же весь его смысл. Другое дело, если имеется требование наговногодить парсер вручную. В таком случае надо получше смазать анус и попытаться сесть им на дерево грамматического разбора, попутно теребя лексемы и надрачивая на алгоритм сортировочной станции.
>>844064> Другое дело, если имеется требование наговногодить парсер вручную.Все парсеры сколько-нибудь не-хипсторских языков "наговнокожены" вручную.
>>844070Насколько я понял, у анона была задача написать детектор объявлений функций, а не полноценный язык. Поэтому я и говорю, что в данном случае проще воспользоваться генератором, если не стоит жесткого условия ручной реализации.
>>844012>>844014>>844050>>844073Спасибо каждому анону за сочувствие , но я почти ничего не понялУсловия задачи: тестовая программа написана правильно, а сама задача - лаба (2 курс), стандартные библиотеку подключать можно
>>844115Для лабы сойдет, а в реальности ты обосрешься об макросы >>844050.
>>844116Макросы — это не C.
>>844123Чет орнул.
>>843959Задача гораздо сложнее, чем ты думаешь. http://pastebin.com/Gf25Psct - абсолютно валидный синтаксис, хоть и бессмысленный. Для лабы норм и то, что у тебя.
Господа сишники, помогите найти легковесную реализацию md4 или md5.
>>844629Бывают не-легковесные?
Сисюны, абасыте меня, а то я ща йобнусь с гцц. Почему не изменяется значение по указателю в функции?http://pastebin.com/wyYEPvQZвывод:1->one2->oneхочу:1->one2->two
>>844741>Сисюны, абасыте меняЗделано.
>>844741Ты не значение по указателю меняешь, а сам указатель
>>844741Ты передаешь по значению указатель на массив символов. Внутри функции ты присваиваешь указателю адрес другого массива символов. После выхода из функции этот указатель перестает существовать. Чего же ты ожидал? Тебе нужно две звездочки, а не одна.
>>844741уатаквот работает http://pastebin.com/4tC7vYEXебать... указатель на указатель? хм...
>>844748>>844747пасиб
>>844748>Тебе нужно две звездочки, а не одна.а вот нихуя, утаквот тоже работает http://pastebin.com/RaYwCp6v
>>844752з.ы. тока конпилятор ругаецо сильно
>>844752Работает лишь по недоразумению. По счастливому совпадению указатели на две строки отличаются только младшим байтом: 0xaaaaaa10 и 0xaaaaaa14, например. И внутри функции ты пишешь единственный char, и этим char ты правишь младший байт указателя с 0x10 на 0x14, например. Но если конфигурация (количество строк в программе, компилятор, опции компиляции) изменится, магия может не случиться, и на выходе будет мусор. Не делай так больше никогда.
>>844749>ебать... указатель на указатель? хм... привыкай к такой разработке своего очка
С какого стандарта начать? С первого или сразу читать C11?
>>845142Начинать изучать язык с чтения стандарта не стоит. Возьми Прату сначала хотя бы. Если язык знаешь, и хочешь почитать именно стандарт, читай C11.
Подскажите нюфагу.char *str;scanf("%s", str);printf("%s placed on %p and contains %i\n",str, &str, sizeof(str));Как бы я не пытался, sizeof выдает 4 (очевидно, размер указателя).Как получить всё-таки размер строки?
>>845831strlen
>>845831Заодно подумай, а куда у тебя scanf строку-то пишет? Вот str - указатель, а НА ЧТО он указывает?
>>845907Первый элемент массива, который заканчивается на '\0'?Я же правильно понимаю, что ОС просто выделяет адрес памяти, начиная с которого я могу что угодно сохранить, но не задену ли я что-то другое в памяти, если введу слишком большую строку?
>>845947> Первый элемент массива, который заканчивается на '\0'?Ну да, только если ты этот массив в str присвоил. Ты присвоил?> Я же правильно понимаю, что ОС просто выделяет адрес памяти, начиная с которого я могу что угодно сохранитьНеправильно. По счастливой случайности str указывает на какую-то область данных, в которую у scanf получается насрать без видимых последствий. В следующий раз может повезти меньше. Алсо, ОС тебе ничего не выделит, пока ты не попросишь. Тебе нужно char str[скольконадо] или str = malloc(скоканадо) или char buffer[скольконадо]; str = buffer.> не задену ли я что-то другое в памяти, если введу слишком большую строкуЗаденешь. Поэтому стоит указать максимальный размер строки, которую scanf скопирует по твоему указателю (%32s, например).
Анонче, скастуй указатель туда, где мне ошибку искать? Решил cs50 пройти 2016го года, решаю шифр вижненера. Очевидно, что с вычислениями где-то напортачил, двоешникhttps://ideone.com/IlQ4GL
>>846005Нашел, неверно вычисляю индекс для буквы из k
>>845951Спасибо, даже не ожидал от двачей таких ответов, лол.
Вопрос, как в консоли выводить псевдо/графику/символы в режиме реального времени и строго в пределах одной границы. Например, что бы полоса бегала в пределах [ ] квадратных скобок. Или символ в скобке менялся в той же строке. В сторону какой библиотеки смотреть? Пробывал бесконечные циклы, так они мне засирали весь терминал
Хочу написать процедуру, где на вход подаются координаты точек (float x, float y). А в теле производится серия вычислений с заранее известными точками. Таких точек будет 475 (соотвественно у каждой будет 2 координаты). Каким образом мне в самом коде программы ввести это точки, чтобы было удобно и работать и вводить? Массив?
>>846148Вот так?float myArray[950] = { 0.1, 0.2, -0.56345, ...};Все уже забыл нахуй.
>>846111curses
>>846148typedef struct {float x; float y} Point;Point yoba[] = {{0.0f, 0.0f}, {0.0f, 0.0f}...}
По учебе пришлось установить visual studioУстановил, не могу найти Си, только шарп и плюсыЧто делать?В гугле не могу найти
>>846312Создавай пустой проект C++, создавай файл, сохраняй с расширением .c. Компилятор там один и тот же, язык определяет по расширению (ну или в свойствах можно насильно указать).
>>846317Я и так создал сначала С++, написал свою программку на Си и мне выдало тип int не поддерживаетсяДумаешь, если сохранить и запустить, поможет?
>>846318> тип int не поддерживаетсяЛолшто? Скриншот?
>>846319Да забей, я даунНажал консольное приложение С++, а не пустой проектВот пустой проект, сори за тупой вопрос, но куда тут писать? Ахахахаахах
Проект создал, теперь файл создавай. Ctrl+N.
PellesC ругается на Unresolved external symbol '_WinMain'. Создавал консольный проект, в исходнике определил функцию WinMain, после этого в настройках проекта включил расширения майкрософта и прописал точку входа WinMain. Не помогло. Изменил тип проекта на Windows - тоже не помогло. Как тут это настраивается?
>>846328Этот?
>>846331Да, сохранишь потом как .c только, и всё.
>>846333ОйййБля, можешь помочь немного? Просто завтра надо сдать кое-что, а я вообще хз
>>846341Не спрашивай. Код выкладывай.
>>846344да это вряд ли можно кодом назватьint a, b, c; a = 14; b = 15; c = 14; if (a==b) printf(3); exit; if (a==c) printf(2); exit; printf(1); exit;это просто вообще первое, что я написал, ахххахахха через 7 часов уже сдавать
>>846347>exit; А это чего?
>>846349Ну тип если первая строка не выполняется, то дальшеУбрать?
>>846352>printf(1)Вот это не будет работать. Откуда ты знаешь про эту функцию, ты видел как она используется?
>>846347Ох, как все тяжко. Нагугли хелловорлд что ли, вставляй код в функцию main(), а не просто в файл.> exitДля вызова функций надо () обязательно указать. А у exit() еще и аргумент есть - код возврата. 0, например.> if ... printf(3); exit; if действует только на первое после скобочек выражение. Если хочешь условно выполнить несколько выражений, заключи их в {}: if (a==b) { printf(...); exit(...); }> printf(3)Принтф не печатает числа, он их форматирует, и ему нужно указать, как именно. Например, printf("%d\n", 3), чтобы отформатировать 3 как целое число (со знаком, если есть), а \n добавляет переход на новую строку.
>>846170И написать простейший скрипт, который конвертит координаты из того формата, в котором они у тебя сейчас, в сишный код. А то заебешься вручную.
>>846354Нет, ну я типо знаю что в паскале вывод это println, тут printfПоэтому и написалВ общем, вся суть:Даны три числа, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа отличных от остальных.Нам просто нихуя не показали в универе, даж за компы не пускали ещё, хахх>>846355Хелловоорлд запускал кстати, сразу как установил. Все работало в консоли.
>>846358printf("%d\n, 1);Нужно указывать шаблон строки для выводасемен
>>846364Обосрался с закрывающей кавычкой
>>846358>>846358Тебе надо пару глав Праты того же прочитать в темпе вальса, сразу все напишешь
>>846364Бляя, крч я рил хз, совсем не разбираюсь в этомТак лучше? И сюда тоже надо "%d\n, ?
Было 9 ошибок, стало 108, норм
>>846373iostream - это кресты. Тебе нужно #include <stdio.h>. Алсо, одинарные кавычки - для символов. Для строк - двойные. А у тебя еще и открывается одинарной, а закрывается двойной. Так даже в этих ваших паскалях нельзя.
>>846373Это не я написал, просто единственное что я нагуглил по этой задачке на Си
>>846376Не сегай тред великого языка современнсоти
>>846378Я и не сегал, лул
>>846380А ну лан
Ну рил, подскажите что тут не так(Устранил все ошибки которые мог)
>>846383Тебе майкрософт свою функцию с рюшечками впаривает. Тоже мне ошибка
>>846383Напиши #define _CRT_SECURE_NO_WARNINGS в самой первой строке файла (перед #include). Алсо, оно обычно предупреждение, а не ошибка, как ты это сделал?
>>846384Ахахха, что? Бл, ну дедлайн серьёзный, если не сделаю то заказчик завтра уволеееееет!!
>>846387Да забей ты, сходи в армейку
>>846386>как ты это сделал?Что именно? >Алсо, оно обычно предупреждение, а не ошибкаЕсли ты про это, то я хзСпасибо, помоглоТеперь 0 ошибок, вроде все должно работать
Аххахха, так и должно быть?
Странно, сначала поодумал, что тип введите нужно на транслите написатьНаписал - не помогло
>>846392#include <locale.h> в начало файлаsetlocale(LC_CTYPE, "Russian"); в начало main(). Или латиницей пиши. И переконпелировать не забудь.
>>846395Так?
>>846395Накосячил немноого с setlocaleПофиксил, русский язык работает, спасибо
>>846395А как сделать, что бы консоль не сразу закрывалась? Она выдает ответ на секунду после ввода чисел и закрывается
Раз тут такая нюфаго-движуха началась.Вот я, например, студентота, 2 курс.Узнал от старшекуров, что С на кафедре очень востребован, и есть смысл его учить к дополнению к преподающимся предметам, чтобы участвовать во всяких кафедральных движухах, преподских проектах и прочем ботанствеИ, собственно, вопрос: насколько чистый С востребован сейчас, и сложно ли потом перекатиться на плюсы(который сейчас, думаю, всяко популярней)?
>>846404>>Узнал от старшекуров, что С на кафедре очень востребован, и есть смысл его учить к дополнению к преподающимся предметам, чтобы участвовать во всяких кафедральных движухах, преподских проектах и прочем ботанствеТы уверен что тебе по пути с этими чуханами?>И, собственно, вопрос: насколько чистый С востребован сейчас,Самые крупные проекты написаны на нём, каждый кодер обязан его хотя бы уметь читать.> и сложно ли потом перекатиться на плюсы(который сейчас, думаю, всяко популярней)?Легко перекатываться
>>846404>насколько чистый С востребован сейчасСкорее всего будет востребован всегда, покуда архитектура кампуктеров не будет меняться. Язык простой. Можно за месяц выучить целиком и полностью. В отличии от крестов писать на нем приятно. Хоть и гемморно местами.
>>846397Пишу на Си больше десяти лет, и до сих пор его не знаю. За короткий срок можно научиться только писать наполненный UB и зависимый от платформы код, который сломается в следующей версии компилятора. Ну и тривиальные хелловорлды, состоящие из библиотечных функций, в которых налажать просто негде.
Сисюны, накидайте ссылы на скоростные библиотеки реализующие динамические массивы.
>>846496+1same shitот себя добавлю: положим, я вот в собственном кодинге не юзаю вещественные типы (не та прикладная облвсть в общем), дак вот скажу честно - что и не знаю всех подводных камней с плавающей точкойили вот, в принципе, на нелокальных переходах можно сэмулировать исключения (в потрохах постри, например, так сделано), но я не делал так, так чтож не могу сказать что я знаю этото есть сишка хоть и выглядить маленьким языком (строк нет, встроенных средств работы с массивами нет, управления динамической памяти нет и прочее и прочее), но в ней хватает тех областей, которые ты не будешь знать, тк это не будет покрывать круг твоих практических испльзований
>>846403system("pause");В конце пропиши
>>846403Sleep(10000);
>>846404Работаю разрабом электронных девайсов, кодю на сях контроллеры и под венду в среде лабвиндовс, для моих потребностей хватает с лихвой. Мой коллега тоже сишник, недавно вкатился в плюсы без проблем.
>>846573>кодю на сях контроллерыАноны, посоветуйте книгу по архитектуре и программированию ARM с акцентом на практику.
Когда используете винапи в программах на си, какой стиль именования переменных и функций используете? Такой же, как принято в winapi, или snake_case?
Эта вкусовщина в именовании всякий раз доставляет мне баттхерт.
>>846584Динамически менять стиль в зависимости от либы? Да ты охуел. Будь последователен: или пиши всю программу, как майкрософт заповедал, или используй свой стиль везде. Я вот, например, camelсase предпочитаю даже в сишечке (fooBar для переменных и функций, FooBar для типов), брат жив, на хейтеров похуй.
>>846589>Будь последователен: или пиши всю программу, как майкрософт заповедалТогда не получится определять функции с именами типа ReadFile. Использование read_file стиля здесь бы выручило.
>>846595Иметь ReadFile и read_file в одной программе? Да ну его нахуй. Если это какой-то конкретный тип файлов, я бы отразил это в имени - ReadConfigurationFile, например, а если это просто обертка, то это тоже стоит как-то показать. Ты же почему-то ее пишешь вместо вызова ReadFile, вот и называй соответственно.
>>846576Вообще не читал книжек, всë по примерам и руководствам различным. На сайтах производителей контроллеров обычно тысячи примеров, как правило привязанных к периферии. Компилишь пример, проверяешь работоспособность на железе, а дальше уже смотришь что из него взять в свой проект, что доработать.
Посоны, посоны, снова та студентота со всё той же подгорающей лабой и кое-чем ещёУсловие: в тексте правильно написанной программы на С выделить заголовки функций.Пикрил - результат работы. Очевидно, что 4-ая непустая строка не обрабатывается (а очень бы хотелось)Прога: http://pastebin.com/nEdEyQC7Возможно, более важную роль должны играть круглые скобки, но я просто вот ни..чего не могу заделать :(Мб кто поможетМожно разбивать строку на части от ; до ; и проверять эти части.. Но так у меня получается правильно только для 4-й строки пикрила, а всё прочее через кое-что подгорающее
>>846642Какой курс-то? Препод тебя затроллил скорее всего. В таком виде это нереализуемо (алсо, >>844171). Да даже просто для такого вот:int foo= 1;и int foo(void);тебе придется заглядывать вперед, и ты никак подсветку на лету не сделаешь.
>>846589>Я вот, например, camelсase предпочитаю даже в сишечке (fooBar для переменных и функций, FooBar для типов), брат жив, на хейтеров похуй.Бро, я ещё и отступы по Оллману делаю, все смеются и показывают пальцем.
>>846648Курс 2, Си 2-й семестр идёт.Я был бы рад, будь это троллинг, но на то не похоже. Как мне кажется, ему надо, чтобы были рассмотрены случаи, что у меня на пике, но как бы не то чтобы у меня и они все получились
>>846651Ну попробуй немного другой алгоритм (он тоже кривой, но словит чуть больше функций). Тебе надо прочитать весь файл, удалить (или скипать по ходу дела, что сложнее) все комментарии и директивы препроцессора. Дальше идешь по тексту в поисках открывающих top-level { и ; top-level - значит, что ты увеличиваешь счетчик фигурных скобок всякий раз, когда найдешь открывающую, и уменьшаешь, когда найдешь закрывающую, и тебя интересуют { и ; только когда этот счетчик равен 0. Варианты развития событий:1) Ты встретил по пути =, это инициализированная глобальная переменная, ищешь точку с запятой. Если этот вариант не проверять, сломаешься на int foo = (1); .2) Ты встретил { - это либо struct/union/typedef/массив/итд, либо это начало функции, узнаешь это по наличию ) прямо перед {. Пробелы и переводы строк, разумеется, игнорируешь. Затем ищешь закрывающую } этой функции.3) И, наконец, ты встретил ; - это какая-то декларация, проверяешь по наличию ) перед ; . Вот как-то так.Как это сломать: атрибуты гцц, old-style (K&R) functions, static_assert, на программах с синтаксическими ошибками тоже сломается, но в целом, наверное, должно работать. Хотя хуй знает, я не пробовал.Естественно, выводить очередной блок текста ты начинаешь, когда встретил ; у декларации (1, 3) или } у функции (2).
>>846663Алсо, вариации вот такого void foo(char a[1+(sizeof((int){1})==2)]); сломают и условие про =, и условие про ){, а код, между тем, вполне валидный.
>>846404>И, собственно, вопрос: насколько чистый С востребован сейчасПлатиновый вопрос. Пока будут существовать UNIX-like системы, этот язык будет востребован. Но работу на нём (особенно в рашке) ты в лучшем случае найдёшь только для эмбедеда.
>>846665>(int){1}Что означает эта конструкция? В первый раз вижу.
Ну это бесполезно в приведенном примере, но вообще, это compound literal. Оно создает безымянный int равный 1. Слева тип, справа инициализаторы для него. Как если бы ты сделал:int foo = {1};но только без имени. Для int оно нахуй не нужно, но, например, у тебя есть функция, принимающая указатель на вектор, и ты можешь не создавать лишнюю переменую явно, а сделать:result = some_function(&(Vector) { 1.0f, 0.0f, 0.0f });Это C99, если что.
>>847184массив, который приводится к int, видимо
Привет, программачик, я ньюфаг в C. Поясни, можно ли сделать в нём адекватный гуй? С чего начать? Я спермоблядь, на линукс нет места в данный момент. Сейчас я поставил Code::Blocks IDE и вроде как запустил свой первый хэлловорлд. Как мне высрать окошко, формочку, кнопочку? Какую библиотеку для этого посоветуешь использовать?
>>847203Из худо-бедно кроссплатформенных гуев есть только GTK. Но я бы порекомендовал сделать либу, а морду нарисовать на крестах с Qt.
>>847206Ну в крайнем случае, ты можешь нарисовать интерфейс на Windows API, а чтобы не ебаться с созданием окошечек вручную и прочиими циклами обработки сообщений, используй dialog manager (загугли DialogBoxParam), тогда диалоги сможешь рисовать в любом редакторе ресурсов.
>>847206Я знаю, C++ для этого куда больше подходит, но я бы всё же хотел именно на сишечке. Что такое GTK? Как его установить? Сам я пытался, но ничего не вышло.
>>847203Первый свой гуй под винду писал в среде лабвиндовс. Правда это весьма специфичная среда, для разработки виртуальных приборов.
>>847208>Сам я пытался, но ничего не вышло.тебе здесь не место. пиздуй к плюсанам и юзай божественеый кьют для гуя
>>847223>лабвиндовсэто еще что за параша? винапи?
>>847223поясни за нее, подойдет ли она для прикладных задач?
>>847208>Как его установить?apt-get install libgtk-3-dev
>>847226>>847303Визуальный конструктор со своей библиотекой контролов типа показометров, индикаторов, тумблеров, кнопок. Есть также текстовые элементы, таблицы, графики, обработка данных, сеть, многопоточность, еще куча всего. Можно и для прикладных задач использовать, почему бы и нет. Винапи поддерживается, но для своих задач я только Sleep использовал из винапи, больше не потребовалось. Куча примеров есть в дистре и на сайте.
>>847367Есть бесплатная версия? Или только пиратить?
>>847358Сказано ведь, я спермоблядь. Зачем мне твои прыщи?
>>847527В Windows 10 теперь есть apt-get. В младших версиях Windows есть MSYS2 и pacman.
>xor ebx, ebx // clear ebx>mov ebx, fs:[ 0x30 ]Для чего здесь сначала обнулили регистр, а потом записали в него адрес PEB? Зачем тратить байты на обнуление, когда и так адрес займет весь регистр?
>>847531> Для чего здесь сначала обнулили регистрНи для чего. Скорее всего, код написан вручную, и человек НИРАЗБИРАЕТСЯ.
>>847203mfc (в vs 2015 community бесплатен)связка alt + wtlbuilder c++
>>847556также на крестах можно писать winrt приложения, gui включительно, доступные с windows 8также на крестах можно писать UWP приложения, доступные с windows 10
>>847556>>847562> также на крестахТы тредом ошибся. Алсо, если уж выбирать кресты, то сразу кутэ.> WinRT, UWPНинужно. Это такой сервелат, который в отличие от сервелата еще не стух.
Пишу такой кодес, гайз: https://ideone.com/HqB6WCЧто почитать о деклараторе __declspec(naked) и для чего он используется? Я его заюзал просто потому, что нужна была функциональная обертка для моего ассемблера. Но возникла проблема при компиляции FindGetProcAddr: error #2202: 'auto' not allowed in function with __declspec(naked)Почему так? Как использовать результат вызова GetKernel32 внутри другой naked-функции?
>>847639Ты сказал, что тебе не нужно создавать стековый фрейм. Естественно, что теперь компилятор не может выделить KERNELBASE на стеке. Можешь сам выделить, можешь KERNELBASE в регистре хранить. Можешь выкинуть нахуй naked.
Что за залупа здесь происходит? Как прочитать выражение в левой части присваивания? Зачем там &?https://ideone.com/IFtNF8
>>847744> Что за залупа здесь происходит?Нет такого синтаксиса в си. Видимо, кто-то попытался объявить указатель на функцию, но не смог.
>>847441Пиратка онли, на руборде есть активатор.
Сап, первый курс не знающий нихуя язык и его возможности, а лабы делать уже надо, много. С целью экономии времени и более легкого вкатывания в язык, нужен анон, который сможет дописать бегинер уровня лабу в 80 строк и объяснить мне ее в скупе за денежное вознаграждение , либо прямо со мной вместе ее в скупе сделатьhttp://ipm.ifmo.ru/wp-content/uploads/2016/09/pb-s1-lab2.pdf - лаба, вариант 12Вот то что успел накатать сам http://pastebin.com/K3dQy9QMSkype: atomraspad
>>848203Не совсем (совсем не) по си, но все равно репостну сюда. Может кто захочет пояснить.
Как можно получить счет как в виндовом калькуляторе?Т.е когда я ввожу 480 / 1024 я получаю ноль int foo, bar foo = bar/baz А в калькуляторе я получаю 0.46875, можно ли получить такой ответ если не делать foo = bar/bazfoo2 = bar%bazprintf("%d%d",foo,foo2) ?
>>848378Ему дали FPU, но нет, он хочет ебаться с интами.
>>848381И ведь блять логично.
>>848378Тыкаешь последовательно: 4 8 0 / 1 0 2 4 | 0
Поцчему все туториалы для SDL писаны для плюсов, что за несправидлёж
>>848823Разница минимальна. Читай плюсовые, а если что-то не сможешь переделать на Си - показывай, мы поможем.
У меня есть такой код, который я скопипастил из своего проекта на C++ и переписываю на си: http://pastebin.com/BZ9yE3mmПочему-то ничего не компилируется. Выдаются ебанутые ошибки: error #2001: Syntax error: expected ')' but found 'msg'. Extraneous old-style parameter list.Syntax error: expected ';' but found ')'. Syntax error: expected ')' but found 'msg'Extraneous old-style parameter listЧто я делаю не так?
>>848905> LPTSTRНе вижу, чтобы ты тип определял. Ты забыл #include <windows.h>?
>>848911>Ты забыл #include <windows.h>Блять, меня переклинило.
Почему Крис Касперски хуесосил линуксы и двачевал фри бздю? Это правда, что бздя более стабильна, чем линукс? Как сейчас дела обстоят?
>>848979Может быть, ты лучше у него спросишь? Или он уже и на кывте не появляется?
>>848979У него и спроси, если он там еще в лепешку не разбился со своими парашютными делами
сисюны, решительно пояснили за архитектуру. как трушней, чтобы функция возвращала значения установив код ошибки в ссылочном параметре или наоборот, возвращать код ошибки инициализировав значение в ссылочном параметре?
>>849187Честно говоря, мне представляется только одна ситуация, когда использование первого варианта обосновано. Это когда любое возвращаемое функцией значение может быть интерпретировано как корректное. Но даже в этом случае я не стал бы для кода ошибки заводить отдельный ссылочный параметр, т.к. если функций, потенциально завершающихся с ошибкой, будет много, то это что, каждой такой параметр заводить? И тогда в каждой обособленной части программы должна быть своя переменная для хранения кода ошибки? Или что, делать несколько способов обработки ошибок в одной програме? Ну это 100% отсос и лишняя путаница.Так что советую второй вариант.Либо же возвращать значние, а в случае ошибки возвращать некорректное значение.Например, если программа возвращает указатель, то в случае ошибки возвращай NULL.Если функция при нормальном завершении возвращает положительные числа, то в случае ошибки пускай возвращает отрицательные.Если по возвращаемому значению нельзя сказать, произошла ошибка или нет, то код/флаг ошибки можно устанавливать в глобальной переменной или определеить целую глобальную структуру, хранящую состояние программы/модуля и несколько полей внутри нее для хранения кодов ошибок от разных источников. Доступ к полям такой структуры, разумеется, лучше обеспечить через процедуры.
>>849195>каждой такой параметр заводить?да. но не каждая функция будет его использовать. зато все API будет выглядеть охуено.void fun1(int ★param, int ★err);void fun2(int ★param1, int ★param2, int ★err);void fun3(int ★param1, int ★param2, int ★rval, int ★err);void fun3(int ★param1, int ★param2, int ★rval1, int ★rval2, int ★err);
>>849206Говно.int func(int bar, int •rval);if (!func(1488, &result)) {pizdec();exit(1);}
>>849206> зато все API будет выглядеть охуеноЭто охуенное API? Я должен в каждую функцию передавать указатель под код ошибки, даже когда мне на него насрать? Притом, мне вообще в большинстве случаев нужно знать, произошла ли ошибка, а какая конкретно - интересно только при взаимодействии с ОС. Если тебе так хочется выдавать вменяемую информацию об ошибках - сделай явный или неявный (per-thread) контекст. В остальных случаях return false/return NULL/return -error/return SIZE_MAX будет вполне достаточно.
Суп, хеккеры. Где можно почитать о том, что такое extern "C" и для чего это нужно? Как я понимаю, эта штука позволяет объявлять функции так, чтобы их имена были без декораторов.
>>849401Именно extern "C" в си нету, это плюсовая хуитка, для обратной совместимости. Просто extern – это о линковке и у него дохуя предназначений, открой гугл.
>>849406> у него дохуя предназначенийУ extern в Си одно предназначение - явно указать, что декларация относится к публичному (внешнему) символу.
>>849410Одно предназначение не всегда означает применения для одной цели.
>>849328> передавать указатель под код ошибки, даже когда мне на него насратьможешь пихать 0, если он не используется. хотя мне такой подход тоже уже разанравился. ща еще пару десятков функций накидаю и буду посмотреть, может действитьльно хуйня выйдет.
>>849328и да контекст есть, но он не везде используется, такая же хуйня как с еррорами, только в профиль.а вот если везде пихать контекст, в нем ставить ошибку и все функции возвращают как бул? хм...
>>849428> контекст есть, но он не везде используется> если везде пихать контекстЗачем везде что-то пихать. Я ведь писал уже: сделай его глобально доступным через процедуры (см. пикрел, например).
>>849458У такого подхода есть недостаток - у тебя может быть только один инстанс (или, если контекст thread_local - один инстанс на поток). Для твоего примера это вполне нормально, но представь, что у тебя не приложение, а либа, которая как-то обрабатывает данные и выделяет память по необходимости. Чаще всего, у тебя будет какой-то стейт, и вот тут-то логично хранить в нем и код ошибки тоже. Стейт придется пихать в каждую функцию или делать его текущим, как контексты в OpenGL/OpenAL.Алсо, никогда не начинай идентификаторы с подчеркиваний. И других не приучай к плохому.
>>849468Ну ясное дело, что тут универсального решения нет. Надо учитывать многие вещи. Для этого и нужна стадия проектирования.>никогда не начинай идентификаторы с подчеркиванийА где у меня там такое?
>>849477> А где у меня там такое?__APPCONTEXT_H__ же. Да, вероятность проблем в данном случае околонулевая, но лучше раз и навсегда отучиться. И с одного подчеркивания тоже нельзя, если, конечно, ты не пилишь свой компилятор.
>>849483Общепринятая практика же при объявлении хедеров.
>>847940Нахуй ты в итмо пошёл, если сам кодить не можешь?
>>849491двачую, хедеры только так и объявляют
>>849609Объявляют. И это еще раз иллюстрирует, как в мире линуксов все срать хотели на стандарты.
>>849468>как контексты в OpenGL/OpenAL.поясни по быстрому, чем их подход отличается от других подходов?
>>849612? с подчеркиваний начинаются еще приватные функции, ничего в этом нет плохого.
>>849613Там есть глобальный скрытый активный контекст, ты можешь в него писать и читать соответствующими функциями (glClearColor, например), только в него, и только через API, но не напрямую. Ты можешь создать сколько угодно других контектстов и делать их активными по необходимости. Так как основной юзкейс таких библиотек - один контекст, это позволяет упростить код, избавившись от передачи контекста в каждую функцию, но и не проебать возможность иметь несколько контекстов (неосновной юзкейс), пусть и ценой некоторого неудобства.>>849618А вот стандарт сишечки говорит, что с __имена и _Имена зарезервированы языком. Приватные переменные и функции с одного подчеркивания начинать можно, если они static (не торчат наружу).
>>849629>А вот стандарт сишечки говорит, что с __имена и _Имена зарезервированы языком. Приватные переменные и функции с одного подчеркивания начинать можно, если они static (не торчат наружу).вся это хуйня от приплюснутых блядей, всервано их конпилятор символ '_' приставляет.
>>849638Нет, эта хуйня, чтобы в новом стандарте могли беспрепятственно запилить _Static_assert, а твой код из-за этого не сломался. И, что важнее, чтобы не сломался код тысяч пользователей твоей либы. И чтобы разработчики компилятора могли без помех для тебя объявлять в хедерах стандартной библиотеки всякие _printf_locked и прочие детали реализации.
>>849642>_Static_assert, _printf_lockedя вод даже не знаю что это такое, а тем более подстраиваться под эту хуету нет никакого желания.
>>849612> в мире линуксов все срать хотели на стандартыБоюсь, что в данном случае на стандарт насрать абсолютно всем.На пике хедеры из состава MS Developer Studio, Solaris, OpenBSD и IRIX. Таким образом объявлять хедеры учит даже Таненбаум в своей книжке по разработке ОС.
>>849662Окей, убедил.
>>849672Хотя с другой стороны, я тоже не понимаю, почему бы не объявлять хедеры просто заглавными буквами.
>>849676>почему бы не объявлять хедеры просто заглавными буквамикто тебе мешает?
>>849685У нас тут был околофилософский срач о том, как правильно, а не кто мешает.
>>849685Никто, разумеется. Просто как-то неуютно становится, когда отходишь от общепринятой практики. Все таки, не язык для стандарта, а стандарт для языка.
>>849689> Все таки, не язык для стандарта, а стандарт для языка.твоему стандарту пять лет в обед и его еще будут переписывать и переписывать если не забьют, а соглашения пошли когда и с99 небыло.
Зачем меня студентоту учат хардкорному байтоебству? У вас было такое? Я понимаю реальные задачки - маски, сдвиги и проч, реально нужно для ембедщиков. Но есть абстрактное говно чтобы заебаться. Например проверить можно ли сложить два целых числа без переполнения. Нельзя никаких циклов и операторов вообще (if && || < > и тд) только битовые | & ^ и тп. Это на интервью что ли такие вопросы задают? Ответы легко гуглятся но там какая то тарабарщина из ^ ~() & () , просто пиздец.
>>850092> там какая то тарабарщинаВот чтобы это не было для тебя тарабарщиной, чтобы ты понимал, а не выучивал шаблонные действия, тебе и дают странные задачки. Хотя стоило бы потратить время на подбор реальной задачи, но нашим преподам обычно лень.
>>850092а ты думал погромисты с чем ебутся, с пездами чтоли?
>>850159Программисты ебуться с реальными задачами, а с не битоебством без задач.
>>850092Учи все до чего дотянешься не ной, во-первых мозги развивает, во-вторых однажды таки понадобится и будешь хоть иметь предствавление что есть такая штука.
>>850210Вот смотрите, нужно написать функцию которая сравнивает два числа и возвращает 0 или 1. То есть вместо простого if (a > b) нужно как-то так:return !!(((( ~(x ^ y) ) & (y + ~x + 1) ) | ( y & ( x ^ y ) ) ) >> 31 ); Сириусли? Реальный синьор программер сможет такое написать? Оно нужно ему? Как это развивает? Не ною просто спрашиваю. Анон ты бы устроился на работу, где бы тебя заставили искать баг в таком коде?
>>850217нытик ебаный, на тебе риал пример, есть сорта вафель 1-325, и есть группы к которым эти вафли относятся, например малиновые: 1, 7, 9, 20, 55, 85, 90, 253...321. на вход поступает вафля и нужно в риалтайме определить входит ли она в группу. вот здесь и начинается битоебство с масками и сдвигом, чтобы было быстро и понятно, а ифы и свитчи в этом случае для таких вот плачущих пидоров как ты.
>>850250Надуманный пример. Как думаешь, во сколько инструкций развернется битоебля и что будет быстрее - битоебля или один лукап в таблице?В общем-то, большинство обоснованных случаев битоебли перечислено здесь: https://graphics.stanford.edu/~seander/bithacks.html А задачки, как раз, чтобы понимать, а не гуглить и копировать.
>>850253>битоебля или один лукап в таблице?а вот здесь ты ошибаешься, битоебство дает пасасать свитчу, я тут даже примеры выкладывал, но всем как всегда.
>>850258Помню. Так и знал, что это ты.
>>850259и к свичу у меня какоето оивращение, наверное перл сказывается.
>>850250Покаже пример такого ирл кода. Ты просто пиздишь мне. Зачем? Даже в ассемблере есть условные операторы.
>>850265ищи в архиваче
>>850250Что такое "малиновые" - это сорт или группа? Ничего не понятно из условия, что это за цифры.
>>837592 (OP)Ананасы, посоветуйте какие-нибудь анализаторы использования динамической памяти, чтобы получить более-менее интуитивно понятные результаты в виде текста и, может быть, графики.таблицы. Я, конечно, могу LD_PRELOADнуть какой-то свой хук для malloc и сыпать дебажной инфой, но может быть есть какие-то элегантные решения?
Привет, антошки. Допустим есть на локальном компе прога которая обменивается пакетами с сервером. Каким образом можно отловить их и посмотреть содержимое?
>>850421valgrind? http://valgrind.org/docs/manual/ms-manual.html>>850454Если тебе нужен софт Wireshark, то тебе в /s/. Если ты сам написать хочешь - гугли pcap для начала.
>>850458А если зашифрована информация, как с не работать?
>>850464Ты, сука, пентагон собрался ломать?>>850458>http://valgrind.org/docs/manual/ms-manual.htmlОтлично, спасибо
>>850473Ах да, >А если зашифрована информация, как с не работать?Если что-нибудь вроде AES-128 и выше - никак не работать, только соснуть хуйца.
>>850464Если у тебя ключ есть, можешь плагин написать, чтобы парсило. Если нет - отлаживай софт и вытаскивай из него ключ, но если у софта ассиметричное шифрование, и его писали не дебилы, то это тебе ничего не даст.
>>850464Реверси прогу, извлекай пакеты из памяти до их шифрования
Котаны, можно ли в макросах работать с подстановкой?Например, если второй аргумент макроса не ноль, вызвать выполнить подстановку одной функции, иначе другой:#define fun1(a, b) b > 1 ? calla(a) : callb(a)
>>851719Почему бы и нет? Или выражение можно посчитать на этапе компиляции, то компилятор с любой минимальной оптимизацией ненужную ветку выкинет. Только не забывай скобочки расставлять, а то 2 * func(1, 2) может посчитаться не так, как ты предполагаешь.
>>851726если выражение можно посчитать
>>851726не, мне нужно чтобы макрос разворачивался на этапе препроцессинга в зависимости от условия
>>851732типа условный макрос
>>851732Опиши, как ты это использовать собрался. Если у тебя константное выражение, то #if expr никто не отменял.
>>851738смотри, есть функция для получения значения из хеша:hash_get(hash, key, len)третий параметр длина строки. в коде, мне нужно иметь доступ как по литеральным строкам, так и по динамическим:hash_get(hash, "name", sizeof("name"))hash_get(hash, str, l)так вот, хочу макрос где если третий параметр равен нулю, то длина будет вычисляться как sizeof(key) иначе использовать переданное значение.
>>851769з.ы. или макрос с переменными количествами аргументов, типа перегруженный
>>851772На _Generic из C11 посмотри. Или сделай:#define myhash_(a, b, c, ...) myhash(a, b, c)#define myhash(a, ...) hash_(a, __VA_ARGS__, sizeof(c)-1,)myhash(hash, "name");myhash(hash, ptr, strlen(ptr));Но этот подход не детектит ошибки типа:myhash(hash, ptr); // Развернется в myhash(hash, ptr, sizeof(ptr) - 1).
>>851785хм.. variadic macros? как то через жопу.. пожалую сделаю два разных макроса.
>>851812> как то через жопуЛол, ты просто не видел, наверное, как препроцессор по-настоящему ебут. Я вот могу тебе сделать то, что ты просил (>>851769 с проверкой на литеральный 0), и вот уж это точно будет через жопу.
Анон, есть такой код:http://pastebin.com/QR3Q7XXmhttp://pastebin.com/qUwxGFmhИз-за HHOOK h = 0; я получаю ошибки:error C4430: missing type specifier - int assumed. Note: C++ does not support default-interror C2146: syntax error: missing ';' before identifier 'h'warning C4081: expected 'newline'; found ';'При этом еще и на выражение HHOOK hHook = NULL; компилятор ругается: не может найти определение NULL. В чем тут проблема?
>>851838#include <windows.h>
Аноны, подскажите есть [code]int revolution = 20;float Tdr = 1.12345;float tm = int * Tdr;printf("T\t%f", tm);[/code]Получаю хуйню округленную до сотых! Какого хуя? Собственно вопросы1. Если умножаю int на float, результать какого типа получаю в итоге?2. Почему такое дикое округление?3. Физический смысл, умножаю натуральное число на вещественное, хочу получить вещественное число, как это сделать на си?4. Где эти моменты описаны в стандарте?
>>851861> Получаю хуйню округленную до сотых!Где? http://ideone.com/L2KZNL1. Указывай нужную точность. Например, %.8f.3. Просто умножить эти два числа, компилятор сам сконвертирует натуральное до вещественного.4. С11 (в шапке), 6.3.1.8, Usual arithmetic conversions; 7.21.6.1, The fprintf function.
>>851825>как препроцессор по-настоящему ебут.нет не видел, это наверное мамкины хипстеры, нормальные люди делают без выебонов>Я вот могу тебе сделать то, сделай
>>851939Открой исходники любого сишного проекта (например исходники питона, за них ручаюсь), папкин нехипстер. Будешь очень удивлён насколько они вымазаны макросами с ног до головы и как ими долбятся во все щели.
>>851942>питонатак это изначально пидерская параша, еще бы опенэсэсл посоветовал. открой исходники майскюэл и посмотри как нужно писать.
>>851939К сожалению, Си -это тебе не кресты.Неймспейсов и енумов там нет. И дохуя чего нет, и шаблонов - не завезли.Поэтому - макросы там рулят.Ненавижу эту хуету.
gcc main.c -lpthread -ldl -lstd -lpsockets -ldmd -ltpd -lfcgi_i -o str_cgi_server -Wall -Wl,rpath=/usr/lib Как вы эту херню терпите только..
>>851964ну вот шаблонов тока нинадо это же пиздец в кубе.
>>851967через мэйкфайл
>>851968Хорошо все в меру.Это хороший компромис между строгой статической типизацией и обобщенным программированием.Не пистон, конечно, но в разы быстрее, зато.И в грамотных руках не так уж и сильно увеличивает время компиляции...
>>851969Ты еще АВТОТУЛЗ предложи.Как только можно разродить было это...Посоны выбирают СиМейк.
>>851970>обобщенным программированием.это практически шаг к ооп, нахуй, нахуй.
>>851971мне мэйка хватает и всякую отдельную поеботу ставить нинуно
>>851973Нет, это шаг к динамической типизации.К ООП оно отношения не имеет.Шаблоны функций были бы полезны и в чистых Си, тем более с ограничением на их перегрузку,которая однако - синтаксический сахар, опять таки.
>>851974Ты свыше тысячи строчек не писал, поди.Хотя, да, можно всё делать на мейках, но проебать что-то гораздо проще.СиМейк более нагладен.Вот что действительно говно - это сконс всякий.
>>851975>К ООП оно отношения не имеет.о до, вначале обобщишь до структур, потом подумаешь чому бы структуры сами себя не приводили к типам
>>851976тысячи строчек мэйкфайла? ты ебанутый?
>>851979Нет, когда у тебя проект из 10 подкпроектов с подпроектами состоит, и в каждом подпроекте таргет - shared object, то становится крайне геморрой мейк писать.Еще проблемы с переносимостью и зависимостями.У тебя в мейке нет нормального способа определить целевую платформу или компилятор системы.
>>851939> сделайНаслаждайся: http://ideone.com/4seDQTУ первого варианта есть очевидные проблемы - оно матчит именно литерал, т.е., если третьим аргументом 0+0 передать, то будет бида-бида. И, что гораздо хуевее, оно в целом не работает, если третий аргумент начинается не с идентификатора.>>851971> СимейкХуета с синтаксисом похуже сишного препроцессора, с прибитыми гвоздями путями и ключами компилятора, которую не понимают даже ее разработчики. Шаг вправо, шаг влево от того, что оно считает нормальным? Добро пожаловать в ад, снова. Нет макросов для твоего компилятора? У тебя персональный ад. Кросскомпиляция? Нутыпонел.
Есть тут кто?
>>852025Да, чего тебе?
>>852026Можешь хелпануть кое с чем, тут вообще треш
Можете попробовать объяснить далбаёбу? Не могу понять работу cin.clear(); хотя и прочитал уже много где чего. К примеру почему при неправильном вводе (вводе букв в int переменную) я попадаю в бесконечный цикл?int main() { int i = 0; int j = 0; while (1) { i++; cin >> j; if (cin.fail()) { cout << "Fail!" << endl; cin.clear(); } cout << "Integer " << i << ": " << j << endl; }}
>>852033тут ещё и табуляция прописывается, наверное я действительно далбаёб.
>>851980Специально для тебя придумали autotools.
>>852036В глаза ебусь.
>>852033 -> >>840964 (OP)
>>852000насладился. в первом случае variadic macros со всеми вытекающими, во втором не соответствует условию, т.е. нужно разворачивание на этапе препроцессинга. два однострочных макроса с различными именами - вин. хотя очень странно, почему препроцессор не имеет своего полноценного языка, хотябы типа мэйка, с циклами условиями и прочим.
>>851838Бамп.
>>852108Навесь любой внешний препроцессор.Я вон на руби генерирую код (в руби удобная подстановка в строках)
>>851952Я специально для тебя прошёлся поиском по кучке ведущих сишных ПИДАРСКИХ проектов, итого вымазано в макросах с ног до головы:- OpenSSL;- Его БИЖАПАШНЫЙ форк из которого по заверениям авторов вырезано 2/3 всего - LibreSSL (макросов там реальзо заметно меньше, но всё равно дохуени);- Cpython;- Ruby;- Erlang;- Perl (лол);- GCC (там от плюсов только перегрузка операторов и отсутствие большинства shadow cast-ов, лол, хз нахуя они вообще с си слезали официально);- Linux (да, их там дохуя, хотя учитывая кол-во драйверов, хуиток вроде perf и пр. в одной репе нельзя сказать что всё ядро ими измазано, но всё на удивление легко читаемо - и ничего сложнее коротких побитовых смещений из 2-3 действий, вот как действительно надо писать);- jemalloc;- gdb;- а дальше заебался, алсо, во многих кроме того ещё сторонние кодогенераторы/скрипты были.После этого ты приводишь аргумент о непидорстве mysql - самой обоссаной бд особенно в 2к16 когда настолько уёбищно масшабируемая бд даже вебмартышкам не упала нахуй, которую любят и не поносят только пхпшники, лол. Про долбоебизм людей, которые полностью пишут бд на си, при том что 95% времени своей работы она записывает и считывает что-то с жд: это, конешно, кек. Алсо, пхп кстати тоже так же писался чисто и без макросов, что как бы намекает.
>>852140ой бля, я обосрался, не майэскюэл, а эскюэлайт. ну во первых, тут разговор не в количестве макросов, макросы это заебись, а в их сложности. второе, в таких проектах много опционального и платформозависимого кода разруливаемого препроцессором.
>>852149>эскюэлайтЛол.>второе, в таких проектах много опционального и платформозависимого кода разруливаемого препроцессором.Всякую хуиту с условной компиляцией я и не учитывал если что.
>>852151>Лолнет, погугли его часто ставят как пример хорошего кода, это можно сказать мем.так вот, здесь вопрос в том как ебут макросы, ты там много встречал наподобии >>852000, или они все довольно просты? в нормальных проектах, они сходу читаемы и никакого мозгоебства с ними нет.
>>852140А о чём вообще спор? В любом сишном проекте макросов туева хуча. Сложно найти проект, где бы их не было>хуиток вроде perfЭто ты хуитка. perf отличная тулза.
Устрою кстати на секундочку хит парад трёхэтажных макросов филиал говнокодру, с примерами кода:1 место - libjit. Присуждается премия "Самые вложенные макросы в макросах".:#define x86_mov_memindex_imm(inst,basereg,disp,indexreg,shift,imm,size) \ do { \ if ((size) == 1) { \ (inst)++ = (unsigned char)0xc6; \ x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \ x86_imm_emit8 ((inst), (imm)); \ } else if ((size) == 2) { \ (inst)++ = (unsigned char)0x66; \ (inst)++ = (unsigned char)0xc7; \ x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \ x86_imm_emit16 ((inst), (imm)); \ } else { \ (inst)++ = (unsigned char)0xc7; \ x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \ x86_imm_emit32 ((inst), (imm)); \ } \} while (0)2 место - Perl. Присуждаются премии "самое нечитабельное говнокодище" и "лучшее наименование полей":# define GvNAME_HEK(gv) \ (({ GV const _gvname_hek = (GV *) (gv); \ assert(isGV_with_GP(_gvname_hek)); \ assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \ assert(!SvVALID(_gvname_hek)); \ &(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \}))3 место - GCC. Присуждаются премии "самые длинные макросы" и "самое большое число копипасты":#define DEF_PRIMITIVE_TYPE(ENUM, VALUE) \ case ENUM: return make_primitive_type (ENUM);#define DEF_FUNCTION_TYPE_0(ENUM, RETURN) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 0);#define DEF_FUNCTION_TYPE_1(ENUM, RETURN, ARG1) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 1, ARG1);#define DEF_FUNCTION_TYPE_2(ENUM, RETURN, ARG1, ARG2) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 2, ARG1, ARG2);#define DEF_FUNCTION_TYPE_3(ENUM, RETURN, ARG1, ARG2, ARG3) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 3, ARG1, ARG2, ARG3);#define DEF_FUNCTION_TYPE_4(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 4, ARG1, ARG2, ARG3, \ ARG4);#define DEF_FUNCTION_TYPE_5(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 5, ARG1, ARG2, ARG3, \ ARG4, ARG5);#define DEF_FUNCTION_TYPE_6(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 6, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6);#define DEF_FUNCTION_TYPE_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6, ARG7) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 7, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6, ARG7);#define DEF_FUNCTION_TYPE_8(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6, ARG7, ARG8) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 8, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6, ARG7, ARG8);#define DEF_FUNCTION_TYPE_9(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6, ARG7, ARG8, ARG9) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 9, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6, ARG7, ARG8, ARG9);#define DEF_FUNCTION_TYPE_10(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6, ARG7, ARG8, ARG9, ARG10) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 10, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, \ ARG10);#define DEF_FUNCTION_TYPE_11(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6, ARG7, ARG8, ARG9, ARG10, ARG11) \ case ENUM: return make_fn_type (ENUM, RETURN, 0, 11, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, \ ARG10, ARG11);#define DEF_FUNCTION_TYPE_VAR_0(ENUM, RETURN) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 0);#define DEF_FUNCTION_TYPE_VAR_1(ENUM, RETURN, ARG1) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 1, ARG1);#define DEF_FUNCTION_TYPE_VAR_2(ENUM, RETURN, ARG1, ARG2) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 2, ARG1, ARG2);#define DEF_FUNCTION_TYPE_VAR_3(ENUM, RETURN, ARG1, ARG2, ARG3) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 3, ARG1, ARG2, ARG3);#define DEF_FUNCTION_TYPE_VAR_4(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 4, ARG1, ARG2, ARG3, \ ARG4);#define DEF_FUNCTION_TYPE_VAR_5(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 5, ARG1, ARG2, ARG3, \ ARG4, ARG5);#define DEF_FUNCTION_TYPE_VAR_6(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 6, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6);#define DEF_FUNCTION_TYPE_VAR_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \ ARG6, ARG7) \ case ENUM: return make_fn_type (ENUM, RETURN, 1, 7, ARG1, ARG2, ARG3, \ ARG4, ARG5, ARG6, ARG7);#define DEF_POINTER_TYPE(ENUM, TYPE) \case ENUM: return make_ptr_type (ENUM, TYPE);
>>852140>mysql - самой обоссаной бд >особенно в 2к16 когда настолько уёбищно масшабируемая бд даже вебмартышкам не упала нахуйТакие категоричные заявления могут себе позволить только люди мало что понимающие в БД. Что собственно подтверждается>Про долбоебизм людей, которые полностью пишут бд на си, при том что 95% времени своей работы она записывает и считывает что-то с жд: это, конешно, кек.Видно студентика или человека который о БД знает понаслышке.мимокрокодил
>>852174>А о чём вообще спор? В любом сишном проекте макросов туева хуча. Сложно найти проект, где бы их не былоСпор о том, что тот госопдин спизданул что-то в стиле "макросами всё вымазывают только пидары".>Это ты хуитка. perf отличная тулза.Хуитка по кол-ву кода относительно всего кода в репе.>>852164>так вот, здесь вопрос в том как ебут макросыМальчик, ты не видел что такое "ебут макросы".>нет, погугли его часто ставят как пример хорошего кода, это можно сказать мем.Исходники гита тоже часто так называют. Тольк вот суть их простоты как и у ядра линукса - они сами по себе максимально простые, и десятиэтажными макросами срать там негде.>или они все довольно просты?Это как шаблоны в плюсах. Пока их мало - всё хорошо читается, когда разрастаются в вложенные 10 раз хуитки - получается write-only говно с магией.>>852177>пук
>>852179> "макросами всё вымазывают только пидары".ой не пизди, господин писал, что>нормальные люди делают без выебоновбез хитровыебанныз макррсов, капиш>>852175>2 место - Perl. Присуждаются премии "самое нечитабельное говнокодище" и "лучшее наименование полей":Здесь ты обосрался, Sv это скалярный вектор, ну и остальные буковки имеют смысл.
>>852179> ядра линукса >гитлол, этоже образец говнокодинга и непродуманной архитектуры в одном флаконе
>>852202Sv это как Gv, только Sv?Наименование-то может и осознанное, но выглядит как конченное говно из-за экономии на буквально паре символов, как и весь перл.>>852203Ну лан.
>>852202>без хитровыебанныз макррсов, капишУ господина "хитровыебанными" считаются генерик-макросы из си11, лол.
>>852204фигасе пару, я тоже такой подход с буквенным кодированием активно пользую, очень удобно.>>852206>из си11да
>>852204з.ы. и да, вот смотри как в перл кодируют http://perldoc.perl.org/perlapi.html#svtypeя считаю это охуенчик, главное незабыть документашку.
>>852208>фигасе паруДа, пару. Можно назвать хотя бы в стиле s_vec — на клавиатуру нужно нажать на 2 кнопки больше, зато читаемость несравнимо выше.>даБля, а я-то забыл что сижу в си треде с ретроградо-неосиляторами.>>852215>главное незабыть документашкВсегда помнить документацию чтобы знать что это за тип — это блять просто максимальное днище в мире стилей кодирование. Хорошо что перл умер.
>>852218ну давай, покажи не днище
>>852224AbstractSingletonProxyFactoryBean.
>>852229Двачую, кончил.>>852224Что угодно из того >>852140 списка кроме перла. Настолько нечитаемого стиля кода нигде блять нету.
>>852233> AbstractSingletonProxyFactoryBean.> Двачую, кончил.скажи мне, что ты угараешь, пожалуйста
>>852259Скажи мне, что ты не долбоёб и пытаешься меня потралить, а не на полом серьёзе не видишь тут сарказма, пожалуйста.
>>852108> variadic macros со всеми вытекающимиКакой variadic macros? Там три фиксированных аргумента - hash(a, b, c). Ты __VA_ARGS__ увидел и испугался? Там нам нем if реализован. Но там есть другие проблемы, и я о них уже сказал> нужно разворачивание на этапе препроцессингаВпервые слышу. Оно на этапе компиляции разворачивается, зачем тебе именно препроцессором?Алсо, да, я тоже хочу более мощный препроцессор в сишечке. Но, видимо, не в этой жизни.>>8521751 место норм код, не вижу никакой проблемы вообще, это идиома. Если платформ полторы, то можно inline/forceinline, если нужно C89, то приходится так.3 место должно быть на первом.
>>852265Если бы я это воспринял на полном серьёзе, я бы не уточнял. Но я рад, что всё не так с тобой плохо.
ребзя, после того, как я отредактировал текст, в консоле в конце иногда печатается пикрелейтед ( a n d l e r f g ШcXH). причем по разному, иногда просто _ h a n d l e r ШсХН, всякие квадратики, которых там быть не должно например. что за хуета?
>>852655Чем редактировал? Это линукс? Делал ли clear/reset? Что на самом деле записано в файле?
>>852660Забудь, проблема решена.
Котаны, как выбрать каждый второй элемент в массиве? Например дан такой массив - int arr[15] = {3,7,8,2,8,2,2,4,6,3,1,0,0,0,5};нужно что бы вывело только = 7,2,2,4,3,0,0
>>852687for (int i = 0; i < 15; i++) printf("%d\n", arr[++i]);
>>852689Так просто, спасибо
>>852689Ловкач Джэк
>>852689i += 2 чем не устроило?
>>852712слишком очевидно
В некоторых учебниках по си, пишут main() без int, а в других наоборот. Мой компилятор ругается если пишу без int. Как правильно?
>>852849clang ругается, а gcc нет.
>>852849>Как правильно?с инт
>>852849В последних двух стандартах неявный int запрещен. Поэтому правильно: int main(void) или вариант с аргументами.> clang ругается, а gcc нет.gcc -std=c11 file.c
>>852918>int main(void) вангую, что void конпилицо как main с нулевыми аргументами. иже есть сахарок
>>852946void в аргументах по историческим причинам. Раньше в декларациях функций не нужно было указывать типы аргументов. Чтобы отличить древние декларации с какими-то аргументами* от современных функций без аргументов, в сишечке в функциях без аргументов пишут void, а использующих пустые скобки всячески обоссывают за неспособность учиться.
>>852952вдруг поймал себя на мысли, что практически не встречал функций без аргументов в большинстве исходников
>>853248Нормальные программисты минимизируют число побочных эффектов, а функция без аргументов и есть один сплошной побочный эффект.
>>853248>не встречала они там есть
Аноны, решил написать JS обертку (node.js модуль) для C библиотеки http://wordnet.princeton.edu/wordnet/documentation/.Проблема в том, что я незнаю с чего начать, составьте для меня небольшой todo-лист, кто понимает.Вот даже уже готовый пример есть https://github.com/dariuszdziuk/wordnet, но мне нужно разобраться как это делается впринципе.
>>853793Вопрос не правильно поставил.Сейчас более менее вник. Суть API этого - обращение к дб. Т.е если я хочу использовать JavaScript, мне нужно просто переписать все функции на нем.Другой вопрос, не лучше ли будет написать скрип в JS, который будет запускать С программу (child process) и output из этого С скрипа передавать обратно (через pipe)?Т.е использовать С библиотеку все-таки.Это будет экономнее по времени, чем переписывать функции в JavaScript?По производительности?
ребят, есть способ посмотреть код стандартных функций? сейчас на обучение часто встречаю задачки из разряда "репродюс такуе то функцию", и иногда не понимаю до конца логику функции из мана (саму идею понял но потом встречаю пару исключений и появляются вопросы)
Ананасы я так понимаю на 32 битной системе указатель будет 32 бита, а на 64 битной 64 бита?
>>853934Да.
когда создаю типа свою библиотеку функций как хедеры подтянуть чтоб потом при компиляции мейна с этой библиотекой функции работали без прототипизации?
>>853934>>853924Таки нет. Хотя я не программист.Я не могу дать определение разрядности процессора, но могу привести примеры.1) Древний 8-разрядный 6502. АЛУ работает с 8-разрядными числами, адресное пространство 64КБ. Соответственно указатели 16-битные.2) x86. Адресное пространство ограничено системой команд до 64ГБ. Регистры общего назначения 32-разрядные. Указатели 32-битные. Но есть всякие SSE, в которых есть регистры с большей разрядностью.То есть разрядностью процессора нельзя назвать ни разрядность АЛУ, ни разрядность шины адреса. Может быть разрядность процессора это разрядность регистров общего назначения, но что называть регистром общего назначения?Так что по моему нельзя дать однозначное определение.
>>854108> x86. Адресное пространство ограничено системой команд до 64ГБОдин дурак сказал, все повторяют. 4 ГБ адресного пространства. Иди еще раз посмотри на картинку дескриптора сегмента из мануалов.> есть всякие SSE, в которых есть регистры с большей разрядностьПрочитай память по адресу, содержащемуся в SSE-регистре, а потом приходи спрашивать, что называют регистром общего назначения.>>854055Гитхаб, различные опенсорсные сишные рантаймы. Вижуал студия, исходники CRT в комплекте.
>>854120>> x86. Адресное пространство ограничено системой команд до 64ГБ>Один дурак сказал, все повторяют. 4 ГБ адресного пространства.https://en.wikipedia.org/wiki/Physical_Address_Extension
>>854142Ты еще про оверлеи расскажи. PAE - это те самые оверлеи, когда ты в разное время маппишь разные участки физической памяти в виртуальную. Адресное пространство остается 4 ГБ, такие дела.
>>854150Ок.
Здарова всем.Решил заняться настоящим программированием, но послее ООП головного мозга не очень понятно как в процедурщине реализовать тру шаблоны проектирования.Существуют ли они вообще? Конкретно шаблоны проектирования под Си, не под си с объектами, а именно в том виде каким он должен быть?Киньте ссылку на литературу годную. Поиск выдает какую-то поебень типа Objective-C и тому подобное.
>>854161Object-oriented ansi cCycloneВсе книжкт zmq
>>854203>Object-oriented ansi cкнига годная, но бля это же пиздец пиздецовый, для ооп есть плюсы и жаба, зачем страдать хуйней то? >>854161 чем тебя ооп не устраивает
>>854299П - переносимость.
>>854316>переносимость.лол
Сильно не ссыте на меня, в ВУЗе дали задание:Разработайте программу,которая вводит целое положительное число в промежутке от 1 до 100 (необходимо предусмотреть обработку ошибок при вводе). В соответствии с этим числом сформировать записи трех видов:"Ваш возраст 1 год", "Ваш возраст 22 года", "Ваш возраст 75 лет"''Вам до совершеннолетия 17 лет'',''Вы совершеннолетний 4 года'','''Вы совершеннолетний 57 лет""Вам до пенсии 59 лет", "Вам до пенсии 48 лет", "Вы на пенсии 15 лет"Наваял программку, она компилируется, но ничего не выводит (параша, да).http://ideone.com/oUP7qD
>>854853У тебя в main декларации функций т.е., ты как бы говоришь "сап, гцц, есть одна функция", а не их вызовы. Вызовы делаются так же, как и у всяких библиотечных printf(): имяфункции(тут аргументы, если есть);
>>854857Не прокатило.http://ideone.com/oUP7qD
По отдельности все работает, специально отдельно проверял каждую из функций с разными значениями, вот только все вместе не работает, хотя и ошибки не выдает.
Ананасы, в чём пишете/отлаживаете программы на C под шиндоус? А то я только под мк писал. Насоветуйте что-нибудь легковесное не особо навороченное.
>>854874> Не прокатило.Ты так говоришь, как будто это было единственной проблемой твоего кода:> return dy[3];Ты, вероятно, думал, что возвращаешь массив из трех элементов? Нет, ты читаешь значение за пределами массива (всего три элемента, а ты читаешь четвертый), а возвращать массивы напрямую нельзя, используй указатели или, на худой конец, объяви глобальную переменную.>>854888Легковесное: берешь gcc (и msys/msys2 заодно), берешь любой текстовый редактор (например, саблайм). Отлаживаешь чем придется (x64dbg, IDA, gdb). Если хочется IDE, есть Pelles C, там свой компилятор и свой source-level отладчик.
>>854891Саблайм лучше ноутпада плюх-плюх?>Отлаживаешь чем придется (x64dbg, IDA, gdb)Во что проще вкатиться, что удобнее?Gcc под шиндоус - mingw? Или что?
>>854896> Саблайм лучше ноутпада плюх-плюх?Дело вкуса.> Gcc под шиндоус - mingw? Или что?Да. Ставится в комплекте msys.> что удобнее?Удобнее - нормальный отладчик с человеческим лицом типа студийного но студия весит в районе 5-10 Гб или Pelles C. В принципе, если потребность есть, то и gdb несложно осилить.
>>854901А легковесные аналоги студии есть адекватные? Помню, в студенчестве пытался угорать по опенсорсу и лабы делал в code blocks. Не особо был от него в восторге. Студия годная, но жирная и платная, я не уверен, что такой софт на работе можно ставить себе. Да и мне по мелочам иногда использовать надо будет, так как я в большинстве случаев под arm/avr пишу, а на пекарне для тестов и облегчения себе жизни проще змею использовать.
>>854911> студия ... платнаяЕсть Community-версия, она бесплатная, но на работе ее использовать действительно нельзя.Code::Blocks никуда не делся, оброс фичами и, возможно, стал более юзабельным. Есть еще всякие IDE на Java, тот же эклипс и CLion - они достаточно удобные, но как по мне, слишком уж неповоротливые.
>>854915>на работе ее использовать действительно нельзяНу вот о том и речь.Code blocks вообще юзабельный? Лет семь назад он мне показался весьма корявым. Но он как раз вроде легкий был весьма.CLion же тоже вроде платная.
>>854911Юзаю NetBeans. Легковесной ее не назвать (ибо Java), но в остальном вполне удовлетворяет моим потребностям.>>854915>эклипсПо функционалу норм. Но лично мне не подходит из-за очень крупных элементов интерфейса; на моем экране ничего толком не умещается. Хотя, может быть, оно и настраивается.>CLionПлатная же. Хотя, я слышал, они еще распространяют какую-то кастрированную версию.
>>854853 кун на связи.Я понял, что я полный еблан. Я не знаю, почти нихуя про функции, и в этой программе нагородил полнейшую херню. Как это лечить? Это пройдет? Что посоветуете?
>>8549341) Написать функцию, которая выводит правильное склонение год/года/лет (printf) или возвращает указатель на правильное склонение слова.2) Написать функцию ввода (читать ввод, проверять на ошибки, возвращать 1 int, ты это умеешь).3) Написать функцию, выводящую информацию о текущем возрасте.4) Написать/исправить функции совершеннолетия и пенсий.В результате получится:int get_age(void) { ... }void print_years(int age) { ... }; // Или char *get_years_declenision(int age) { ... }void print_current_age(int age) { ... }void print_adult_status(int age) { ... }void print_pension_status(int age) { ... }int main(void) { int age = get_age(); print_current_age(age); print_adult_status(age); print_pension_status(age);}Пиши по-порядку и сразу тестируй написанное. Ничего сложного в задании нет, а все, что тебе нужно знать, уже есть в том коде, что ты постил выше.
>>854934Вот твоя программа: http://ideone.com/1KfgB8Удиви препода. На первый взгляд может показаться, что я издеваюсь. На самом деле я просто не люблю городить многоэтажные if'ы и терпеть не могу наличия в одной функции нескольких return'ов. Но если хочешь, можешь переписать как тебе надо.
>>854985Баги специально оставил, чтобы >>854934 помучался? grammatic_form показывает нам все, что нужно знать о тернарном операторе. Алсо, твоя enter() сломана - введи a и нажми Enter. Вангую, что ты сам недавно выучил язык. Если будешь писать на нем, то с годами все перекосы пройдут.
>>854996Один баг уже успел пофиксить (в последней функции). enter() тоже переделал. scanf - зло. Изменения внем прямо на ideone.>Вангую, что ты сам недавно выучил язык.Лол. Так или иначе связан с Сишкой уже больше 10 лет. Просто внимательность никогда не была моей сильной стороной. Ну и да, прогу через отладчик не прогонял.
>>855004>внемвнёсфикс
>>855004> Так или иначе связан с Сишкой уже больше 10 лет.Ну хуй знает. Я не про баги. Я про комментарии с линиями, const int абсолютно ничем не отличается от int с точки зрения компилятора, разве что изменять нельзя напрямую, многострочные тернарные операторы нечитаемы, прототипы в .c, inline на который всем насрать... будем считать, что мой детектор дал сбой.
>>855010>комментарии с линиямиВопрос вкуса, ящитаю. Просто мне так удобнее визуально воспринимать код. Первый раз такие коменты увидел в 2004 году и стех пор сам их использую.>const int>inlineЯ это не для компилятора пишу, а для себя и для потенциальных читателей кода. Согласен, в маленьких учебных прогах можно забить на все эти нюансы. Как и на static в объявлении функции (файл-то один). Это уже чистая привычка. Я всегда так пишу. Да что там говорить, я даже restrict юзаю.>прототипы в .cideone же. Там нельзя создать отдельный буфер для хедера. Можно было, конечно, определить все функции перед main, но я делал методом "сверху вниз" и, как мне кажется, это затруднило бы чтение.>тернарные операторыНу тут я полностью согласен. Разумеется, в продакшн-коде такому говну не место. Но и давать очевидно наивное решение тоже не хотелось. Мне кажется, что >>854853 не помешает немного напрячь мозг.
Пока решил забить хуй на SDL, хочу попросить у анона совета насчет ncurses. Читал ли анон что-то по нкурсес охуенное, или ничего охуенней документации не придумано?
Помогите с кодом на си, условие if (((x - a) != 0) || ((x - c) != 0)) работает через раз.http://pastebin.com/dK5gYxG3https://pp.vk.me/c637922/v637922388/16006/V3EM_Qn_rI8.jpg
Поставил msys2 и code blocks. Mingw не заметил, что вместо установщика там менеджер пакетов, поэтому не поставилось. Инета на рабочем компе нет. Code blocks mingw из msys сам не находит, я пути руками указал, жму конпелировать, он пишет, что конпелятор вернул 0, но при этом нихуя не происходит. Как подружить его с msys2?
>>855354Код не читал, хуй знает, что там считается, а ссылка на дуро^Wмэйлру не открывается. Но раз x и a типа double, то, их разность может быть достаточно малой, и при этом не нулевой. Сравнивать числа с плавающей точкой операторами == и != можно только в очень редких случаях. Используй вместо != 0 что-нибудь типа >= N, где N - достаточно маленькое ненулевое число.
>>855473> вместо установщика там менеджер пакетов> Инета на рабочем компе нетМожно выкачать пакеты в офлайн (/etc/pacman.d/mirrorlist.*) и поставить с помощью pacman -U.> жму конпелировать, он пишет, что конпелятор вернул 0, но при этом нихуя не происходитУ Code::Blocks есть окно с логом компиляции. Компилятор там точно правильный и по правильному пути вызывается? Все ли длл оно находит наиболее частая проблема? Попробуй из виндовой консольки руками gcc сказать, проставив все пути так же, как в Code::Blocks.Алсо у Code::Blocks есть дистр со включенным в него mingw.
>>855521Скачал пакеты, попробую завтра. Ну и заодно дистр codeblocks вместе с mingw. Спасибо за помощь, анон.
Тук-тук. Есть кто?
>>855932NIET. A KTO SPRASHIVAYET?
>>855940Фрилансер 300кк/секНужна небольшая помощь с циколом
>>855953Ну выкладывай, че там у тебя.
>>855956Дано натуральное n и действительное a. Вычислить: ПИКCODE(ОЧЕНЬ КРИВОЙ):#include <stdio.h>#include <iostream>#include <math.h>#include <conio.h>using namespace std;int main(){ int n; double a; cin >> a; cin >> n; double result = 0; for (int i = n; i = n; i++) { double temp = a; for (int j = 1; j < i; j++) { temp *= (a + j); } result += 1 / temp; } cout << result; return 0; _getch();}
>>855962Код лучше на pastebin скинь. Или скрин сделай. Так нечитаемо. Но я сразу могу сказать, что твоя программа написана не на Си.
>>855962double f = 1;double sum = 0;for (int i = a; i <= n; i++) {....f = f / i;....sum += f;}
>>855965http://pastebin.com/dARRBXbA как это не на си? На си писал.
>>855966>for (int i = n; i = n; i++)тут опечатался, у меня for (int i =0; i < n; i++) было, и работала она пплохо
>>855971В каком смысле плохо? У тебя двойной цикл, который совсем не нужен.>>855969В си нет cin/cout.
>>855969Твоя программа написана на C++. Ну это сильно сказано. Потому что если ты пользуешься iostream, то зачем подключать stdio? conio.h, насколько мне известно, не входит ни в стандарт C, ни в стандарт С++. В Си не бывает iostream, cin, cout и using namespace std.Попробуй мое решение. Оно довольно грубое, поскольку в идеале надо бы проверку на переполнение запилить. А я пока отойду не надолго. Если что, пиши.
>>855972>В каком смысле плохо? Выдавала совсем не тот результат>В си нет cin/cout.бляяяяяя, точносукасорян, просто уже 10 часов подряд сижу за математиками, вообще голова едетзавтра ещё эту прогу надо сдать помоги пожалуйста переписать убрать >У тебя двойной цикл, который совсем не нужен>>855976Да. Ну крч, мне тут один чел помог именно с циклом, видимо он не так поонял и написал на крестахно надо на Сищас чекну твое
>>855978БФ>переписать лишнее
>>855976Псс, ты ещё тут?
>>855976>conio.hну это точно в Си входитона у меня чисто для _getch();
>>855986Да. Ты пиши сразу, что нужно. Я минут через 10-15 буду.
>>855966 >>855976Оба ответа неправильные.
>>855992http://pastebin.com/QXqi1dWH довел прогу до ума, теперь она работает.Осталось переписать с С++ на Си.Это возможно?
>>855996scanf/printf вместо cin/cout, namespace, iostream убрать.
>>855993Анон, поясни, где у меня ( >>855976 ) обосрамс?
>>855999int n; double a; scanf("%f,%f", &a, &n);Так пойдет?
>>8560031 / a + 1 /a + ...
>>856010Фиксанул, вроде. Допустим, a = 1, n = 2. Должно получиться 1 + (1/(1∙(1+1))) + (1/(1∙(1+1)∙(1+2))) = 1 + 1/2 + 1/6 ~= 1.667, так ведь?http://ideone.com/ArHkgC
>>856005Ясно же что нет.
>>856027Ошибка быстро будет накапливаться. Ты это понимаешь, надеюсь?
>>856030Ну я сразу написал, что решение грубое. Я же не буду детально прорабатывать чужую лабу. Эпсилон и проверка на переполнение легко гуглятся.
>>856033Тут надо не эпсилон, а рациональные числа делать.
>>855999>>856029Не понимаю, как написать, что бы printf выводил результатХелп плеес
>>856037scanf("%ld %d", &a, &n)printf("%ld %d", &a, &n)Если я не путаю.
>>856036Лол, я даже не знаю, ожидает ли препод такого решения от >>855962 Обычно же хватает варианта "на отъебись". Если конечно это не лаба по мат. программированию.
>>856041> Если конечно это не лаба по мат. программированию.Нет>ожидает ли препод Вряд ли, у меня преподша очень странная, я для себя пытаюсь понять просто >>856038>l что это перед d?Раньше в прогах писал>scanf("%f,%f", &a, &n)и работало
>>856044А ты ман по scanf/printf почитай. Там эротика.
Странно, переделал cin cout, стало выдавать громадные числа.Где я ошибся?
>>856047lf, а не ldтуплю
>>856047Дебил. Зачем ты поинтеры печатаешь?
>>856049Теперь нули выдает.>>856054поинтеры?
>>856054где они тут?
>>856055>поинтеры?Смена растет.
>>856057я думал, что это *xxxxxxxxxxxx
аааа, хаххаха, сукаа
>>856047Ну так все же, что фиксануть?
>>856062Убрать &ы.
>>856062Прочитать ман по printf и scanf. А еще не копировать бездумно код, который тебе дали на дваче. Понятно, что для тебя это невыполнимо.
>>856063Теперь с эксепшенном сваливается почему-то.
>>856065Не везде убрать, только в некоторых местах.
>>856067Да я троллю, успокойся.
>>856062http://ideone.com/YuHA7kИ прочитай все таки доки на stdio.
>>856070Вот так и становится тред кормушкой для птушников с их лабами.
>>856064>не копировать бездумно код, который тебе дали на двачеТы сам хоть понимаешь, что пишешь?>>856071Бляя, я надеюсь ты когда нибудь попадешь на мой факультет
>>856073>Ты сам хоть понимаешь, что пишешь?Понимаю. Проблемы?>Бляя, я надеюсь ты когда нибудь попадешь на мой факультетЗачем?
>>856071Ну, все таки, вопросы использования stdio - это специфика Сишки. Можно, конечно, было отправить его в ньюфаг-тред, но к чему умножать сущности? Как мне кажется, в данном случае, лучше показать, как решить проблему с printf/scanf, чем тупо отправить читать маны. Чисто чтобы потом у него не возникло отвращения к языку из-за одной единственной говнолабы.
>>856070>И прочитай все таки доки на stdio.Спасибо большое, добра>>856074>Проблемы?Пруфани, что я код с двачей скопировалДа и вообще, как я могу это знать?В школе у нас вообще не было информатики (к егэ сам готовился) В универе на странного препода попал, щас зайду с телефона кину тебе задание на допуск к этой самой лабе Все, что она обьяснила это int, while, for, do while и как кубриками этими ебаными рисовать блок-схемыp.s. уже 11ый час сижу за расчетками по математикам, поэтому туплю довольно жестко
>>856070printf("%.4lf\n", solve(a, n));fix
>>856083>Пруфани, что я код с двачей скопировалУ тебя в >>856047 вконце printf, а следом scanf. Может это конечно у тебя сделано, чтобы press any key before continue, но что-то мне подсказывает, что просто копирнул.
>>856088>beforeto fix
test!
хех чисто тред оживил сегодня хоть немного
>>856123анус бы себе лучше оживил
>>856124eto ne vichislimo po turingu
Пацаны, можно ли в sublime 3:а) запилить подсказку по функциям (ну типа когда вызов пишешь, чтобы он находил в указанных заранее директориях прототип и писал, какие параметры надо передавать. Ну типа как анаконда для пистона)б) запилить форматирование всего файла хоткеем?в) отображение определения макросов, а не названия файла, в котором оно находится
>>856247> подсказкуSublimeCodeIntel, но оно это одна большая проблема. В целом, проще считать, что нет.> форматирование хоткеемОбертки вокруг astyle и clangformat, тысячи их.> определения макросовХуй знает, поковыряй, как оно там индексирует. Мне достаточно Goto definition (назначь хоткей, по умолчанию вроде нету) и потом Jump Back (Alt -).
Вопрос неуча.Это нормально, что scanf не может прочитать короткое целое число 255>=x>=0 в однобайтовый unsigned char, когда в строке формата стоит %d?На ideone читает, но не читает в signed. Какое-то непредсказуемое поведение...
>>856274Да.
>>856276На том же ideone читает, если вместо %d указать %u, но на моем компьютере по прежнему ведет себя странно.Хм. Ну и ладно, проще считать в int и привести к char тогда. Наверное. Я же нуб и могу ошибаться.
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/attrib.htmlАнон, отчего в этом коде Example 5 может быть сегфолт? Очепяток нету, написано вроде все верно.
>>856305Под gdb запускать не пробовал? Что пишет?
>>856306Нет пока, не пробовал, только домой сейчас доберусь, где смогу.
>>856254>SublimeCodeIntelТам по-моему нет C, а для пистона анаконда ну просто конфета.>Обертки вокруг astyleВ смысле, обертки?Алсо, сниппеты - это типа как code templates в iar? Нихуя только не понятно, как их самому создавать?
>>856655> SublimeCodeIntel> Там по-моему нет CИ правда, извини.> В смысле, обертки?В смысле, есть много плагинов, у которых внутри бинарник astyle в том или ином виде. Например, SublimeAStyleFormatter, там внутри pyastyle.> Алсо, сниппеты - это типа как code templatesНу да. Создавать через Tools->Developer->New snippet, описание http://docs.sublimetext.info/en/latest/extensibility/snippets.html
Есть одно приложение, которое отправляет DNS запросы. Нужно перехватить момент отправки. Но не пойму, как оно отправляет. Ставлю брекпойнт на send, sendto, WSASend, WSASendTo, gethostbyname - не использует их. Как отловить?
>>856756getaddrinfo() или, вероятнее, WSAAsyncGetHostByName()?
>>856758>getaddrinfoОх, антоша, тысячи благодарностей тебе.
Оп, перекатывай давай, хуильник
>>856773Как скажешь.
>>856777 (OP)>>856777 (OP)>>856777 (OP)>>856777 (OP)>>856777 (OP)