[Ответить в тред] Ответить в тред



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 513 | 33 | 161
Назад Вниз Каталог Обновить

C Programming Language #20 Аноним # OP  23/03/17 Чтв 17:40:17  959643  
C Programming L[...].png (78Кб, 792x1023)
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

- Классика от Отцов: 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 2017 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)

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

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

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

- №16: https://arhivach.org/thread/235327/
- №17: https://arhivach.org/thread/237852/
- №18: https://arhivach.org/thread/243867/
- №19: https://arhivach.org/thread/248880/

Шапка: http://piratepad.net/bJ1SdmkZyu
Аноним 23/03/17 Чтв 17:43:05  959645
1483980462792.png (1345Кб, 1000x1400)
>>959643 (OP)
Освятил
Аноним 23/03/17 Чтв 17:50:07  959653
#ifdef НОВЫЙ_ТРЕД
освятил_тред(959643, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
#endif
Аноним 23/03/17 Чтв 17:55:07  959655
>>959653
#include <stdarg.h> сцуко!
Аноним 23/03/17 Чтв 17:59:56  959660
>>959653
Хуевое проектирование.
Аноним 23/03/17 Чтв 18:04:53  959661
>>959643 (OP)
Имхо, вот эта книга неплохая для вкатывальщиков: http://shop.oreilly.com/product/0636920015482.do
Осиливал в оригинале, про качество перевода не знаю.
Хотя обложка и оформление слегка ебанутые
Аноним 23/03/17 Чтв 18:18:29  959667
>>959661
Нет, лучше всего Прата, а затем Керниган-Ритчи
Аноним 23/03/17 Чтв 18:28:17  959671
>>959667
Судя по оглавлению, книжка, по крайней мере, лучше чем hard way.
Аноним 23/03/17 Чтв 18:46:04  959684
Почему в шапке до сих пор не было книги по указателям?
http://shop.oreilly.com/product/0636920028000.do
Аноним 23/03/17 Чтв 19:20:07  959699
>>959684
Книга? По указателям? Следующей будет книга по булевой логике, хотя подожди-ка...
Аноним 23/03/17 Чтв 21:45:40  959746
>>959661
А что там вкатываться в си то? Открываешь стандарт и читаешь, хули, это не с++
Не можешь сходу осилить стандарт, учишь сначала питон
Аноним 24/03/17 Птн 05:58:41  959903
>>959699
я вот такую годноту там нашел:

#define RAII_VARIABLE(vartype,varname,initval,dtor) \ void _dtor_ ## varname (vartype v) { dtor(v); } \ vartype varname __attribute__((cleanup(_dtor_ ## varname))) = (initval)

автодестпуктор для мэлока
Аноним 24/03/17 Птн 06:04:02  959906
>>959746
в плюсах тоже самое
Аноним 24/03/17 Птн 14:41:05  960087
Сегодня ты сосал хуи
А завтра пишешь ты на Си
Аноним 24/03/17 Птн 14:44:30  960088
>>959903
>__attribute__

Это из какого стандарта?

>>959906

Стандарт плюсов в два раза толще. Чтобы из 1300 страниц выудить полезную информацию о том, как писать на языке, надо иметь недюжий ум.
Аноним 24/03/17 Птн 14:48:46  960090
ыыы.jpg (17Кб, 242x257)
анон хэлп. как посчитать максимальную связку из нулей. у меня получилось посчитать общее количество нулей.
как мне сравнить одну последовательность нулей с другой?
Аноним 24/03/17 Птн 14:57:33  960094
>>960090
Как обычно ищут максимум: заведи max_length = 0, max_offset = -1, а когда очередная последовательность нулей закончится, сравни ее длину с max_length, и если она больше, запомни новую max_length и офсет последовательности (если нужно). Алсо, сейчас у тебя просто количество нулей считается, а тебе нужно детектить переход между ноль-неноль и обратно.
Аноним 24/03/17 Птн 15:02:45  960097
>>960088
>__attribute__
из гцц
>плюсов в два раза толще
пишу все гуи на кют ложив хуй на стандарты, все отлично.

стандарты это мокрописька для хипстеров.
Аноним 24/03/17 Птн 15:07:06  960098
>>960090
else break;
Аноним 24/03/17 Птн 16:10:59  960118
>>959643 (OP)
Ананасы, как правильно сделать проприетарную bare metal либу? То бишь нужно скомпилять код и поставлять в виде какого-нить бинарного формата + хедер с прототипами функций, доступных пользователю и всё это добро должно нормально линковаться. Очевидная статическая либа из объектных файлов не подходит, т.к. таким способом будут светиться все внешние функции/переменные из объектных файлов, что довольно некрасиво.
Аноним 24/03/17 Птн 16:11:16  960119
Почему когда я смотрю обычные заголовочные файлы stdio.h, например то вижу тонны дефайнов, несколько объявлений функций, а самих функций не вижу? Где они?
Аноним 24/03/17 Птн 16:12:19  960120
>>960119
Скомпилированы и лежат скорее всего в виде shared либы где-то в /lib
Аноним 24/03/17 Птн 16:13:21  960122
>>960097
>пишу все гуи на кют ложив хуй на стандарты, все отлично.
ты какой-то даун совсем отбитый, советую рассмотреть суицид
Аноним 24/03/17 Птн 16:16:01  960124
>>960118
Посмотри на sqlite amalgamation - собирай (скриптами) гигантский сорс и компилируй его (ну или инклудь .c в .c). Не делай символы внешними, используй static где только можно.
Аноним 24/03/17 Птн 16:20:50  960127
>>960124
Неужели это всё нельзя сделать силами конпелятора или линковщика и нужно городить костыли? Ведь shared либы для больших операционок легко чистятся от излишних экспортируемых символов, даже можно всякими __attribuute__ в gcc явно задавать, что нужно всем видеть, а что – нет.
Аноним 24/03/17 Птн 16:26:12  960128
>>960127
Может лучше просто скомпилировать либу в готовый машинный бинарник, написать функции-обёртки (т.е. обертки тех функций, которые должны эскпортироваться), которые вызывают _настоящую_ функцию по конкретному адресу, а также написать скрипт для линковщика?
Аноним 24/03/17 Птн 16:32:42  960132
>>960127
Можно сделать средствами линковщика. Можно перепидорасить объектники как угодно, но подход sqlite требует меньше всего трудозатрат.
Аноним 24/03/17 Птн 17:11:21  960148
>>959906
>в плюсах тоже самое
Только стандарт си++ никто толком даже из комитета не читал. Была же история, что какой-то чувак в стандарт по шаблонам написал стишок и его никто не заметил, т.к. никто не читал. В итоге так и приняли стандарт вместе с этой хуйней
Dmitry 24/03/17 Птн 17:18:38  960154
>>960119
Мне тоже нудобно, хотел на реализацию глянуть и обосрался.
Dmitry 24/03/17 Птн 17:18:57  960155
>>960154
*неудобно
Аноним 24/03/17 Птн 17:24:19  960161
>>960155
Ну наконец-то признался, что все эти твои имаксы говно.
Аноним 24/03/17 Птн 17:29:55  960167
>>960148
Даже не поленился и нашел: страница 362 стандарта 2013 - пункт 14.7.3 Explicit specialization, подпункт 7, самый конец абзаца:

When writing a specialization, be careful about its location; or to make it compile will be such a trial as to kindle its self-immolation.
Аноним 24/03/17 Птн 17:46:04  960176
>>960132
В общем-то всё получилось намного проще: нужно всего-то сделать
ld -r куча_объектных_файлов -o yoba.o
strip yoba.o --strip-all --discard-all (или какой-либо другой способ избавиться от неугодных символов)

Подход с запихиванием всех исходников в один файл хоть и полезный для оптимизаций, но нахуй не нужен в моем случае по крайней мере пока хватает места на флешке, лол
Аноним 24/03/17 Птн 17:58:05  960183
>>960161
Neosilator please.
Аноним 24/03/17 Птн 18:25:57  960200
>>960183
Я? У меня никаких неудобств из-за хедеров не возникает.
Аноним 24/03/17 Птн 18:44:09  960215
>>960200
Тупорылый петухевен, у тех двух ньюфагов тоже нет никаких неудобств с просмотром хедеров. До них не доходит, что реализации функций в хедере уже скомпилированны и не доступны для просмотра.
этот дебил у вас тут - местный клоун?
Аноним 25/03/17 Суб 00:29:11  960420
https://arhivach.org/thread/248880/#959007

Я вчера ночью придумал решение.

Короче: http://www.stanford.edu/class/ee398a/handouts/papers/WittenACM87ArithmCoding.pdf

Длинее: Хранить выборки в массиве ты не сможешь, если число будет слишком большим (число выборок - примерно N! ). Тебе нужно закодировать упорядоченную выборку из набора числом, и потом по требованию разворачивать выборку в строку или ещё во что (то есть, у тебя массива не будет. У тебя будет функция).

Упорядоченная выборка некоторого размера M из набора N - это вектор из M чисел (индексов в наборе) от 1 до N-k где k - номер числа в векторе (число оставшихся вариантов зависит от того, сколько элементов уже выбрано, и каждое число обозначает номер выбранного продолжения в списке оставшихся).

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

Например, выборка {1,7,4,8,9} из {0 ... 9} будет представлена дробью
1/(101)+6/(910)+3/(8910)+5/(78910)+5/(6789*10)
10 - размер набора.

EOL-символ тебе не нужен.
Аноним 25/03/17 Суб 00:31:43  960422
>>960420
P.S. Если тебе нужно объединить выборки всех размеров в одну, то EOL-символ тебе понадобится.
Аноним 25/03/17 Суб 00:52:22  960426
>>959643 (OP)
На вашем говне еще что-нибудь пишут? Кроме корявых драйверов к какому-нибудь линуксу?
Аноним 25/03/17 Суб 03:26:08  960449
>>960426
>вашем говне
на нем написано ваше говно
Dmitry 25/03/17 Суб 05:16:47  960460
>>960426
Все программы от А до Я на C99/C11 пишутся.
Аноним 25/03/17 Суб 14:54:11  960661
Кто-нибудь ковырял MetaC? Годная штука?
Аноним 25/03/17 Суб 16:15:15  960711
>>959643 (OP)
Аноны, у меня сортировка данных, вывел сам процесс в функцию, нужно посчитать кол-во обменов и перестановок. Можно задать цикл со счетом обменов/перестановок в самой функции, чтобы потом вывести это кол-во в консоль?
Аноним 25/03/17 Суб 16:51:04  960750
>>960119
>Где они?
Можешь купить у майкрософт.
>Source code for runtime libraries is included in Visual C++[15] for reference and debugging (e.g. in C:\Program Files\Microsoft Visual Studio 11.0\VC\crt\src).
Как это устроено у красноглазиков не знаю, но думаю надо будет сделать apt-get install libc6-dev или нечто подобное.
Аноним 25/03/17 Суб 16:53:30  960754
>>960167
В голосяндру.
Аноним 25/03/17 Суб 17:03:18  960764
Фолкс, где искать работу? Пытаюсь учить всякие джавы, пхп... такая залупа хз.. не нравится мне всё это. С/С++ ближе, но работы чёт мало (или я просто не там ищу). Если и есть вакансия, то требуется кулхацкер со стажем пицот лет, и чтоб пришёл и порядок навёл без помощи. А где взять работу совсем зелёненькому, как я? Я вот недавно откинулся с универа. Не нуб, но и не чел, который придёт и возьмёт всё под свой контроль. Как быть? Нахуй идти не хочется.
Аноним 25/03/17 Суб 17:13:01  960779
>>960764
Обычно у вуза тем более технического есть программы содействия трудоустройству выпускников, в твоем нет?
Аноним 25/03/17 Суб 17:15:59  960782
>>960764
Дрочи электронику и иди пилить прошивки или ищи более нормальные языки. С поиском работы на Си в России все крайне хуево, всем нужны веб-макаки.
Аноним 25/03/17 Суб 17:19:38  960785
>>960764
Ну щас тенденции такие. Байтоебство осталось в 90-нулевых, сейчас в рашке онли тырпрайз, делать сайты или писать приложения под ведроид. Но ты всегда можешь завести трактор и работать в нормальной ит компании, где еще пишут на плюсах/си - разные интол(интернет вещей), геймдев компании и тд
Аноним 25/03/17 Суб 17:24:43  960792
>>960750
In any linux stdlibc installed by defaul in /lib64 headers in /usr/include
Аноним 25/03/17 Суб 17:42:47  960818
>>960779
>>960782
>>960785

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


Аноним 25/03/17 Суб 19:13:17  960906
Я правильно текст из файла в строку пидорю? https://a.vidga.me/sgeyey.c
Аноним 25/03/17 Суб 19:38:05  960911
>>960906
1) Закрывать-то файл зачем? Сделай rewind или fseek(file, 0, SEEK_SET) после ftell().
2) Ты уже знаешь размер, но читаешь посимвольно. Делай сразу fread всего файла, пусть рантайм разбирается и читает так, как ему там удобнее читать.
3) Выделяешь n байт, читаешь n байт. В результате строка у тебя останется не завершенной нулем (если в файле нулевой байт не встретится). Выделяй n+1, явно делай str[m] = '\0' после чтения, где m = количество прочитанных байтов.
Аноним 25/03/17 Суб 20:42:22  960935
1.png (5Кб, 501x239)
>>959643 (OP)
Добрый вечер, могу ли я в функцию ввести цикл для подсчета количества сравнений и обменов?
Аноним 25/03/17 Суб 20:59:59  960945
>>960935
Хуй знает, что это и зачем, но либо считай руками (для сравнений счетчик можно прямо в сравнении увеличивать: if (compare_counter++, foo < bar) { ...), для обменов тем более никаких проблем. Либо сделай отдельные фукнции compare и exchange, и увеличивай счетчик в них.
Аноним 25/03/17 Суб 21:25:29  960955
Хочу изучить с++ чтобы делать игры. В 2017 он еще актуален для гейдева?
Аноним 25/03/17 Суб 21:26:10  960957
>>960935
> Кол-во сравнений
Это же просто обмен двух элементов местами. К чему этот комментарий? Массивы чтоль сортируешь?
Аноним 25/03/17 Суб 21:32:26  960963
>>960955
В 2017 он единственный язык, на котором пишут игры.
Аноним 25/03/17 Суб 21:32:31  960964
>>960955
Актуален, но лучше бери Unity и C#, быстрее вкатишься, а не погрязнешь в хелловорлдах и движкостроительстве. Алсо, тут тред не про кресты, вообще сходи к детям в /gd/ лучше.
Аноним 25/03/17 Суб 21:39:43  960967
>>960964
> лучше бери Unity и C#
Попробовал сначала на жаве, но 90мб в озу на перемещение спрайта меня как то оттолкнуло. Юнити тоже выдает много мусора. Схожу в общем посмотрю что в /гд говорят.
Аноним 25/03/17 Суб 21:44:34  960972
>>960967
В юнити и вообще готовых движках ты нормального потребления не добьёшься, да и производительности нормальной тоже. Зато программить на этом сможет даже ребёнок, всё максимально просто.
Если же хочешь, чтобы ресурсов мало выжирало и летало, то пердоль OpenGL/Vulkan на Си/Крестах, но на этом ты само-собой ультра йобу в два клика не сделаешь, тут думать нужно.
Аноним 25/03/17 Суб 21:44:44  960973
>>960967
> 90 мб
Дай угадаю, а без спрайта хелловорлд ты не мерял? А чем всякие commit/reserve/heap отличаются не знаешь? Ничего плохого в 90 мб нет, если это не 90 мб на каждый спрайт. Тот же майнкрафт на моем старом 2 ядраодин целерон-2 гига середины 2000х упирается в проц, а не в память.
Аноним 25/03/17 Суб 21:55:27  960978
>>960972
Вооот, уже начинают советовать делать свой движок... да еще на вулкане. Ты сам свой движок закончил? Ты представляешь, сколько нужно итераций "сжечь и переписать", чтобы у человека без предыдущего опыта в движке появилась архитектура? Сколько человекочасов, чтобы добиться современного уровня графики? Сколько соломки нужно подстелить для legacy-дров с багами? Сколько времени можно было бы потратить на разработку самой игры?
Сам пилю йобу на С в свободное время, но я старый и глупый, не повторяйте моих ошибок.
Аноним 25/03/17 Суб 22:01:30  960983
>>960978
Если у него есть желание, то не вижу проблемы. В любом случае я сказал как есть:
Движки — быстрая разработка, тормоза, высокое потребление памяти.
Велосипеды — долгая разработка, высокая производительность, маленькое потребление памяти.

Алсо, если он хочет пилить 2D игорю, то тут всё просто.
Аноним 26/03/17 Вск 00:11:27  961043
>>960978
>Сам пилю йобу на С в свободное время
Покажи скриншоты или что у тебя есть. Интересно.
мимо-крокодил
Аноним 26/03/17 Вск 02:04:58  961078
>>960978
>legacy
Ненужно совершенно.
>дров
mesa-vulkan твои дрова, сам движок под wayland пили.
>человекочасов
Ты же не йобу собрался разрабатывать, сделай простую либу чтобы импортировались .blender файлы и все.
Аноним 26/03/17 Вск 02:20:45  961086
>>961078
> legacy Ненужно совершенно.
Поэтому удел линукса - сервера.

> mesa-vulkan твои дрова, сам движок под wayland пили.
А почему это плохой совет, читай двумя строчками выше.

> сделай простую либу чтобы импортировались .blender файлы
> простую либу
> простую
> .blender файлы
А чего не .mb сразу?

Неа, совсем не палишься
Аноним 26/03/17 Вск 12:35:02  961203
Про типы с точной шириной типа int16_t, uint32_t вики говорит, что не все системы их поддерживают. Кто-нибудь навскидку назовёт в пример подобную систему?
Аноним 26/03/17 Вск 13:10:13  961217
>>961203
Системы, где байт не кратен 8 битам
Аноним 26/03/17 Вск 13:14:49  961219
>>960785
Живу в рашкованском миллионнике и байтоёбствую под эмбедед и не только в продуктовой компании. ЧЯДНТ?
Аноним 26/03/17 Вск 13:22:30  961223
>>961217
А много таких систем-то? Из популярных я имею в виду.
Не, ну я предполагал, что Сетунь-70 не поддерживает подобное, но из современных, есть какие-то значимые примеры?
Avr могу предположить, но там только в силу размера же.
Аноним 26/03/17 Вск 13:54:04  961241
>>961219
Что за компани? Или это типичная оборонка?
Аноним 26/03/17 Вск 15:21:34  961314
>>961203
> Кто-нибудь навскидку назовёт в пример подобную систему?
DSP, где память адресуется 24- или 32-битными словами?
Аноним 26/03/17 Вск 15:26:11  961315
>>960764
У нефтянки и прочих недрокопателей софт до сих пор пишется и поддерживается на с/с++.
Аноним 27/03/17 Пнд 07:26:09  961662
>>960215
Насколько я помню этот дебил бородатый и самый скилловый тут, а ты можешь пройти на хуй
Аноним 27/03/17 Пнд 08:48:45  961674
generatorCSharp.png (9Кб, 549x302)
generatorPython.png (4Кб, 235x140)
Помогите написать генератор, типа питоновского/шарповского yield как на пикрелейтед. Код ниже почему-то вылетает с ошибкой:

#include <stdio.h>
#include <setjmp.h>

jmp_buf env_generator;

int range_generator(int max)
{
    int val = setjmp(env_generator);
    while (val < max)
    {
        val++;
        return val;
    }
    return -1;
}

void main()
{
    for (int result = range_generator(10); result >= 0; longjmp(env_generator, result))
    {
        printf("Result: %d\n", result);
    }
}
Аноним 27/03/17 Пнд 09:58:07  961696
>>961674
>генератор, типа питоновского/шарповского yield
нахуя? если нужно нечто подобное, используй итераторы, а не такие кривые велосипеды
Аноним 27/03/17 Пнд 10:18:37  961698
>>961696
Какие итераторы? Мне нужно на чистом Си.
Генератор, который выдавал бы значения внутрь цикла for и while (например, числа от 1 до 10) без хранения их в памяти.
Аноним 27/03/17 Пнд 11:24:20  961709
>>961698
Всё равно тебя не понимаю.

1) НАХУЯ тебе этот генератор в C??


2) setjmp - эту ебанину крайне редко используют в очень узких задачах. Ты уверен, что это надо в твоём проекте? Что ты пытаешься сделать?
Аноним 27/03/17 Пнд 11:29:18  961711
>>961698
>без хранения в памяти
Манямирок, отдельно функция и переменная не подойдет?
Если цикл один то и функции не надо.
Но вот итераторы раз они тебе нужны.
http://stackoverflow.com/questions/4961860/iterator-in-c-language#4962050
Аноним 27/03/17 Пнд 11:31:01  961712
>>961698
В С так не делается, не переноси свои ебанутые привычки с первого языка на все остальные, учи C и как на нем пишется код, а не переводи в своей голове с питона.
Аноним 27/03/17 Пнд 11:33:52  961714
>>961712
как хочет так пусть и делает. зато быстрей вкатится.
Аноним 27/03/17 Пнд 11:43:52  961723
>>961711
Есть подозрение что он хотел отложенно вычислять массив по мере итерации.
Аноним 27/03/17 Пнд 11:51:33  961725
>>961723
Не соснет ли такое решение по сравнению с обычным последовательным? Вычисли сразу все а потом делай что хотел.
Аноним 27/03/17 Пнд 12:04:00  961727
>>961725
Соснет, этот дебил хочет функциональщины в насквозь процедурном языке. Для этого и изобрели пайтон.
Аноним 27/03/17 Пнд 12:04:56  961728
>>961698
>Генератор, который выдавал бы значения внутрь цикла for и while (например, числа от 1 до 10) без хранения их в памяти.
Освобождай вручную и передавай ссылки, но это все хуита.
Аноним 27/03/17 Пнд 12:15:18  961735
>>961709
Библиотеку для коллекций с ленивыми вычислениями.
Аноним 27/03/17 Пнд 12:19:21  961736
>>961723
>>961727
>>961728
проиграл с тупорылой школоты
Аноним 27/03/17 Пнд 12:41:27  961741
>>961727
На С можно функционально писать. Но меру всегда надо знать ато бутет сосо в производительности или даже стековерфлоу. Лучшего кода за функциональный нет, писать удобно, никакого дублирования, маленькие исходники, но вызов функции сам по себе потребляет ресурсы.
Аноним 27/03/17 Пнд 15:03:04  961790
>>961674
longjmp предназначен для переходов внутри функции, или для "выпрыгивания" по стеку вызовов наружу. Если функция, которая вызвала setjmp, завершилась, можешь считать, что jmp_buf содержит мусор.
Аноним 27/03/17 Пнд 15:55:30  961828
printf("Введите a кок-пок и т.д. и т.п.\n");
success=scanf("%d", &a);
printf("Введите b и с\n");
uspeh=scanf("%d %d", &b, &c);
Не могу заставить scanf считывать с новой строки b.
Просто пользователь может после первого сообщения ввести два числа, в переменную a попадёт первое введённое, а вот scanf-ить числа b и с уже надо со следующей строки.
А у меня если юзер введёт после первого сообщения "14 88", а после второго "13 37", то
а=14
b=88
c=13
А надо:
a=14
b=13
c=37
success=scanf("%d\n", &a) не помогает
Dmitry 27/03/17 Пнд 15:59:37  961832
>>961828
Считывай сугубо по одной переменной.
Аноним 27/03/17 Пнд 16:06:10  961841
>>961832
Дак лол, не могу же.
Энивэй, если я попрошу вводить по одной цифре, то пользователь может ввести две по описанию задания. Алсо, он может ввести N переменных. Надо считать только первую, а потом заставить следующие scanf считывать с другой строки.
putchar('\n') не помогает
Аноним 27/03/17 Пнд 16:07:48  961842
>>961841
> по одной цифре
По одному числу, фикс.
> он может ввести N переменных
N чисел, фикс2
Dmitry 27/03/17 Пнд 16:08:52  961843
>>961841
Почему не можешь?
Программа должна писатся для трезвого пользователя.
Можешь все за один scanf считать.
Аноним 27/03/17 Пнд 16:12:04  961844
>>961843
> Программа должна писатся для трезвого пользователя.
Не у меня. Понимаешь, я мог бы всё аккуратно сделать через гетчары, перевод в числа и обстоятельные проверки всего и вся, но я так не сделаю, пока меня не обоссут, а пока просто сканфики скобачки.
> Можешь все за один scanf считать.
Не могу. Там дальше в программе надо будет считать разные данные в зависимости от хода программы, это и мешает, причём ужасно.


Аноним 27/03/17 Пнд 16:18:10  961848
>>961828
>>961844
Решил так.
Добавляю переменную char trash;
while(trash!='\n')
scanf("%c", &trash);
Переменная сама никому не нужна, просто для прокрутки.

Аноним 27/03/17 Пнд 16:54:32  961889
>>961848
fflush? стандартных путей нет, кроме да, считывания.
Аноним 27/03/17 Пнд 17:02:04  961896
14118044249430.png (175Кб, 500x480)
>>961848
> scanf для одного символа
Аноним 27/03/17 Пнд 17:02:59  961899
>>961889
> стандартных путей нет, кроме да, считывания.
Это и есть стандартный путь после scanf failure. Вычитать остаток строки и запросить данные заново.
Dmitry 27/03/17 Пнд 17:06:27  961903
>>961896
Пыня плиз.
Железо все стерпит, процессоры с каждым годом все мощнее, 5GHz, дохуя ядер, scanf это ничто.
Аноним 27/03/17 Пнд 18:37:30  961973
>>961828
>>961848
Сожрать остаток строки можно самим scanf-ом: scanf("%∗[^\r\n]"). Взять число и выкинуть остаток строки можно, чуть исправив формат: scanf("%d%∗[^\r\n]", &n) (звездочки только на нормальные поменяй). С чтением одного числа из одной строки (а также нескольих чисел из обязательно одной строки) сложнее: самый простой подход - использовать fgets+sscanf, самый правильный - fgets+strtok+strtoul и прочие strtoX.
Аноним 27/03/17 Пнд 19:12:10  961987
>>961896
Дак чтоб под строку не выделять память
Аноним 27/03/17 Пнд 19:13:08  961989
>>961973
Спасибо, годно
Аноним 27/03/17 Пнд 19:18:21  961995
>>961987
он наверно про то, что getc (или как оно там) менее тяжеловесен.
Аноним 27/03/17 Пнд 19:46:10  962006
>>961995
Дак да, но блин, я уже сталкивался с таким, что позиция, с которой будет считан следующий getchar() не совпадает с позицией, с которой будет считан следующий scanf().
Или у меня тогда проблемы были не с этим. Но приходилось писать scanf("%d\n") - только тогда всё работало В общем, я осторожничаю с этими вот читалками.
Аноним 27/03/17 Пнд 20:10:39  962019
>>961896
В прочем, ты был прав. С гетчаром всё работает, я не смог сбить его с толку
Аноним 27/03/17 Пнд 23:00:20  962115
Ладно, поцоны, как вы парсер пишите? Например, заголовка ip пакета. Для мeня пока бeст таeр это сдeлать структурку с битовыми полями и обeрнуть ee в #pragma pack. Или как-то так. Ну и входной массив привeсти к типу.
Минусы: eбиная дирeктива компилятора, что шатаeт кросплатформeннсть, и нeвозможно динамичeски описать поля структуры, eсли парсятся извeстной формы набор байт.

Какиe ваши прeдложeния?
Аноним 27/03/17 Пнд 23:06:50  962120
>>962115
https://en.wikipedia.org/wiki/Parsing
Аноним 27/03/17 Пнд 23:08:51  962121
>>962115
На, попробуй http://www.colm.net/open-source/ragel/
Аноним 27/03/17 Пнд 23:12:17  962123
>>962115
а, кстати, не ебу о чём ты там, но структуру можно объявлять динамически внутри функции.
типо как

f(a,b) {
struct a {
c[a];
d;
}
}
Аноним 27/03/17 Пнд 23:21:05  962126
>>962123
У мeня гцц трeбуeт обязательно числа в квадратных скобках
Аноним 27/03/17 Пнд 23:51:16  962148
>>962126
ну чё, перестал, требовать? типы проставь
Аноним 28/03/17 Втр 00:44:07  962183
>>962115
В прошлом треде (или позапрошлом, не помню) дохуя об этом срали, сходи почитай - ссылки в шапке.
Аноним 28/03/17 Втр 03:06:33  962205
>>961828
Диванный нуб залетает в тред. Вылечил проблему банальным fflush(stdin); перед втором сканфом.
Аноним 28/03/17 Втр 07:56:38  962245
>>962205
А я и не отрицаю.
Тот самый диванный нуб
Аноним 28/03/17 Втр 10:35:20  962281
сисюны, реквистирую алгоритмы разбиение текста на строки типа Knuth-Plass Line Wrapping
Аноним 28/03/17 Втр 13:52:06  962342
>>962245
Лол, диванный это я. 3-й курс шараги еще.
Аноним 28/03/17 Втр 15:17:31  962368
>>962205
> fflush(stdin);
UB
Аноним 28/03/17 Втр 16:49:45  962397
>>962368
И это еще раз иллюстрирует нам, насколько сильно комитет злоупотребляет UB. Здесь вполне можно было бы обойтись unspecified behavior.
Аноним 28/03/17 Втр 16:52:32  962399
>>962397
>И это еще раз иллюстрирует нам, насколько сильно комитет злоупотребляет UB.
Не дорос ты определять, злоупотребляют или нет.
Аноним 28/03/17 Втр 18:07:00  962456
>>962148
Удивитeльно, но да. Но крeстах совeршeнно нe хочeт так дeлать. Совeршeнно нe понятно, почему в сишкe работаeт
Аноним 28/03/17 Втр 18:07:56  962457
>>962456
> Совeршeнно нe понятно, почему в сишкe работаeт
Потому что в C99 есть VLA, а в C++ их не взяли
Аноним 28/03/17 Втр 19:49:50  962528
втф.jpg (74Кб, 372x246)
>>959643 (OP)
Как посчитать эти ёбаные числа?
Аноним 28/03/17 Втр 19:54:01  962531
>>962528
8ll 1024 1024 * 1024
Аноним 28/03/17 Втр 19:54:23  962532
>>962531
8ll x 1024 x 1024 x 1024
Аноним 28/03/17 Втр 19:56:46  962534
>>962528
Ну или long long gigs
Аноним 28/03/17 Втр 19:59:54  962537
>>962528
Рофл size_t это саный int чем же считать память??
Аноним 28/03/17 Втр 20:00:45  962538
>>962537
>size_t это саный int
штобля
Аноним 28/03/17 Втр 20:01:31  962540
>>962538
Он второй тред уже срет своими гигабайтами, которые у него не выделяются.
Аноним 28/03/17 Втр 20:03:39  962542
sizet.jpg (61Кб, 339x309)
>>962538
Пик
>>962540
Я разобрался, кароче когда пофиксил число и оно стало не ноль выяснилось что винда тратит половину свободного места в никуда, я в итоге выделил но меньше.
Аноним 28/03/17 Втр 20:10:48  962547
>>962542
Если у тебя size_t - unsigned int, значит у тебя 32-битная система, и выделить 8 гигов ты не можешь никак. И в закомментированной строчке на пике у тебя именно 8 гигов, а не 1. Память мы считаем в байтах, а не в битах.
Аноним 28/03/17 Втр 20:13:51  962549
>>962547
Это я понял, но я также слышал что-то про pae и я не врубаю что это тогда если с ним всё равно ничё нельзя на 32битной
Аноним 28/03/17 Втр 20:25:57  962561
>>962549
Я тебе уже пояснял за PAE (в винде это AWE). Выделяешь кусок адресного пространства, сколько не жалко - это "окно", и когда тебе нужно что-то положить в память или прочитать, просишь систему в это "окно" показать кусок оперативки. Выделить так можно более 4 Гб, но видно одновременно будет только столько, сколько размер твоего окна. Т.е., при желании ты можешь несжатую картинку 65536655364 байта (16 гигов) положить в память, но не можешь без дополнительных телодвижений обращаться к рандомному пикселу внутри нее. В 64-битной системе ты можешь делать банально bitmap[y * width + x]), а с PAE ты сосешь хуй: чтобы что-то прочитать или записать, тебе придется "отобразить" регион, содержащий пиксел в твое "окно", и потом внутри этого окна с пикселами работать, по необходимости сдвигая окно (т.е., отображая на него различные страницы физической памяти). Гугли AllocateUserPhysicalPages/MapUserPhysicalPages, только нахуя тебе это надо - непонятно.
Аноним 28/03/17 Втр 20:26:25  962563
>>962549
причём тут язык c?

ты не как не можешь иметь на 32битной машине больше адресов чем 4к. это по стандарту невозможно.

не знаю как работали всякие виндовс сервисы - наверно также, на один процесс 4к адресов, просто сумма реальных больше.
Аноним 28/03/17 Втр 20:31:14  962570
>>962561
вот интересно, в компиляторах нет таких расширений?
Аноним 28/03/17 Втр 20:33:34  962574
>>962570
В компиляторах Си они нахуй не нужны. Это достаточно низкоуровневый язык, чтобы извращениями занимался не компилятор втихомолку, а ты сам и явно. У тебя задача-то какая? Почему ты не можешь воткнуть 64-битную систему, если есть потребность в огромном адресном пространстве?
Аноним 28/03/17 Втр 20:35:12  962577
>>962574
я не он. просто подумал что это же реально эмулировать.
Аноним 28/03/17 Втр 20:37:49  962579
>>962577
хотя нет, как же тогда системные библиотеки с их типами. да, это уже вопрос ос а не компилятора, наверно.
Аноним 28/03/17 Втр 20:41:24  962585
>>962577
Смысла нет. Это был переходный механизм, когда 64-битные наборы инструкций еще не существовали (или были мало распространены), а возможность воткнуть более 4 Гб уже была. Да и юзкейсов, когда тебе нужно, много гигов на один процесс, не так уж много. Гораздо чаще хочется иметь много гигов для разных процессов - вот эту задачу PAE, в общем-то, и решает.
Аноним 28/03/17 Втр 20:48:00  962591
>>962549
>я также слышал что-то про pae
Сходи посмотри на расшифровку это аббревиатуры, довен.
Аноним 28/03/17 Втр 21:23:56  962625
Господа, вопрос скорее даже не по С, а по линкусу и сетям.
Пытаюсь сделать через raw-сокеты отправку пакетов с спуфом ип-адреса источника. Трабла в том, что софт запускается на роутере с включенным NAT и этот NAT заменяет в отправляемых пакетах любой адрес источника на внешний ип-адрес роутера, т.е. спуф идет по пизде.
Если ли способ может через установку какой-либо опции для сокета или может твик ядра линукса через /proc/sys/net/ipv4/ или еще как-то заставить блядский NAT не подменять адрес источника в пакетах, которые были сгенерированы на самом роутере?
Аноним 29/03/17 Срд 15:09:10  963023
>>961896
А число без scanf как считать?
Аноним 29/03/17 Срд 15:14:02  963027
>>963023
Тебя ебёт это, что ли?
Аноним 29/03/17 Срд 16:06:22  963071
>>963023
getchar() считывает символы, число можно собрать по цифрам
Аноним 29/03/17 Срд 17:24:51  963141
Аноны, тут такое дело, курсач нужно запилить, исходные условия: "шоб использовал С/с++ и шоб с базами данных, ну и не совсем простое.
Таки вопрос:
Что б такого написать? не совсем нуб, но и сверхъестественное не надо, сроки как-никак. Думаю что-то типа библиотеки замутить, но выглядить слишком просто.
Dmitry 29/03/17 Срд 18:55:57  963195
>>963141
sqlite+C
Слелай телефонную книку
Аноним 29/03/17 Срд 20:03:49  963229
>>963195
Как усложнить можно?
P.s. Спасибо)
Аноним 29/03/17 Срд 20:09:23  963233
>>963229
Учет доходов и расходов семейного бюджета?
Аноним 29/03/17 Срд 20:16:24  963238
>>963233
О.о
Ладно, енижка так книжка.
Dmitry 29/03/17 Срд 20:18:24  963240
>>963238
Усложни, один человек может иметь несколько номеров.
Dmitry 29/03/17 Срд 20:19:06  963242
>>963238
Можешь еще мыльце или вк добавить к записям.
Аноним 29/03/17 Срд 21:07:16  963275
>>963240
Окай, спасибо за идеи, няш :3
Аноним 30/03/17 Чтв 13:34:55  963574
7.png (7Кб, 499x264)
>>959643 (OP)
Как после каждого занесения элемента в массив увеличить a на один, а потом вывести эту a в консоль, ничего не работает, выводиться всегда ноль.
Аноним 30/03/17 Чтв 13:39:53  963575
>>963574
Самый глубокий цикл не выполняется ни разу скорее всего.
Аноним 30/03/17 Чтв 13:43:44  963577
>>963575
Вся функция работает правильно, мне нужно только посчитать a и b.
Аноним 30/03/17 Чтв 13:44:47  963579
>>963577
А где ты "а" в консоль выводишь?
Аноним 30/03/17 Чтв 13:46:50  963580
>>963579
Ну не стал весь код кидать.
Через printf("%d",a);
Возможно в выводе ошибка, первый раз с функцией работаю
Аноним 30/03/17 Чтв 13:47:49  963582
>>963580
Вывод в теле функции происходит?
Аноним 30/03/17 Чтв 13:49:19  963585
7.png (20Кб, 843x599)
>>963582
Аноним 30/03/17 Чтв 13:50:46  963587
>>963585
Они же у тебя локальные. Ты выводишь какие-то другие "а" и "b"
Аноним 30/03/17 Чтв 13:51:55  963588
>>963585
А как вывести? Ну ту a которая в функции считается?
Аноним 30/03/17 Чтв 13:52:49  963589
>>963588
В конце функции написать вывод, либо сделать функцию, возвращающую значение
Аноним 30/03/17 Чтв 13:59:17  963595
1.png (11Кб, 724x299)
>>963589
Спасибо, анон, что-то не дошло, что проблема в выводе
Аноним 30/03/17 Чтв 20:11:17  963797
123.PNG (45Кб, 1050x458)
Ребятки,имеется массив 4х4, нужно найти минимальный элемент среди положительных ниже главной диагонали, подскажите как это сделать пожалуйста. Пока что вот что имею.
Там дальше два счетчика для i и j должно быть как я понимаю,потом if(i<j),дальше без понятия как действовать.
Аноним 30/03/17 Чтв 20:14:21  963799
>>963797
Привет, лабодаун. Разевай ротешник, будем в него ссать всем тредом.
Аноним 30/03/17 Чтв 21:22:46  963866
>>963799
А, это у вас тут такие правила , я понял. Больше не буду значит тут помощи просить. А в ротешник сам себе нассы ,дядя.
Аноним 30/03/17 Чтв 21:54:52  963887
>>963797
>дальше без понятия как действовать.
учись маршироавать
Аноним 31/03/17 Птн 04:06:28  964021
Ужас тут что одни школьники сидят?
Аноним 31/03/17 Птн 12:59:08  964143
>>964021
Вообще нет, походу дохуя в крестотред перебралось.
Аноним 31/03/17 Птн 14:55:17  964248
Задался вопросом, а как обычно нормальные люди реализуют так сказать динамическое создание указателя. К примеру есть у меня список односвязный, указатель на голову я создаю в мейне или делаю глобальным. Ну и заполняю список и работаю с ним. А если понадобится еще один список? Получается нужна отдельная функция создающая указатель, потом этот указатель таскать за собой везде и нигде не потерять. Или нужно сразу создавать динамический массив указателей?
Аноним 31/03/17 Птн 15:09:24  964263
>>964248
Делай массив, указатели не забывай освобождать.
Конечно лучше все на перед статически инициализировать.
Аноним 31/03/17 Птн 19:24:19  964432
>>964263
Спасибо
Аноним 31/03/17 Птн 20:02:19  964457
>>959643 (OP)
Ньюфаг ворвался в тред.Собираюсь начинать.Как настроить чертов visual studio под C?
Аноним 31/03/17 Птн 20:05:43  964459
>>964457
Ставь vim
Аноним 31/03/17 Птн 20:08:32  964461
>>964459
вместо visual studio?
Аноним 31/03/17 Птн 20:09:03  964462
>>964461
Да.
Аноним 31/03/17 Птн 20:10:24  964463
>>964462
спасибо,антон
Аноним 31/03/17 Птн 20:26:24  964471
>>964457
Никак, ничего настраивать не нужно. Ставишь Visual Studio, создаешь пустой C++-проект, добавляешь новый файл, сохраняешь как .c.
Аноним 01/04/17 Суб 04:43:08  964631
В Си есть что-то вроде "static typedef int myint;"? Не хочу, чтобы этот тайпдеф вылезал за пределы .h файла.
Аноним 01/04/17 Суб 04:55:49  964632
>>964631
Нет и не может быть. Препроцессор, встречая #include, просто заменяет эту директиву на указанный в ней файл, поэтому для компилятора "пределов .h файла" просто не существует, существует только единица компиляции, а уж из чего ее препроцессор собрал, компилятору насрать.
Аноним 01/04/17 Суб 05:01:07  964633
>>964632
Бля, и с функциями та же хуйня. А я почему-то думал, что static функция за пределы своего файла не выползает. Пизда.
Аноним 01/04/17 Суб 05:04:53  964634
>>964633
static-функция не выползает за пределы юнита. Если ты пишешь header-only либу, то во-первых, сделай дефайн, чтобы различать включение для деклараций (многократно в проекте) и включение для реализации (однократно, с дефайном), а во-вторых, используй неймспейсы для бедных - добавь уникальный префикс или суффикс ко всем используемым символам. MyYobaLiba_ вполне подойдет. И похуй, что там будет торчать после этого.
Аноним 01/04/17 Суб 05:16:40  964636
>>964634
Да я наверно просто от .h-only откажусь, так логичнее будет.
Это нужно будет создать .h файл с хедерами функций либы, скомпилять сошку "gcc -shared -o lib.so -fPIC lib.h", и для использования моей либы придётся просто инклюдить .h файл и компилять с -Llib.so, я правильно понимаю? Ни разу так не делал, всегда .h файлами обходился.Тайпдефов либы тоже видно не будет?
Аноним 01/04/17 Суб 16:29:51  964897
>>964636
Header-only место в аду. Ты ведь не набиваешь параметры компиляции в командной строке руками, ведь правда?
Аноним 01/04/17 Суб 21:03:58  965041
такс такс, пивасик есть, осталось решить, за кого болеть то?
Аноним 01/04/17 Суб 21:04:42  965042
это я не вам. лаба-петухи.
Аноним 01/04/17 Суб 23:44:57  965153
>>959643 (OP)
Собрал на visual studio проект.Поменял разрешение в c..Запустил через конфигурацию решения release.Пишет.что не удаётся найти указанный файл
Аноним 02/04/17 Вск 01:00:21  965200
>>965153
Антивирусы есть? Какая студия? С нуля ставил? Есть ли файл на диске? Есть ли русские буквы в пути?
Аноним 02/04/17 Вск 01:01:34  965202
Проверь, что у тебя рантайм нужный стоит. Он ставится автоматически, но мало ли. Скачай dependency walker, посмотри какие .dll получившийся .exe хочет.
Аноним 02/04/17 Вск 01:03:02  965204
>>965153
Ану-ка попробуй собрать в Fedora GNU/Linux
Аноним 02/04/17 Вск 01:11:27  965207
>>965153
Спермопроблемы-спермопроблемушки
Аноним 02/04/17 Вск 04:17:38  965235
мда, уровень тредика падает на глазах, местные уже не могут скомпилировать программу и не знают что такое точки компиляции.
Аноним 02/04/17 Вск 05:29:49  965236
>>964897
> Ты ведь не набиваешь параметры компиляции в командной строке руками, ведь правда?
Вчера осваивал Makefile, было больно.

Прошу немного пояснить мне за либы. В моей либе есть структуры, много структур. И, допустим, мне нужно, чтобы пользователь либы мог работать с одной из них, например со структурой "type". Если я просто слинкуюсь с либой и начну использовать эту стуктуру как тип, то компилятор ругнётся. В структуре много вложенных структур, например "type->str", но в .h файле либы, который я создал во избежания еггогов просто написано:
typedef struct {
void *str; // Хотя в либе это большая структура
} type;

При таком варианте можно обратится к элементам структуры "type->str"? Сам проверить сейчас не могу, да и долго это, ответь же ты, тредик.

> Header-only место в аду.
Вот ты так говоришь, а пока от необходимости делать отдельную библиотеку я испытываю одни неудобства. Как минимум всё переусложнено.

Может кто доставить, так скажем, туториал о оформлении своей библиотеки? Вчера искал, не нашёл.
Аноним 02/04/17 Вск 07:35:31  965243
>>965235
это не местные, это залётные
Аноним 02/04/17 Вск 09:15:40  965248
>>964631
>тайпдеф
>вылезал за пределы .h файла
че ты высрал, как ты этим пользоваться будешь тогда
Аноним 02/04/17 Вск 09:17:11  965249
Стикер (0Кб, 320x320)
>>965236
>туториал о оформлении своей библиотеки
man so
Аноним 02/04/17 Вск 09:18:30  965251
>>965249
Стикероблядок, съеби. Мне нужны общие принципы а не технические подробности.
Аноним 02/04/17 Вск 09:19:56  965252
Стикер (255Кб, 512x512)
>>965251
>общие принципы
man shared library
Аноним 02/04/17 Вск 09:23:13  965253
>>965252
Пиздец, чего только обезьяна не надобавляла в эту анонимную социалочку. Пойду лучше на возрождённую мяту. Сажи этой помойке.
Аноним 02/04/17 Вск 09:26:02  965254
>>965253
Да-да, пиздуй на свой парашный 0-чан, вкатывальщикю Там тебе будут радынет.
Аноним 02/04/17 Вск 11:55:18  965307
>>959643 (OP)
Какая же годнота С, по сравнению с жавоскриптом.
Сейчас дочитываю первую книгу, с синтаксисом разобрался, подскажите что можно написать на С?
Аноним 02/04/17 Вск 12:00:43  965310
>>965307
Сегфолт
Аноним 02/04/17 Вск 12:02:48  965311
>>965307

Ядро линукса
Аноним 02/04/17 Вск 12:03:04  965312
>>965307
> подскажите что можно написать на С?

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


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

Аноним 02/04/17 Вск 12:14:44  965329
>>965312
>сложные хуитки
>хуки
Школьник, плес.
Аноним 02/04/17 Вск 12:17:14  965331
>>965329

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

>хуки

в usermode довольно сложно реализовать правильные Inline хуки, т.к требуется дизассемблер длинны функций, иначе можно испортить все.
Аноним 02/04/17 Вск 12:21:18  965334
>>965331
Системное программирование немногим сложнее веб-параши.
Вот такую штуку:
https://ru.wikipedia.org/wiki/Apache_Spark
на Си не напишешь.
Аноним 02/04/17 Вск 12:28:51  965340
>>965334
>Системное программирование немногим сложнее веб-параши

Найс манямирок
Аноним 02/04/17 Вск 12:44:04  965356
>>965312
В том то и дело, что это совсем другой мир.
Тут уже залетный из жс отписался, но как по мне, веб быстро надоедает. Даже несмотря на "обилие" языков, по сути все одно и тоже. А фронт-енд это такая хня, что лучше туда не лезть вообще. И дело не в сложности, как раз сложного там мало, но все приедается быстро.
Поэтому и пал выбор на С.
Аноним 02/04/17 Вск 13:00:25  965362
>>965340
манямирок тупых байтоебов, не знающих алгоритмов и J-нотации и считающих, что выучить набор инструкций процессора сложнее, чем набор классов и методов в веб-фреймворке
Аноним 02/04/17 Вск 13:00:46  965363
>>965340
манямирок тупых байтоебов, не знающих алгоритмов и O-нотации и считающих, что выучить набор инструкций процессора сложнее, чем набор классов и методов в веб-фреймворке
Аноним 02/04/17 Вск 13:03:04  965368
>>965363
>>965362

Лол
Аноним 02/04/17 Вск 13:10:06  965373
Байтоёбство включает в себя:
1. Императивный стиль программирования как начало байтоёбского пути.
2. Дрочка на машинно-ориентированные типы данных (собственно, основной симптом байтоёбства) и последующее за ней закономерное возмездие байтомудакам в виде big endian vs. little-endian, особенности обработки чисел с плавающей точкой и.т.д.
3. Предтерминальные стадии байтоёбства - интринсикоёбство и его более тяжёлая форма - инлайн-ассемблероёбство. Подсадка начинается с убеждённости поциента в необходимости ручками использовать SIMD -инструкции.
4. Терминальная стадия, как итог п.3, тру-ассемблероёбство и "хроническая низкоуровневая оптимизация головного мозга"
Аноним 02/04/17 Вск 13:10:36  965375
В нашем мире, к счастью, подобные симптомы с распространением java, C# и прочей "замещающей терапии" встречаются реже, однако остались две отрасли, входящие в зону риска:
1. Гейдев. Байтоёбство в гейдеве берёт своё начало в 70х-80х, поскольку именно тогда зародилась традиция байтоёбства в геймдеве. Обязаны этим, в основном, восьмибитным соснолям и домашним компьютерам, которые, обладая малым объёмом ОЗУ и имея скудные средства программирования, требовали делать на них ёба-игры. Эта традиция продолжилась и далее, всё благодаря тем же консолям, на которых консолерабы должны были выпускать игры 5 лет, задрачивая их убогие байтоёбские архитектуры по полной. К сожалению, подобная практика перешла и на ПК, где байтоёбство, в общем-то не так оправдано. К слову байтоёбам-игроделам дали шанс выбраться из этой трясины в 2002 году, когда майкрософт запилила дуднет и менеджед дайректикс к нему. Но байтоёбы остались верны своим указателям, плюсам и байтоёбской оптимизации. Зашоренность, верность привычкам, безыдейность, десу.
2. Эмбеддед. Причины почти всё те же, что и в гейдеве. Маломощное железо, пара сотен байт озу, деревянные игрушки, прибитые к полу и.т.д. К этому прибавляется огромное количество разных железок разномастных архитектур, для которых нет толковых тулчейнов. Из хорошего - в последние годы байтоёбство в этой сфере потихоньку излечивается, спасибо дядям из ARM co ltd, сделавшим свою архитектуру более менее распространённым стандартом среди всех архитектур и огромному количеству появившихся фреймворков и компиляторов языков для этой платформы.
Аноним 02/04/17 Вск 13:11:15  965376
Так же распространено ложное утверждение что байтоёбство крайне необходимо в системном программировании. На самом деле этого легко избежать. Рассмотрим среднестатистическую аппаратную платформу. Краеугольными камнями любой аппаратной платформы являются:

1. Процессорная архитектура
2. Memory map - адресное пространство, в которое отображаются RAM, ROM и внешние устройства
3. Протоколы управления этими самыми внешними устройствами.

Так вот, всё вышеперечисленное вполне можно вполне декларативно описать обычным конфигурационным файлом, не прибегая к программированию вовсе. Затем, скормить этот файл генератору платформ и на выходе получить готовый фреймворк-скелет нашей операционной системы, доступ к которому можно получить из любого языка программирования. Вот так вот просто, если бы байтоёбство гологного моска не мешало.
Аноним 02/04/17 Вск 14:01:11  965411
Чувствую себя дауном. Тут всякие системеные штуки делают, а мой уровень - Laba_1 и кривой консольный тетрис.
Аноним 02/04/17 Вск 14:17:21  965419
>>965376
так зделой, кукуретик хуев
Аноним 02/04/17 Вск 14:21:32  965425
>>965419
Это слишком просто для него, его ждёт смуззи и очередной круд.
Аноним 02/04/17 Вск 14:49:43  965438
>>965411
Все с чего-то начинали.
Аноним 02/04/17 Вск 16:03:52  965481
>>965373
>>965375
>>965376
Господи, какая же ссанина. Кучка терминов в ничего не означающем словесном поносе.
Аноним 02/04/17 Вск 16:54:02  965510
>>965373
>>965375
>>965376
ты забыл начало:

Машина должна и будет служить людям, она не шлюха, чтобы люди исполняли её прихоти. Отсюда ба йтобляди (а так же сочувствующие им императивные пидорасы, надрачивающие на показатели clock() - start) - пиздолисы, которые опускаются до полного говноедства, лишь бы ублажить её регистры и микросхемы.
Альфапрограммисты, как и положено альфам, если машина не выполняет положенных ей задач и требует пресмыкаться перед ней и ублажать её байтами, просто берут и за патчкорды, ебашат с вертушки по передней панели и списывают машину на мороз, купив взамен ту, которая не будет выёбываться и выполнит код в сроки и без выебонов, будь там хоть 1000% неоптимизированного оверхеда. И настоящего программиста не волнуют вопросы выдрачивания и быстродействия - он решает важную задачу из предметной области гораздо более сложной, чем низкоуровневое дрочево, и отвлекаться на всякую подзалупную хуету вроде осоьбеннойстей какой-то там архитектуры ему некомильфо.
Байтоёбство включает в себя:
Аноним 02/04/17 Вск 18:00:11  965555
>>965419
> так зделой
На самом деле некоторые шаги в этом направлении есть. То же FDT, например.
Аноним 02/04/17 Вск 19:22:01  965600
>>965555
некоторы шаги есть в любом направление. высер того анона напоминает кукарекание петухатиков где у них есть еба теории в которых все заебись но на практике абсолютно не реализуемы да и оторваны от реальности
Dmitry 02/04/17 Вск 23:29:44  965741
>>965307
Портируй на Vulkan и Wayland самую лучшую в мире читалку - mupdf
Аноним 02/04/17 Вск 23:37:15  965748
Нету желающих сервер в SAMP на Pawn поковырять по фану?
Dmitry 02/04/17 Вск 23:55:39  965764
>>965748
Есть
Аноним 03/04/17 Пнд 00:02:15  965769
Аноны, я тот аноны который после веб макакинга начал изучать С.
Очень нравится язык, наскачивал книг, одну уже осилил для нубов, одну даже планирую купить, очень охуенно там все разложено, плюс примеры интересные.
Но вопрос такой: есть ли с С работа? Например со знанием пхп/жс ее порядочно, даже выбирать можно. Что вообще пишут на С? Только драйвера и ядро линукса? Что еще параллельно подтягивать вместе с самим языком?
Аноним 03/04/17 Пнд 00:59:41  965810
>>965769
У нас в основном на С пишут что-то связанное с железом. Не сколько драйвера, сколько прошивки микроконтроллеров. Но в этой отрасли зп ниже, чем в веб.

А крутые чуваки, да, пишут всякие СУБД, Highload-бекенды и подобное. Но это в долине
Аноним 03/04/17 Пнд 02:13:04  965829
>>965769
Писать на нем можно то-же что и на плюсах пишут.
Аноним 03/04/17 Пнд 02:18:19  965831
>>965769
Если ты PHP-шник.
То знание C выводит тебя на новый уровень знания того-же PHP и сервера.
ТЫ можешь сам писать патчи и расширения к языку.
Аноним 03/04/17 Пнд 02:28:50  965832
>>965769
нет
Аноним 03/04/17 Пнд 11:52:16  965915
>>965769
Какую книгу собираешься купить?
Аноним 03/04/17 Пнд 15:15:01  966040
vvod-vivod.jpg (40Кб, 387x312)
Помогите разобраться с вводом-выводом.
Есть 2 файла: данные и результат.
хочу считать данные с одного тхт файла и чтобы результат был напечатан в другом.
Аноним 03/04/17 Пнд 15:16:20  966044
>>966040
>>963799
Аноним 03/04/17 Пнд 16:13:38  966065
>>966040
На fprintf() посмотри.
Аноним 04/04/17 Втр 06:05:18  966469
Screenshot2017-[...].png (212Кб, 1080x1920)
>>966040
Погугли немного.
Аноним 04/04/17 Втр 08:24:02  966484
Я новичок.
Поставил Clang.

Пишу:
clang hello.c

А он мне:
hello.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~~~~~
1 error generated.

Как сделать, чтобы работало?
Аноним 04/04/17 Втр 08:24:57  966485
>>966484
А вот код из CS50:
#include <stdio.h>

int main(void)
{
printf("hello,world\n");
}
Аноним 04/04/17 Втр 08:43:21  966488
>>966484
https://clang.llvm.org/docs/FAQ.html
Аноним 04/04/17 Втр 08:44:18  966489
>>966488
я читал, но всё равно не понял что делать
Аноним 04/04/17 Втр 08:52:04  966490
>>966488
и зачем мне опция "только фронтенд"?
Аноним 04/04/17 Втр 09:03:29  966493
Кланг не работает без сторонних библиотек что ли? Тогда нахрен я это говно вообще ставил :(
Аноним 04/04/17 Втр 09:31:00  966497
>>966490
>>966493
>>966489
Чето в голос
Сделать форк репозитория ллвм и самому собрать компилятор религия не позволяет?
Аноним 04/04/17 Втр 10:03:55  966507
>>966484
>Поставил Clang.
Юзай cmake, а там через env уже легко компилятор настроить, чтобы он генерил правила сборки без гемора.
Аноним 04/04/17 Втр 10:12:39  966511
>>965769
>Что вообще пишут на С?
Практически все. Модули ядра для разных осей, реалтайм ос, гуишный софт, веб серверы, плагины для веб серверов, базы данных, интерпретаторы (хотя тут и на C++ благодаря темплейтам с генериками наркоманы любят обмазываться и грамматики разбирать), компиляторы, проще сказать что на С не пишут.
Аноним 04/04/17 Втр 10:29:21  966519
Решил вкатиться в это ваше програмирование на с++. Какие мануалы и литературы курить полному ньюфагу?
Аноним 04/04/17 Втр 13:25:48  966599
>>966519 >>961839 (OP)
Аноним 04/04/17 Втр 14:51:48  966634
Всем привет. Вкатываюсь с таким вопросом. Вывожу в файл содержимое массива структур. При выводе в файл куча приписок, меток, форматирований непосредственно для более упрощенного восприятия человеком. Очень старался запарился, но прилетела задача - обратно такой файл грузить в программу и работать с данными. Другого варианта кроме как скурпулезного считывания нету?
Аноним 04/04/17 Втр 16:23:42  966677
>>966634
>Другого варианта кроме как скурпулезного считывания нету?
json/xml де/сериализация
Аноним 04/04/17 Втр 17:07:33  966703
>>966634
>>966677
yaml еще.
И да, изобретать велосипед не стоит, хранение данных это хранение данных, а генерация отчета для человеков это генерация отчета.
Dmitry 04/04/17 Втр 19:19:59  966782
>>966634
Для машины файл ничего лишнего содержать не должен, а отчеты отдельно генерируй.
Аноним 04/04/17 Втр 20:07:30  966830
>>959643 (OP)
Анон, подскажи.
Почему в топовых вакансиях (с/с++) требуется знания си?
Я понимаю, что си - фундаментальный язык, очень приближен к работе с железом. Но, разве все то, что используется в си, используется в с++. Если не брать в расчет базовые вещи вроде типов данных, циклов и т.д.?
Аноним 04/04/17 Втр 20:27:45  966854
>>966830
По большей части кресты - это надмножество си. Соответственно, зная кресты, ты можешь кое-как писать на си. И тебе может понадобиться использовать или исправить сишную либу, например.
Аноним 04/04/17 Втр 20:33:07  966859
>>966854
Знания си помогают в работе с плюсами?
Аноним 04/04/17 Втр 20:41:56  966865
>>966859
Со знанием си кресты учатся быстрее (ну или си со знанием крестов). Знания си мешают писать в "крестовом стиле" на первых порах - получается то, что называется "си с классами". С опытом проходит.
Аноним 04/04/17 Втр 20:50:22  966876
Можно ли как-то по бинарнику узнать для какой ОС и под какую архитектуру он был скомпилирован? Точнее, можно ли узнать calling convention(используя иду, или другой дизасемблер)? т.е. хранится ли где-то какая-нибудь метаинформация и тд

Варик просматривать дизасемблированные листинги и гадать - не оч
Аноним 04/04/17 Втр 20:58:47  966884
>>966876
Тут есть отдельный тред >>960640 (OP)

> Можно ли как-то по бинарнику узнать для какой ОС и под какую архитектуру он был скомпилирован
Да, можно. readelf/objdump/dumpbin/различные PE-редакторы. В целом зависит от формата бинарника.

> можно ли узнать calling convention
Нет. Если явно не указать calling convention, современные компиляторы могут менять ее от функции к функции и от билда к билду, передавая аргументы в разных регистрах, выкидывая неиспользуемые аргументы нахуй и т. д. Если было явно указано при компиляции - можешь посмотреть дизасм, это не гадание, там все очевидно после двух-трех функций. Иногда из бинарника торчат декорированные экспорты (или есть отладочная инфа, например), тогда в там кодируется и конвенция.
Аноним 04/04/17 Втр 21:50:56  966915
Обсуждаем грядущий блевотный синтаксис атрибутов, бугуртим от slice-нотации, которую пытаются притащить из питона, гадаем, будут ли замыкания:
https://developers.redhat.com/blog/2017/02/01/october-2016-iso-c-meeting-report/
Аноним 04/04/17 Втр 22:01:16  966921
>>966884
Мне надо знать calling convention чтобы собственно и определять аргументы функции. Причем не заглядывать самому каждый раз в бинарь, а написать такой парсер, который будет говорить где лежат параметры(т.е. названия регистров или смещение в стеке) для каждой функции. Такое вообще можно реализовать?
Аноним 04/04/17 Втр 22:16:35  966940
>>966921
Ну смотри, для x86 у тебя есть: регистры, стек, fpu/sse для floating point. Это на вход. На выход у тебя могут быть eax, edx:eax, fpu/sse, стек (для структур). Все это компилятор может смешивать в любых пропорциях. По-хорошему это "решается" написанием dataflow-анализатора, причем анализом одной функции не обойдешься (foo: add ecx, 20 ; jmp bar - какие аргументы у foo?), причем анализ все равно будет изредка лажать, как бы ты не изъебывался. Если тебе только thiscall/fastcall/cdecl/stdcall различать - тогда анализ проще, процент успеха выше (но не 100% - IDA постоянно лажает), можно использовать всякие эвристики (обращение к ecx без инициализации для thiscall/fastcall, retn N для stdcall, add esp после вызова для cdecl и т. д.). В общем и целом, проще всего взять IDA, пусть она проанализирует, потом сдампить тайпинфо скриптом, а при возникающих проблемах смотреть и руками править.
повтор строк в файле -strcmp? Аноним 04/04/17 Втр 22:44:30  966962
есть файл >100мб, в каждой строке 1 слово, как найти повторяющиеся строки=слова? Сделал через strcmp - каждое слово прогоняю через весь файл в поиске повтора.... в итоге 5Gb надо обработать, чет. как-то долго выходит )) Как ускорить?
Аноним 04/04/17 Втр 22:55:51  966972
>>966962
В хэш-таблицу загони.
Аноним 04/04/17 Втр 23:55:14  967036
>>966972
хеши тоже ведь проверять надо?
>>966962
Закинь сразу весь файл в оперативку.
Не перепроверяй то что уже проверил, а какой результат программы должен быть вообще?
Аноним 04/04/17 Втр 23:55:34  967037
>>966940
>проще всего взять IDA, пусть она проанализирует
Так а как это сделать? Собственно я и хотел писать парсер, ибо в иде такой функции не нашел
Легкий гуглеж говорит, что это можно провернуть, если пользоваться другим декомпилятором от хексрейз. Но мне бы именно в иде
Аноним 04/04/17 Втр 23:56:23  967040
хочу выучить свифт, я туда попал?
Аноним 05/04/17 Срд 00:10:13  967051
>>967040
Иди в ваш загон, он тонет.
Аноним 05/04/17 Срд 01:29:02  967083
>>967037
Ну начни с чего-то типа:
import idaapi
import idautils

for ea in Functions():
ti = idaapi.tinfo_t()
if not idaapi.get_tinfo2(ea, ti) and not idaapi.guess_tinfo2(ea, ti):
print('%.8x: <error>' % (ea))
else:
print('%.8x: %s' % (ea, ti.dstr()))

Посмотри на idaapi.guess_func_cc(), посмотри на idaapi.tinfo_t(). Документация говно, но на гитхабе встречаются чужие реализации, где можно подсмотреть, как с этим всем работать.

И вообще иди-ка ты в тред по реверсингу, тут у нас няшная сишечка.
Аноним 05/04/17 Срд 01:29:45  967084
>>967083
Блядский питон, блядская макака! Пробелы сам расставишь.
Аноним 05/04/17 Срд 08:10:16  967123
У меня есть typedef struct { ... } type;
Можно считать нормальным стилем ещё одно декларирование этого типа в виде:
typedef type type;
?
Никаких подводных камней нет?
Для наглядности хочу собрать все типы в одном месте и прокомментировать их.
Аноним 05/04/17 Срд 09:46:41  967134
>>967123
Абсолютно нормально. На таком декларировании в заголовочниках в glib например описание объекта строится.
Аноним 05/04/17 Срд 11:47:20  967185
>>966962
на поиск дубликатов наверное есть с десяток оптимизированных алгоритмов (по потреблению памяти, по быстродействию, в общем, на выбор)
так сложно это загуглить...
967036 05/04/17 Срд 13:10:23  967229
результат файл без повторов
Аноним 05/04/17 Срд 13:11:48  967230
>>967036
результат файл без повторов
Аноним 05/04/17 Срд 13:41:07  967254
>>967185
потом еще утилитка uniq есть в coreutils..
те если это не учебная программка, а реальная потребность то проще ей воспользоватся
Аноним 06/04/17 Чтв 14:01:41  968047
Сап такой вопрос. А указатели на функции это нормально? За такое не бьют ногами? Я вообще новенький разбираюсь со структурами данных. Решил для себя написать, как раз и разберусь лучше. И в процессе возникла такая идея.
Возьмем список. Есть структура для узла и есть структура содержащая голову и хвост нашего списка, ну и количество элементов. В структуру с головой я решил засунуть указатели на функции для работы со списком.
Т.е. по итогу я хочу получить своего рода инкапсуляцию. Все что по итогу нужно для работы будет уже в структуре. Создали, вызвали функцию инициализации ну и работаем со списком в свое удовольствие, все методы сразу видны, на первый взгляд удобно, но нигде такого раньше не видел.
Аноним 06/04/17 Чтв 14:03:21  968049
>>968047
Указатели на функции в структуре . Для работы с этой же структурой
Аноним 06/04/17 Чтв 14:05:35  968051
А зачем? Зачем хранить константу в структуре? Указатели же не меняются.
Аноним 06/04/17 Чтв 14:34:05  968070
>>968047
> нигде такого раньше не видел
цпп?
Аноним 06/04/17 Чтв 14:39:54  968075
>>968047
Да. В Linux Kernel вообще повсеместно используется.
Аноним 06/04/17 Чтв 14:46:45  968080
>>968051
"Эмуляция" пространства имен, ну и для удобства.
Аноним 06/04/17 Чтв 14:59:37  968093
>>968070
Не видел в чистом си.
Аноним 06/04/17 Чтв 15:06:17  968098
>>968047
Более чем ок, если понимаешь, что делаешь.
Аноним 06/04/17 Чтв 17:28:50  968223
С чего начать изучение C#?
Где брать задачи?

навыки уровня первокурсника есть в чистом си
на с# написал прогу, которая авторизовывалась в вк в отдельном окошке, причем сам нихуя не понял ничего
Аноним 06/04/17 Чтв 17:56:06  968233
>>968075
лол
ну уж никак для структур данных типа списков
Аноним 06/04/17 Чтв 19:19:47  968274
>>968070
В цпп только виртуальные функции лежат в таблицах, и даже их современные компиляторы стараются девиртуализовывать.

>>968233
Есть случаи, когда хранение указателей на функции в списках вполне оправдано. Например, у тебя список разнородных сущностей, может быть хорошим решением хранить указатели на деструкторы в элементах, а не делать гигантский свитч при удалении.
Аноним 06/04/17 Чтв 20:06:48  968305
14811466210461.jpg (21Кб, 356x176)
Подскажите гуманитарию в чём проблема. Есть одна функция которая генерирует рандомное число, и в зависимости от результата возвращает строку. Проблема в том что рандомное число генерируется один раз, и при повторных вызовах функции используется оно-же. Гугл не помог.
Аноним 06/04/17 Чтв 20:12:31  968313
>>968305
> Подскажите гуманитарию в чём проблема
В ДНК. Код давай.
Аноним 06/04/17 Чтв 20:23:52  968329
>>968313
https://pastebin.com/qjwbDm0p
И раз уж на то пошло, есть какие-то более лаконичные способы "броска" кубика у которого некоторые грани повторяются?
Аноним 06/04/17 Чтв 20:27:20  968334
https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful

Няшный одноглазик научит тебя православной генерации случайных чисел. На крестах правда, но тебе то небось все равно.
Аноним 06/04/17 Чтв 20:46:08  968354
>>968329
Очевидно, что тебе нужно бросать кубик (вызывать dice()) внутри цикла (после do), а не снаружи. Алсо, random() - это что-то нестандартное. Наверное, ты имел в виду rand()?

> лаконичные способы "броска" кубика у которого некоторые грани повторяются?
Не делать if, сделать lookup. Типа:
#define countof(array) (sizeof(array) / sizeof((array)[0]))
const char ∗results[] = { "foo", "bar", "foo", "baz", "foo" };
int n = rand() % countof(results);
return results[n];

Но как правильно заметил >>968334 вот этот анон, rand() часто реализован очень некачественно, а rand() % n добавляет еще больше неслучайности из-за особенностей реализации LCG PRNG. Можешь так делать, так слегка медленнее и слегка лучше:
// Generates int in range [n1, n2] (inclusive on both sides). n2 must be > n1.
int random_range(int n1, int n2) {
return (int) ((rand() ∗ (1.0 / RAND_MAX)) ∗ (n2 - n1 + 1)) + n1;
}

Если это лаба - просто забей. Если игра, можно спиздить генератор получше.
Аноним 06/04/17 Чтв 21:02:30  968381
>>968354
Внутри цикла... Вот я рукожоп...
Спасибо большое! Видео смотрю уже. Досмотрю и постараюсь сделать всё кошерно.
Да, игра, для себя чисто делаю. Хобби типа.
Аноним 06/04/17 Чтв 21:08:39  968387
>>968381
Я тоже рукожоп. Там должно быть 1.0 / (RAND_MAX + 1), если что.
Аноним 06/04/17 Чтв 22:54:15  968511
Анон, давай поговорим о оформлении кода. Вот скобочки и названия функций. Есть стандарт? Где почитать? Как много людей соблюдают стандарт?
Аноним 06/04/17 Чтв 23:00:45  968530
>>968511
>о оформлении кода
Столько же, сколько соблюдают правила русского языка.
Аноним 06/04/17 Чтв 23:01:37  968532
>>968511
возьми линуксоидный кодстайл и не промахнешься
Аноним 06/04/17 Чтв 23:02:05  968533
>>968511
Вон на днях на хабре очередной высер выложили. Сходи почитай, если хочешь. Ну или на вики. Или у любого крупного опенсорсного проекта есть стайлгайд обычно. Общего стандарта нет, есть разные подходы для разных ситуаций, но в целом похуй, как писать, лишь бы одинаково во всем проекте.
Аноним 06/04/17 Чтв 23:29:29  968546
Господа, возможно ли scanf'ом или подобным прочитать строку вида "abc123", чтобы abc ушло в char[], а 123 в int?
Аноним 06/04/17 Чтв 23:38:25  968551
>>968546
Частично: можно сделать %3s%d и/или %[^0-9]%i, но там куча подводных камней. Лучше делай fgets и разбирай руками.
Аноним 07/04/17 Птн 07:39:57  968608
>>968546
Позволю себе не согласиться с этим >>968551
scanf - отличный парсер
Аноним 07/04/17 Птн 10:13:40  968647
>>968551
>>968608
Тащемта fgets'ом я разбираю файл, а потом построчно ковыряю sscanf'ом.
Просто проблема в том, что строка может иметь вид "[1-ый символьный параметр] [2-ой символьный параметр][числовой параметр]".
И если, к примеру, второй строковый параметр отсутствует, то конструкции типа
>%3s%d и/или %[^0-9]%i
обламываются, ибо проёбывают в том числе и числовой параметр. Хотя решение хорошее, да.
В итоге забил хуй, просто считываю как две строки, а вторую потом ковыряю strtol'ом, вытаскивая число, а остатки уже ковыряю на наличие/отсутствие нужных символов strchr'ом.
В любом случае, не для атомного реактора программу пишу, и так сойдёт.
Dmitry 08/04/17 Суб 07:25:39  969090
GTK4 will be rendered with Vulkan API.
Dmitry 08/04/17 Суб 07:26:24  969091
>>969090
Это победа, гудбай легаси пердолинг.
Аноним 08/04/17 Суб 20:06:52  969452
>>969091
Пиздец, какие ебанаты принимают такие решения?
Аноним 08/04/17 Суб 20:17:40  969456
>>969452
Вот >>969091 такие. Но я еще не читал. Наверняка ведь это опция, ни один долбоеб не будет завязываться на мертворожденный графический апи.
Аноним 08/04/17 Суб 22:26:36  969517
>>969090
>GTK4 will be rendered with Vulkan API.
ебать, они там рисовалку виджетов пилят джватцать лет. они и в 4 версии пытаются натянуть ооп?
Аноним 10/04/17 Пнд 00:47:22  970673
> ни один долбоеб не будет завязываться на мертворожденный графический апи.
Так разрабы GTK и есть долбоебы. Новая версия - новые правила.
Аноним 10/04/17 Пнд 08:31:06  970721
>>969517
>пытаются натянуть
Не осилил glib? ООП там давно уже есть.
>рисовалку виджетов
Что это такое?>>969456
>мертворожденный графический апи
Ну да, сосачерам виднее.
Аноним 10/04/17 Пнд 11:21:19  970771
Пишу на С для STM32.
До этого на С++ писал только в вузе проекты уровня Курсач1. Помню, access violation тогда постоянно сопутствовал на практике.
Как контроллер реагирует на access violation / кривой код? Возможно ли случайно сделать из контроллера кирпич неудачным кодом? Контроллер можно перешивать много раз
Аноним 10/04/17 Пнд 11:27:04  970774
>>970771
Сам по себе контроллер в вакууме - нет. Но он же у тебя куда-то воткнут.
Аноним 10/04/17 Пнд 11:32:45  970776
>>970774
Discovery board с периферией (кнопочки, диод (должен быть), LCD дисплей). Воткнуто через USB к ПК, отладка. Как обычно, основа всего кода - бесконечный цикл. Вот там могут быть проблемы. Пока всё в порядке, но как-то тревожно
Аноним 10/04/17 Пнд 11:38:31  970781
>>970776
Ну диод ты врядли сожжешь, кнопочки тоже обычно не горят.
Аноним 10/04/17 Пнд 18:00:44  970991
>>970721
> ООП там давно уже есть.
надеюсь ты объяснишь почему они не взяли кресты, а сделали все через жопу? ооп на с, кек, долбоебища, структура с кучей ссылок на подпрограммы это типа у них класс, пиздос.
Аноним 10/04/17 Пнд 20:24:07  971133
>>970991
>надеюсь ты объяснишь почему они не взяли кресты
Хотя бы потому что в иксах Си - стандарт.
Хуяришь на Сишке, потом портируешь в свой любимый язычок.

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




Аноним 10/04/17 Пнд 20:47:32  971157
>>970991
> структура с кучей ссылок на подпрограммы это типа у них класс
так в крестах тоже самое почти, лол
>почему они не взяли кресты
кресты говно, да и биндить к другим языкам тяжело, а тут биндинг левой пяткой можно написать, я его для диплома к тиклю прикручивал
Аноним 10/04/17 Пнд 20:49:00  971162
>>970771
> Как контроллер реагирует на access violation
Как любой арм. Будет фолт, будет переход по соответствующему вектору из таблицы.

> Возможно ли случайно сделать из контроллера кирпич неудачным кодом
Нет, там критичный регион залочен, разлочить его случайно невозможно.
Аноним 10/04/17 Пнд 20:50:35  971167
>>971133
> Первые версии твоих крестов, транслировались в сишку.
А сейчас сишка и кресты транслируются в асм. Это повод писать на асме? Всецело двачую идею писать гуи на крестах или еще более высокоуровневых языках.
Аноним 10/04/17 Пнд 20:56:35  971174
>>971167
>Всецело двачую идею писать гуи на крестах или еще более высокоуровневых языках.
Ну, так и делают.
Только сначала пишут ядро на сишке, чтобы работало быстро и легко было портировать на другие яп. На си++ только ничего портировать не надо, все из коробки можно юзать.
Аноним 10/04/17 Пнд 20:58:11  971177
>>971174
Щупал гайку/беос? Там изначально кресты. Попробуй.
Аноним 10/04/17 Пнд 21:07:55  971189
>>971177
>Попробуй
В пезду. Жонглирование дистрибутивами один из видов прокрастинации.

Аноним 10/04/17 Пнд 21:09:56  971194
>>971189
Это не "дистрибутив". Это самостоятельная Unix-like ОС. К сожалению, так и не взлетевшая.
Аноним 10/04/17 Пнд 21:13:38  971198
>>971194
>К сожалению, так и не взлетевшая.
как говорится - рыночек порешал.
Аноним 10/04/17 Пнд 22:05:02  971243
>>971174
>Только сначала пишут ядро на сишке
пруф или пиздун, кьют изначально писался на плюсах. >>971157
>его для диплома
эгсперд ф треде, всем бояцо
>>971167
>Всецело двачую идею писать гуи на крестах или еще более высокоуровневых языках.
я про то, если мыслишь в рамках ооп то и выбор должен быть соответственным, а не как у гномопетухов.
Аноним 10/04/17 Пнд 22:06:57  971246
>>971243
> я щитаю што все должны, так как я себе представляю, куд ах.
нахуй иди.
Аноним 10/04/17 Пнд 22:08:05  971249
>>971243
>соответственным
соответствующем. поправил хуесос
Аноним 10/04/17 Пнд 22:08:33  971250
>>971243
> я про то, если мыслишь в рамках ооп то и выбор должен быть соответственным
Ты путаешь ООП и ээээ.... классы. stdio в сишечке - ООП, куча кода ядра Линукса на сях - ООП. Просто это не классы. Посмотри ссылку в шапке.
Аноним 10/04/17 Пнд 22:13:27  971260
>>971250
>куча кода ядра Линукса
это куча говна, а не ооп
>>971250
>ООП и ээээ.... классы.
кагбы не
>>971250
>stdio в сишечке - ООП
нет
Аноним 10/04/17 Пнд 22:13:55  971261
>>971246
гном, не рвись
Аноним 10/04/17 Пнд 22:34:47  971287
>>971260
> stdio в сишечке - ООП
> нет
Обосновать ты, как я понимаю, не можешь, только обзывать все говном.
Аноним 10/04/17 Пнд 23:02:23  971321
>>971287
>Обосновать ты, как я понимаю, не можешь, только обзывать все говном.
наркоман? или ты файловый хэндлер считаешь объектом класса?
Аноним 10/04/17 Пнд 23:09:47  971333
>>971321
> файловый хэндлер
Аноним 10/04/17 Пнд 23:18:44  971345
hqdefault.jpg (13Кб, 480x360)
>>971333
эгсперд?
Аноним 10/04/17 Пнд 23:19:29  971346
>>971243
>пруф или пиздун, кьют изначально писался на плюсах.
Ты даун?
Аноним 10/04/17 Пнд 23:19:56  971347
>>971346
ты дмитрий?
Аноним 10/04/17 Пнд 23:20:40  971351
>>971321
>файловый хэндлер
Шо? Дескриптор файла?
Аноним 10/04/17 Пнд 23:23:24  971352
>>971346
антон, не толсти
Аноним 10/04/17 Пнд 23:25:25  971356
8573090.jpg (48Кб, 450x600)
>>971351
>Дескриптор файла?
какие еще слова вы в школе проходили?
Аноним 10/04/17 Пнд 23:26:04  971357
>>971351
Он имел в виду FILE, но он не является хэндлом (дескриптором) - это объект, который хранит дескриптор и прочие данные, необходимые для осуществления ввода-вывода.
Аноним 10/04/17 Пнд 23:26:43  971358
>>971347
Да.
Аноним 10/04/17 Пнд 23:28:38  971359
>>971357
>это объект
объект чего? какие у него методы?
Аноним 10/04/17 Пнд 23:30:39  971364
>>971359
Методы посмотри в stdio, имена начинаются с f (и по историческим причинам несколько методов без f). Если для тебя методы - то, что пишется через точку после имени объекта, то я тебе сочувствую.
Аноним 10/04/17 Пнд 23:31:21  971366
>>971357
Понял.
Аноним 10/04/17 Пнд 23:34:41  971369
>>971359
https://www.gnu.org/software/libc/manual/html_node/Streams-and-Cookies.html
Аноним 10/04/17 Пнд 23:38:27  971378
>>971364
у объекта есть указатель на себя, который неявно передается его методу, да, fd->read() а не процедурщина read(fd) и как минимум уничтожение объекта при выходе из области видимости. когда завезут приходи.
Аноним 10/04/17 Пнд 23:39:40  971380
>>971369
и чо? обыкновенное структуроебство.
Аноним 10/04/17 Пнд 23:42:29  971384
>>971378
> указатель на себя, который неявно передается его методу
Особенность реализации какого-то конкретного языка. Например, COM/DirectX - ООП, но на сишечке я вполне себе делаю obj->lpVtbl->Release(obj), и от этого оно магически не перестает быть ООП.

> как минимум уничтожение объекта при выходе из области видимости
Никаким местом не относится к ООП. Мало того, многие языки уничтожают объекты не при выходе из области видимости, а когда-нибудь. Мало того, для сишечки есть либа с подобным управлением памятью с автоматическим вызовом деструкторов.
Аноним 10/04/17 Пнд 23:44:39  971386
>>971378
>как минимум уничтожение объекта при выходе из области видимости
т.е. жаба — не ООП. Приехали.
Аноним 10/04/17 Пнд 23:47:15  971390
>>971384
ясно, и пронаследуешь от структуры FILE ты тоже и все это не перестанет быть ассемблером.
Аноним 10/04/17 Пнд 23:49:20  971392
>>971386
давно у жабы деструктор?
Аноним 10/04/17 Пнд 23:51:27  971395
>>971392
>давно у жабы деструктор?
Лол. С самого начала. Вызывается сборщиком мусора.
Аноним 10/04/17 Пнд 23:52:34  971398
>>971390
Ну наконец-то нормальный аргумент. Да, FILE нельзя наследовать, но он не перестает быть от этого объектом. Отличия FILE от структурного программирования - инкапсуляция. Содержимое структурок тебе доступно по определению, а содержимое FILE тебе стандартная библиотека показывать не обязана (хотя в большинстве реализаций ты его и видишь, оно все равно implementation defined, и ебать его напрямую - зашквар), с FILE работают только его собственные методы.
Аноним 10/04/17 Пнд 23:55:07  971403
>>971395
> Вызывается сборщиком мусора.
сборщиком клюквы
Аноним 10/04/17 Пнд 23:56:53  971404
14875447909600.jpg (329Кб, 1280x957)
>>971403
Спорщиком брюквы
Аноним 10/04/17 Пнд 23:57:22  971405
>>971398
>Да, FILE нельзя наследовать
>но это все равно ООП, просто там невидно
понятно, давай более весомые аргументы, а не эти маняфантазии
Аноним 10/04/17 Пнд 23:59:39  971407
>>971405
Ебать ты убогенький.
Аноним 11/04/17 Втр 00:00:58  971408
>>971407
больше аргументов нет?
Аноним 11/04/17 Втр 00:25:45  971417
>>971408
Из тебя прям аргументы фонтаном бьют.
Аноним 11/04/17 Втр 10:52:15  971588
>>971378
>как минимум уничтожение объекта при выходе из области видимости
в objc этого нет, теперь он тоже не ООП?
Аноним 11/04/17 Втр 10:57:30  971592
Сап, есть упражнение 2.1 из K&R. Так вот, там просят не только просто вывести пределы long, short, char, int, double, float, а ещё их вычислить. Но вот зацепку, как их вычислять, K&R не дал в начале второй главы.
Вот скажите, когда я переполняю, допустим, тип int, переход в отрицательное число отвечает стандарту? У меня при любом переполнении будет как бы начинать с конца данного диапазона. Или это зависит от реализаций там каких...
Аноним 11/04/17 Втр 11:00:17  971594
Image 001.png (3Кб, 661x93)
>>971592
Алсо, гуглить пробовал, ну, такое себе.
Аноним 11/04/17 Втр 11:21:26  971599
>>971588
Это вообще не язык
Аноним 11/04/17 Втр 12:37:19  971663
>>971588
объекты должны создаваться и уничтожаться не только по завершению программы и явном удалении, капишь?
Аноним 11/04/17 Втр 13:13:24  971694
>>971592
> когда я переполняю, допустим, тип int
Это UB
Аноним 11/04/17 Втр 14:20:08  971752
>>971167
>Всецело двачую идею писать
>GUI on C++
TOPKEK
Qt - buggy piece of shit.
GTK - masterpieces of code.
Qt app 2 times biger than GTK3 app, not to mention FLTK.
Аноним 11/04/17 Втр 14:20:50  971753
>>971752
>Qt app 2 times biger than GTK3 app
Всем похуй.
Аноним 11/04/17 Втр 14:22:09  971754
>>971753
No.
Аноним 11/04/17 Втр 14:26:59  971758
>>971754
Разве что пользователям дискет не похуй.
Аноним 11/04/17 Втр 14:31:48  971759
>>971599
ага, настолько не язык, что на нем зарабатывают неплохие деньги
Аноним 11/04/17 Втр 15:14:11  971780
>>971758
Qt - говнокод, как не изъебнись, и тормозит дай бог. Нахуй надо.
Аноним 11/04/17 Втр 15:15:41  971783
>>971780
Двачую будущее за JavaFX на кроссплатформе
Аноним 11/04/17 Втр 15:28:46  971790
>>971783
Будущее это GTK4, и возможно FLTK (Если тоже перейдут на Vulkan+Wayland)
Аноним 11/04/17 Втр 15:49:50  971820
>>971780
Не тормозит Motif. Только вот
> Нахуй надо.
Аноним 11/04/17 Втр 16:46:50  971895
>>971790
>Будущее это GTK4
шо, опять? с 98 года пердолят это поделие. оно же выглядит как говно, работает как говно и спроектировано как говно.
Аноним 11/04/17 Втр 16:52:01  971898
>>971759
Гей-шлюхи со стажем тоже неплохо зарабатывают.
Аноним 11/04/17 Втр 16:55:20  971900
> 2017
> спорить об ооп
> в C треде
вы ебанутые что ли? это же моветон.
Аноним 11/04/17 Втр 17:29:20  971910
wayland-screens[...].png (403Кб, 1920x1080)
>>971820
Он не может в Wayland, нахуй не надо.
>>971895
Qt так-то куда хуже выглядит, еще и виснет.
Вот слева evince (GTK3), справа okular (QT5)
Четко видно кто в 90х застрял сука.
okular еще и виснет, охуеть просто.
Аноним 11/04/17 Втр 18:35:10  971951
>>971694
Что?
Аноним 11/04/17 Втр 18:40:38  971957
>>971694
в c99 возможны 3 варианта представления знака. зависит от реализации.
Аноним 11/04/17 Втр 18:46:38  971961
>>971592
так что, приделы для безнаковых можешь скаставать 0xffffffff к соот. типу, перед этим проверев существование LONG_MAX, иначе - 0xffff. больше ничего придумать не могу.
Аноним 11/04/17 Втр 18:48:54  971962
>>971961
Слишком сложно для человека, читающего вторую главу K&R. Ну ладно, не буду этим заниматься, просто выведу.
Аноним 11/04/17 Втр 18:54:34  971969
иди нахуй.png (91Кб, 1111x513)
>>971957
Охотно верю
я просто спрошу это здесь. Аноним 11/04/17 Втр 19:03:27  971972
https://pastebin.com/6Fx9dEGR
мудрый анон, что нетак с этим куиксортом? На 9 из 10 наборах дает верный результат, пытался осилить дебаггингом и в сухую, но все равно не могу понять в чем подлива.
Аноним 11/04/17 Втр 19:19:38  971983
>>971969
понятно что он имел в виду.
-1(uint) - не переполнение, а конвертация.
Аноним 11/04/17 Втр 19:19:58  971984
>>971972
1. Сделай нормальное имя массива arr.
Почему не скопипастил рабочий алгоритм?
Аноним 11/04/17 Втр 19:21:28  971985
>>971983
>понятно что он имел в виду.
Кто "он"? Твой МЧ?
Аноним 11/04/17 Втр 19:24:20  971987
>>971984
Потомучто куиксорт - это самоцель и я хочу разобраться
за имя массива извенения :с
Аноним 11/04/17 Втр 19:24:34  971988
>>971985
не знаю как ты будешь переполнением выводить пределы. хотя знаю, создашь для каждого типа переменную, проинициализируешь нулями, а потом в рантайме вычтешь 1?

как хочешь.
Dmitry 11/04/17 Втр 20:35:25  972021
>>971987
Оно уже есть в glibc и работает там быстрее, более под железо заточено.
Чесно говоря не разбирал куиксорт, но читал, там больше кода было.
Аноним 11/04/17 Втр 20:41:19  972025
https://pastebin.com/Ueix2sRG
Написал подпрограммы для работы со стеком, не могу добавить с помощью нее элемент в стек. да, я даун
Где я обосрался? Хэлп плс
Аноним 11/04/17 Втр 20:44:27  972027
>>972025
тебе в другой тред.
Аноним 11/04/17 Втр 20:46:55  972029
>>972027
В какой? Я думал тут только этот по си
Dmitry 11/04/17 Втр 20:50:01  972032
>>972029
Библиотеку пиши.
Аноним 11/04/17 Втр 20:51:01  972033
>>972021
обычно свап прямо в теле делают
и оформляют все в постусловном цикле
спсы, энивей
Аноним 11/04/17 Втр 20:51:49  972034
>>972029
В Си нет операторов new/delete.
Аноним 11/04/17 Втр 20:52:42  972036
>>972029
> delete/new
> C
выбери одно
Аноним 11/04/17 Втр 21:01:28  972043
>>972032
В этом и цель, тип написать библиотеку с подпрограммами для работы со стеком
Но сначала надо просто программу сделать, что бы протестировать их все, а я не могу добавить элемент
>>972036
>>972034
?
Странно, мы в универе изучаем Си и нам препод их давал, лул
Еще когда списки проходили
Аноним 11/04/17 Втр 21:04:00  972047
>>972043
А что такое printf("%d сообщение\n") вам препод рассказать забыл? БЕГИ ОТТУДА И вообще, непонятно, чего ты хочешь. Элементы добавляются.
Аноним 11/04/17 Втр 21:07:39  972050
>>972047
Разве я правильно все написал?
Ахахахаххахахахахаха, про /n рассказывал, ебать в голос чет
Просто у меня уже 4 утра, я по фасту написал то что в мэйне и сюда кинул, ибо хз
Аноним 11/04/17 Втр 21:08:09  972053
>>972050
\n* ahahah
Аноним 11/04/17 Втр 21:10:02  972056
>>972050
Нет, ты всё написал неправильно. Твой код не компилируется, половина кода не выполняется. В стек ты пихаешь неинициализированную переменную. Стеком называется вся структура данных, а не один ее элемент. Пишешь ты на смеси C и C++. printf ты не осилил.
Аноним 11/04/17 Втр 21:14:44  972059
>>972056
Ахахах, на счет принтфа я тебе объяснил
Я не понимаю, о какой смеси Си и крестов вы говорите, что тут кроме new/delete с крестов?
Аноним 11/04/17 Втр 21:15:49  972060
>>972059
Например, main. Например, кривой (неработающий) typedef.
Аноним 11/04/17 Втр 21:21:22  972062
20170412011844.JPG (423Кб, 1080x1832)
>>972060
В мэйне треш, я об этом и говорю
Тайпдеф просто по дефолту пишу перед страктом, хз
Энивей он не мешает

Вот скрин из нашей методичке по Си, delete/new тут есть
Либо вы меня троллите с этим, либо я совсем уже потерялся
Аноним 11/04/17 Втр 21:23:24  972063
>>972062
слово объект тебя не смущает?
Аноним 11/04/17 Втр 21:23:32  972065
>>972062
Есть Ц и есть кресты. new/delete это штука из крестов, не из Ц. Может вас крестам учат, а ты не понимаешь этого?
Аноним 11/04/17 Втр 21:24:19  972068
>>972062
> Энивей он не мешает
Он абсолютно ничего не делает, не добавляет никаких новых сущностей. Я даже не уверен, скомпилируется ли это в Си. Программа работает только потому, что в C++ теги (имена) структур сразу являются типами, и писать struct Имя, как в Си, не обязательно.

>>972063
В стандарте Си про каждую переменную говорят "объект". Это нормально.
Аноним 11/04/17 Втр 21:25:53  972069
>>972065
>Может вас крестам учат, а ты не понимаешь этого?
почему тогда принты...
Аноним 11/04/17 Втр 21:26:33  972071
>>972069
Потому что удобнее.
Аноним 11/04/17 Втр 21:26:39  972072
>>972069
Потому что препод не шарит. Я тебе уже говорил - беги, пока не поздно.
Аноним 11/04/17 Втр 21:27:52  972075
>>972072
Или он считает что printf удобнее чем iostream
Аноним 11/04/17 Втр 21:28:23  972076
>>972075
Если люди так считают, они говорят #include <cstdio>.
Аноним 11/04/17 Втр 21:29:14  972077
>>972069
А почему бы собственно и нет?
Аноним 11/04/17 Втр 21:29:35  972078
>>972065
Ахаххаха, да нет
Я не такой даун, первый семестр неплохо закончил, и с от крестов отличить могу
И да, чекни библиотеки
>>972075
Ахахаххаха, найс рофлишь
Бля, так и знал что вы суки троллите меня
Аноним 11/04/17 Втр 21:32:27  972079
Что-то тред снова скатился. То ООП, то кресты. Вот нет, чтобы атрибуты в грядущем стандарте обсудить. >>966915

Аноним 11/04/17 Втр 21:32:45  972080
>>972078
http://ideone.com/nKI0jH
Что не так, отличитель ты наш плюшевый?
Аноним 11/04/17 Втр 21:33:20  972081
>>972078
Братюнь, толсто.
Аноним 11/04/17 Втр 21:34:41  972082
>>972080
Строчка начинающаяся с int* a
Аноним 11/04/17 Втр 21:35:27  972083
>>972081
Бляя, не знаю, что вы творите тут
Но теперь мне еще страшнее идти завтра на пару чем без этой программы
Аноним 11/04/17 Втр 21:37:36  972085
>>972083
В общем так: идешь на пару, начинаешь возбухать, что вас учят крестоблядию вместо ламповой сишки. Говоришь, что из-за этого обмана не сделал программу
Аноним 11/04/17 Втр 21:41:47  972088
>>972085
Бля, ну правда норм рофлите тут
Но я ночь не сплю, что бы написать эту хуйню до утра и в итоге вы меня так запутали что пиздос

Хз, просто я вчера показывал преподу эти подпрограммы, он немного подредачил одну и сказал все норм, просто сделай типо, что бы они запускались по очереди и все
Аноним 11/04/17 Втр 21:44:00  972090
>>972088
Так подредактируй. Тебе уже перечислили все косяки.
Аноним 11/04/17 Втр 21:44:31  972091
>>972088
А у тебя есть заголовок твоих лекций? Скрин сделаешь нам?
Аноним 11/04/17 Втр 21:48:36  972093
>>972090
Я пофиксил принтфы, убрал тайпдеф
Но это не значимые косяки, я хз что дальше с этим всем делать теперь
>>972091
Смысл?
Ну спалите вы моего препода и
Бтв учусь не в такой уж и шараге, топ 30 вузов россии
Не думаю, что препод может путать Си и кресты блять
Аноним 11/04/17 Втр 21:49:31  972095
>>972093
> Не думаю, что препод может путать Си и кресты блять
Тут варианта два: либо всё напутал, либо ты.

Аноним 11/04/17 Втр 21:50:25  972096
>>972093
Мы хотим спалить не твоего препода, а "Курсы ЦПП для дауничей из заборостроительного, 1 час в неделю", дурашка.
Аноним 11/04/17 Втр 21:50:41  972097
>>972095
>либо он
фиск
Аноним 11/04/17 Втр 21:51:18  972098
>>972095
Как можно их попутать?
В крестах же iostream, using namespace, cin, cout etc
А у нас такого нет и никогда не было в курсе
Dima 11/04/17 Втр 21:52:04  972099
Хватит уже зелёного кормить, заебали.
Аноним 11/04/17 Втр 21:53:47  972100
>>972079
> The maybe_unused attribute
ненужно. если есть варнинг на аюзед, возьми код в #ifndef NDEBUG.

> The fallthrough attribute
блевотина. для неосиляторов switch. серьёзно? если компилятор вам выдаёт такие варнинги, то это повод прописать ему в щи с вертушки и отключить этот клятый варнинг. вы ещё побольше скобочек вокруг & лепите, вместо того чтобы выучить приоритеты.
Аноним 11/04/17 Втр 21:54:09  972101
>>972096
Ахахах, ой все крч
Завтра утром поговорю с преподом на счет этой хуйни всей и напишу итт
Аноним 11/04/17 Втр 22:05:25  972106
>>972100
> возьми код в #ifndef NDEBUG.
У меня колбек, его вызывает либа. Что ты предлагаешь взять в NDEBUG? Как ты объяснишь компилятору и читателю, что ты не используешь аргумент намеренно?

> блевотина. для неосиляторов switch
Я пишу на сишечке уже полтора десятка лет (с лишним, если считать ньюфажество и фриланс). И все равно бывают случаи, когда я забываю break (обычно копипаст или мерж кода). И чаще всего fall-through хочется для case FOO: case BAR:. Хитровыебанная лапша с неявным goto c помощью switch не нужна и должна быть переписана.

> вместо того чтобы выучить приоритеты
Знаю приоритеты, очень долго писал foo << bar & baz без скобок. Когда с кодом стало работать большое количество людей, стало ясно, что мои знания и предпочтения не значат нихуя, читабельность гораздо важнее.

Рано или поздно все взрослеют, умнеют, перестают выпячивать знанания языка в своем коде и начинают писать читаемо.
Аноним 11/04/17 Втр 22:10:19  972109
>>972079
> The nodiscard attribute
ещё одна борьба с варнингами. ебанутые.

> The deprecated attribute
комментарии писать не пробовали?


диагноз: отбитые.
Аноним 11/04/17 Втр 22:12:34  972111
>>972079
> Attributes in C
давайте сделаем из с с++.
Аноним 11/04/17 Втр 22:16:44  972114
>>972109
> deprecated
> комментарии писать не пробовали?
У тебя есть код, использующий функцию сделать_хорошо() из какой-то либы. Код давно написан, работает и не требует изменений. Как разработчики библиотеки могут тебя предупредить, что они опять все сломали перепидорасили API, и скоро твой код перестанет работать? Ты читаешь документацию и хедеры каждой либы для каждого нового релиза?
Аноним 11/04/17 Втр 22:18:24  972116
>>972106
> У меня колбек, его вызывает либа
не понял.

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

> читабельность гораздо важнее
> Рано или поздно все взрослеют, умнеют, перестают выпячивать знанания языка в своем коде и начинают писать читаемо.
ты просто оправдываешь своё превращение в макаку.
Аноним 11/04/17 Втр 22:18:57  972117
>>972111
Давайте. Неплохо бы __attribute__((cleanup(...))) стандартизировать.
Аноним 11/04/17 Втр 22:22:43  972119
>>972114
>Ты читаешь документацию и хедеры каждой либы для каждого нового релиза?
прикалываешься? что это поменяет? тебе всё равно придётся переписывать код. это вопрос в доступности информации - зачем это тащить в синтаксис?
Аноним 11/04/17 Втр 22:26:48  972122
>>972116
> не понял.
Ты предлагаешь что-то ифдефать. Что именно?
void handler(int unused) {
terminating = true;
}
// Где-то в main.
signal(SIGINT, handler);

> ты просто оправдываешь своё превращение в макаку
Так для меня-то по прежнему нет проблем писать без скобок, делать for без тела или еще как-нибудь извращаться. Почему я вдруг макака?

>>972119
> тебе всё равно придётся переписывать код
Увидеть ворнинг, создать тикет и переписать в плановом режиме; переписывать с горящей жопой, когда разработчики либы все сломают или, хуже того, не трогать код полгода и узнать о проблеме от кастомеров, которым, как обычно, все нужно вчера?
Аноним 11/04/17 Втр 22:42:41  972131
>>972122
> Ты предлагаешь что-то ифдефать. Что именно?
понятие не имел что такое вызывает варнинг. как у тебя это получается? -Wall -pedantic - ничего не выдаёт. и это странно выдавать на это, ведь есть множество функций с аргументами для совместимости, например.

>>972122
>Увидеть ворнинг, создать тикет и переписать в плановом режиме; переписывать с горящей жопой, когда разработчики либы все сломают или, хуже того, не трогать код полгода и узнать о проблеме от кастомеров, которым, как обычно, все нужно вчера?
теперь ты оправдываешь свою лень. это твои проблемы что ты не узнал что ЛОМАЮТ АПИ - нихуя себе история.

>>972122
>Почему я вдруг макака?
ну или нет. например, потому что поддерживаешь фишки которые всем усложнят жизнь и только тебе облегчат.
Аноним 11/04/17 Втр 22:47:56  972133
в любом случае.

> Array Sections
вот это интересно смотрится, недавно думал об этом.
Аноним 11/04/17 Втр 22:58:15  972137
>>972131
> как у тебя это получается?
Ну привет. -Wunused-parameter включается с -Wextra (ну или -Weverything в clang). И да, люди этим пользуются. И да, если у них что-то где-то для совместимости, они делают:
#define UNUSED_ARGUMENT(arg) ((void)(arg))
...
int handler(int sig) {
UNUSED_ARGUMENT(sig);
}
Классика жи. А теперь вот решили это стандартизировать, а новый синтаксис позволит не делать по хедеру на каждый атрибут, как было раньше (например, stdnoreturn.h /__Noreturn).

Вообще, когда я поднимал эту тему, я надеялся услышать мнения про синтаксис. GCC-шный вариант более вменяемо выглядит, поддерживается многими IDE и меньше ломает парсеры в тех редакторах, которые про него не знают. Или нет?
Аноним 11/04/17 Втр 23:06:21  972141
>>972137
моё мнение: всё говно и всё равно придётся прятать за макросы.
Аноним 11/04/17 Втр 23:09:10  972142
>>972137
>И да, люди этим пользуются.
может я тоже буду так делать. выглядит, логично.
Аноним 12/04/17 Срд 01:50:29  972211
>>972099
Двачую этого. Развели тут
Аноним 12/04/17 Срд 04:18:01  972241
Умоляю, помогите пожалуйста.
Хочу сделать консольную задачу, установил визуал студио, и вот такая херня выскочила.
Дело в том, что если нажать да - код все равно не будет работать, я и другие пробовал, 100% рабочие - не работает ничего.
Как исправить?
Аноним 12/04/17 Срд 04:50:46  972245
>>972241
>Умоляю, помогите пожалуйста.
продолжай
Аноним 12/04/17 Срд 05:54:27  972251
>>972241
> код все равно не будет работать
Подробнее поясни. Покажи выхлоп компилятора из панельки Output. Скинь бинарник, если он не пашет. Проверь время и дату на компе.
Аноним 12/04/17 Срд 08:02:02  972271
>>972241
>код все равно не будет работать
чет кек
Аноним 12/04/17 Срд 11:52:51  972332
>>972241
Я так понимаю все дебыли перекатились из C++-треда сюда.
Аноним 12/04/17 Срд 13:29:08  972359
3415.JPG (13Кб, 474x45)
515.JPG (42Кб, 548x610)
>>959643 (OP)
Сап, погромисты. Пик 1 - задания, пик 2 - прога. Я правильно понял задание и сделал или хуйня?
Аноним 12/04/17 Срд 13:47:39  972367
>>972359
Под упорядочиванием видимо подразумевается сортировка.
Аноним 12/04/17 Срд 13:56:46  972372
>>972367
Каким образом можно её произвести? Курил интернеты, но не нашел примера на Си.
Аноним 12/04/17 Срд 13:59:23  972373
>>972372
Берешь обычную сортировку и применяешь к каждой строке по отдельности.
Аноним 12/04/17 Срд 14:41:09  972390
>>972359
>>963799
Аноним 12/04/17 Срд 14:42:29  972392
14912303899530.jpg (37Кб, 626x352)
>>972390
в моей такого нет
Аноним 12/04/17 Срд 15:41:10  972421
3145.JPG (32Кб, 598x333)
>>972373
Ананас, прости за мою тупость, но я правда не знаю как сортировать. Вот написал новый простой массив. Почитал про всякие методы сортировки, но непонятно, в какой момент её нужно вставить, например, в пикрелейтед?
Аноним 12/04/17 Срд 16:04:55  972426
>>972421
Пиздуй в армию, ты безнадежен.
Аноним 12/04/17 Срд 17:08:57  972471
>>972426
нахуй он нам тут нужен
Аноним 12/04/17 Срд 19:39:32  972572
>>972421

> #define + -
Аноним 12/04/17 Срд 21:44:23  972652
Что-то столкнулся проблемой сейчас

void main()
{
int k, c;

while ((c = getchar()) != EOF)
{
if (c == '\n')
{
++k;
printf("%d\n", k);
}
}
}


выводит не "1" как ожидается, а 32763 может и 32768 вывести.

Что-то не стыкуется с моими знаниями о том, что int k; инициализирует k в 0
Аноним 12/04/17 Срд 21:47:05  972658
Почему сайт этого вашего LLVM такой тормозной, хотел скачать дистр, а скорость 7 кб/с о_О при этом пробовал с разных ВПН (думал м.б. рашкованские айпи зарезали).
Аноним 12/04/17 Срд 21:47:10  972659
>>972652
А оно и не инициализирует.
Аноним 12/04/17 Срд 22:02:13  972674
>>972659
я понял да. значение на момент объявления неопределено
Аноним 12/04/17 Срд 22:28:54  972689
>>972471
Двачую майора
Аноним 12/04/17 Срд 22:30:35  972690
>>972241
>>972241
поставь gcc и не еби мозг
компилируй через cc hello_world.c
Аноним 12/04/17 Срд 23:05:51  972703
>>972690
> компилируй через cc hello_world.c
сс - это симлинк к компилятору C по умолчанию. С тем же успехом это может быть clang.

>>972658
> скорость 7 кб/с
It's just you. Кабельный МТС - 150-200 КБ/с.
Аноним 13/04/17 Чтв 00:41:35  972742
>>966484
Попробуй кинуть код (hello.c) в директорию llvm/bin (где лежит clang) и снова выполнить clang hello.c
Аноним 13/04/17 Чтв 00:43:41  972745
>>966484
>Я новичок.
>Поставил Clang.
Откуда ставил?
Аноним 13/04/17 Чтв 00:49:14  972749
>>972703
>It's just you. Кабельный МТС - 150-200 КБ/с.
У меня скорость 30-32 мбит/с (при скачке обычно 3.5-3.9 мб/с), так что нахуй, это сайт LLVM'а тормозит.
Аноним 13/04/17 Чтв 01:01:09  972751
>>972658
охуеть, а форкнуть репозиторий и самому собрать никак? Там же даже мейк есть, просто в консоли две команду прописать, ну
Аноним 13/04/17 Чтв 01:04:01  972753
Допустим есть в winform 5-ь кнопок (button1,button2...button5)
и для одной из кнопок мы можем задать параметр TEXT путём введения команды:
i=1;
this->button1->Text = Convert::ToString(i);
в итоге мы получим кнопку с числом 1 в text'e.
Но как сделать это через цикл,ведь для каждой кнопки не будем выделать ещё 1-у строку и делать индусский код.
;#####################
for(i=0;i<5;i++)
{
this->button->Text = Convert::ToString(i);
}
не сработает...(проблему выделил) . Как в cpp можно реализовать решение данной проблемы?
Аноним 13/04/17 Чтв 01:05:01  972754
this->button->Text = Convert::ToString(i);
отвалилась проблема, FIX.
Аноним 13/04/17 Чтв 01:05:57  972755
>>972754
Мда, что то идёт не так в общем трабла в "button"
this->button->Text = Convert::ToString(i);
Аноним 13/04/17 Чтв 01:09:34  972757
Блять, макака походу издевается.
Аноним 13/04/17 Чтв 01:55:49  972767
>>972755
>Convert::ToString
пиздуй ка ты к плюсанам
Аноним 13/04/17 Чтв 01:56:44  972768
>>972767
Нахуй нам C++/CLR не нужно.
Аноним 13/04/17 Чтв 01:57:52  972769
>>972751
> форкнуть репозиторий и самому собрать никак?
Мне почему-то кажется, что даже скачать готовые бинарники по модему (олдскульному, через телефонную линию) будет быстрее, чем это собрать.
Аноним 13/04/17 Чтв 07:03:20  972803
>>972768
>C++/CLR не нужно
так и пиши на си тогда
Аноним 13/04/17 Чтв 10:03:26  972830
>>972652
я ввожу любой символ и у меня начинается а принтует у меня "к" начинает с числа 3. это потому что не определено какое значение принтовать ? Если определить к=0 то будет с единицы печатать.
мимо начинающий неосилятор
Аноним 13/04/17 Чтв 11:25:03  972857
>>972769
Ну на урезанном i5-u(5 поколение) у меня собрались за ~40 минут
Аноним 13/04/17 Чтв 12:14:47  972864
>>972754 >>972753
Съеби в плюсотред.
>>972768
Какой ещё CLR, уёбок?
Аноним 13/04/17 Чтв 12:24:33  972868
Поцоны, а что скажете вот по этой статье?

http://eax.me/c-vs-cpp/
Аноним 13/04/17 Чтв 13:04:47  972876
>>972868
Правильно пишет. Надо все что можно писать на C, и даже если надо C++ большую часть кода можно написать на C и использовать.
На C++ даже компиляторы ничего не гарантируют, с горем пополам могут в последние стандарты.
Аноним 13/04/17 Чтв 13:24:14  972885
blob (33Кб, 738x406)
Разбираю шаблон программы для STM32 на С.

Это вообще легально, описать static и non-static прототипы для одной и той же функции? Мне показалось, что нелегально, потому статический прототип закомментировал. Правильно сделал?
Аноним 13/04/17 Чтв 13:33:18  972893
>>972864
>Какой ещё CLR, уёбок?
Совсем тупой?
Аноним 13/04/17 Чтв 15:11:57  972945
>>972885
static Надо делать, убирай статик если будешь юзать функцию другим файлом.
Аноним 13/04/17 Чтв 15:24:52  972956
>>972893
Ты тупой, МБ? CLR - это что, по-твоему?
Аноним 13/04/17 Чтв 15:57:02  972970
>>972768
Ты что, ебанутый?
Аноним 13/04/17 Чтв 16:13:45  972984
Здравствуйте, посоветуйте пакетный менеджер для C типа npm или pip.
Аноним 13/04/17 Чтв 16:19:16  972989
Стикер (319Кб, 512x512)
>>972984
> пакетный менеджер для C
Аноним 13/04/17 Чтв 16:40:59  973010
>>972984
Но нахуя?
Аноним 13/04/17 Чтв 17:40:36  973046
>>972970
Нет.
Аноним 13/04/17 Чтв 18:54:46  973093
>>973046
Тогда что такое CLR, уёбок?
Аноним 13/04/17 Чтв 20:00:38  973146
>>972885
> Это вообще легально, описать static и non-static прототипы для одной и той же функции?
Я спрашивал в одном из тредов насчет static, restrict и const. Никто не знает. В стандарте все очень мутно. Но вроде бы делать прототип без static, а саму функцию определять со static - это нормально.

>>972984
Системный пакетный менеджер (pacman, apt, dnf) - это и есть пакетный менеджер для Си, он позволяет ставить компиляторы, либы и хедеры.

>>973093
CLR - это Common Language Runtime. C++/CLR - это извращение, позволяющее писать на крестах под дотнет. У >>972753 именно оно. Использующие это идут нахуй в C# тред. Заебали срать.
Аноним 13/04/17 Чтв 20:03:50  973148
>>973146
> функцию определять со static
Бля, наоборот. В общем, я имел в виду, что декларация задает тип и видимость.
Аноним 13/04/17 Чтв 22:49:49  973248
Screenshot2.jpg (53Кб, 705x655)
Screenshot1.jpg (11Кб, 343x182)
Сап анон! На связи кун который вкатывается в C. Читаю классику от отцов. Дошел до задания где надо гистограмму длины слов из входного потока построить. Подскажи анон, все ли на месте? По длине массива сделал с расчетом на 1000 слов, так как не знаю еще как динамические массивы делать в сишечке
Аноним 13/04/17 Чтв 23:03:07  973255
>>973248
Нахрен ты нам фак показываешь?
Аноним 13/04/17 Чтв 23:04:14  973256
>>973248
Нормально. Особенно, если это твой первый язык.
1) Если у тебя будет два пробела подряд, зачтется как пустое слово.
2) Выражение words[wordsCount++] = lettersCount лучше показало бы твои намерения.
3) Если в if / else у тебя хотя бы в одной ветке есть фигурные скобки, ставь их и в другой (да, синтаксис позволяет писать, как у тебя, но выглядит это неоче). Это правило обычно встречается в каждом первом стайлгайде. У некоторых принято писать фигурные скобки вообще всегда (в основном из-за убогих текстовых редакторов).
4) Второй while лучше заменить на for - лучше показывает намерения. В C99/C11 ты еще и переменную в заголовке for объявишь, и ее не нужно будет искать глазами.
5) Переменные лучше объявлять как можно ближе к их использованию, поэтому int i я бы положил внутрь второго while (даже C89 это позволяет) или в заголовок for (С99/С11).
Аноним 13/04/17 Чтв 23:32:12  973268
>>973248
У мейна прототип int main(int argc, char argv);
Каждое объявление переменной с новой строчки и лучше делать с инициализацией:
int c = 0;
int i = 0; и тд
К каждому ифу добавляй скобочки, даже если одну инструкцию выполняешь
Если просто инкрементишь переменную, то i++; выглядит лучше, чем ++i; (хотя в плюсах последний варик для объектов лучше из-за отсутствия лишнего копирования)
Аноним 13/04/17 Чтв 23:55:07  973272
>>973248
Анон, не слушай этого >>973268 пидора, ну разве что последнюю строчку. Вредные советы.
Аноним 14/04/17 Птн 00:20:21  973279
>>973272
>>973268
Про прототип мейна - правильно. Я не заметил. Есть int main(void) и есть int main(int argc, char ∗argv[]) (он же int main(int argc, char ∗∗argv)). Других мейнов в стандарте нет.

> выглядит лучше
Это наоборот плохой совет. Постинкремент нужен для специальных случаев. Его все поголовно используют неправильно, но лучше не привыкать так делать. В свое время была шутка, которую упоминал даже сам Страуструп, что язык C++ даже назвать правильно не осилили - улучшенный C логично было бы назвать ++С.

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

> к каждому ифу добавляй скобочки
А вот и человек с ed вместо редактора подъехал.
Аноним 14/04/17 Птн 00:22:47  973281
>>973279
>Других мейнов в стандарте нет.
Есть imlementation-defined.

Может ты мне ещё запретишь envp через main получать, гнида?
Аноним 14/04/17 Птн 00:24:44  973284
>>973279
> В свое время была шутка, которую упоминал даже сам Страуструп, что язык C++ даже назвать правильно не осилили - улучшенный C логично было бы назвать ++С.
Нет, просто «I think maybe the guy who invented C++ doesn’t know the difference between increment and excrement.»

> И потом статический анализатор или компилятор будут ругаться, что присвоенное значение забыли использовать.
А так он будет ругаться на defined but not used.
Аноним 14/04/17 Птн 00:26:07  973285
>>973281
> envp
Бля, вот все время забываю, что envp на самом деле в стандарте есть (в списке распространенных расширений). Но тем не менее, это все равно расширение, которое какбэ намекает на возможные проблемы с переносимостью. Да, оно везде реализовано, но все же.
Аноним 14/04/17 Птн 00:35:02  973288
>>973284
> А так он будет ругаться на defined but not used.
Будет причина удалить нахуй неиспользуемую переменную. На самом деле я согласен, что инициализация при объявлении желательна. Но только если у нас C99 и выше, где мы объявляем переменные по месту, а не в начале блока, т.е., нам видно, что вот она наша переменная, и мы ее сразу инициализировали, и нам понятно, зачем мы это сделали.
Аноним 14/04/17 Птн 00:35:21  973289
>>973279
>А вот и человек с ed вместо редактора подъехал.
Дебик, даже в гугл код стайле прописано, что так надо делать. Хотя да, мане из ебеней лучше знать.
Аноним 14/04/17 Птн 00:36:20  973290
>>973289
> гугл код стайле прописано
Какого бреда там только не прописано. Самый бредовый — что пробелы лучше табов.
Аноним 14/04/17 Птн 00:37:36  973291
>>973290
> пробелы лучше табов
Боже, нет, только не снова! Давайте перекатываться лучше.
Аноним 14/04/17 Птн 00:38:02  973292
>>973288
>если у нас C99 и выше
Мань, на дворе то 2017, просыпайся
Аноним 14/04/17 Птн 00:45:14  973294
>>973288
Насколько знаю если все инициализировать в начале то программа должна быстрее работать.
Аноним 14/04/17 Птн 00:46:05  973296
Sick-Laugh-GIF.gif (541Кб, 480x228)
>>973294
Аноним 14/04/17 Птн 00:47:45  973298
>>973294
Абсолютно похуй, когда компилятор положит переменную в стек. Мало того, он все равно положит ее тогда, когда захочет.
Тем временем мы перекатываемся без шапки, потому что в шапке образовалось слово из спам-листа. Спасибо, Абу!
Аноним 14/04/17 Птн 00:48:04  973299
>>973294
Ага, а если для названий переменных использовать только одну букву, то еще и памяти меньше отожрет
А вот и оптимизации уровня /pr подъехали
**ПЕРЕКАТ** Аноним # OP  14/04/17 Птн 00:50:37  973301
>>973297 (OP)
>>973297 (OP)
>>973297 (OP)
>>973297 (OP)

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

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 513 | 33 | 161
Назад Вверх Каталог Обновить

Топ тредов
Избранное