Сохранен 522
https://2ch.hk/pr/res/856777.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

C Programming Language #13

 Аноним OP 14/10/16 Птн 23:23:33 #1 №856777 
14764766136960.png
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: http://www.cypress.com/file/56651/download
- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/%7Eats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт) не драфт ищем на торрентах
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- man/Dash/zealdocs

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

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

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

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

Stephen Prata "C Primer Plus, 6th Edition" (2014)
Свежая знает про C89, C99, C11, описывает различия, объемная около тысячи страниц, годная хотя есть некоторые шероховатости, с вопросами, упражнениями и ответами. Читать после K&R или до.

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

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

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

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

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

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

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

- https://arhivach.org/thread/106153/
- https://arhivach.org/thread/131949/
- https://arhivach.org/thread/140570/
- https://arhivach.org/thread/153698/
- https://arhivach.org/thread/155908/
- https://arhivach.org/thread/173837/
- https://arhivach.org/thread/180461/
- https://arhivach.org/thread/182958/
- https://arhivach.org/thread/188294/
- https://arhivach.org/thread/193780/
- https://arhivach.org/thread/198868/
- https://arhivach.org/thread/206632/

Шапка: http://piratepad.net/bJ1SdmkZyu
Аноним 14/10/16 Птн 23:45:36 #2 №856791 
первый
Аноним 15/10/16 Суб 00:01:06 #3 №856798 
&thread
Аноним 15/10/16 Суб 00:10:25 #4 №856802 
Поясните за CLang. Слышал краем уха, думал, это очередная IDE/конпелятор, а это
>транслятор для C-подобных языков, созданный специально для работы на базе LLVM
Получается, как java или c# работает? В чем плюсы и минусы по сравнению с любым другим конпелятором?
Аноним 15/10/16 Суб 00:27:43 #5 №856817 
>>856802
> как java или c# работает
Не совсем. Java и C# компилируются в набор инструкций виртуальной машины, а затем, при выполнении программы, В используется JIT (just-in-time compiler), чтобы преобразовать этот код в нативные инструкции. И хотя LLVM тоже можно использовать в качестве JIT, у clang по умолчанию на выходе нативный код.
Плюсы/минусы - ну, например, нормальная архитектура, один жирный бинарник, который умеет кросскомпилировать, а лицензия позволяет не давиться мозолями. И либы. А ещё -Weverything. Оптимизация иногда лучше GCC, иногда хуже. Часто ворнинги более понятные.
Аноним 15/10/16 Суб 01:10:06 #6 №856835 
14764830066390.png
14764830066401.png
Пишу задачу Иосифа Флавия и столкнулся с такой проблемой. Разбил проект на три части - main.c, заголовочный файл и файл с функциями. Код не доходит до третьего захода и в итоге выводит двух выживших вместо одного. Собственно, как видно на пикрелейтеде, из 10 воинов, где должен умереть каждый второй, в итоге должен выжить воин под номером 5. У меня же их остается двое. Компилятор ругается и выдает ошибку. Очевидно, что проблема в освобождении динамической памяти, но я совсем запутался и не понимаю, как это сделать. Помогите дауну.
http://ideone.com/zXxyH5
Аноним 15/10/16 Суб 02:35:12 #7 №856849 
>>856835
> Очевидно, что проблема в освобождении динамической памяти
Очевидно, что если a - указатель на int, то со звездочкой ты кормишь в free() просто int, а free() хочет указатель на int. Убери звездочку.
Аноним 15/10/16 Суб 10:10:32 #8 №856905 
>>856802
>Получается, как java или c# работает?
Как любой компилятор. Просто используется отдельное и документированное промежуточное представление.
Аноним 15/10/16 Суб 10:13:06 #9 №856906 
>>856817
> Java и C# компилируются в набор инструкций виртуальной машины
Нередко и прямо в машкод компилят.
gcj для Java и Xamarin под iOS
Аноним 15/10/16 Суб 10:33:37 #10 №856910 
>>856906
>Нередко
Сильно сказал. Очень. это самая маргинальная хуйня что только можно найти.
>>856817
>затем, при выполнении программы
Тут вообще нужна ремарок чтобы не путать нюфагов: ява занимается этим при каждом запуске, дотянет — только при первом и переводит дело в машинный код, а не интерпретирует как жява.
Аноним 15/10/16 Суб 11:31:22 #11 №856921 
Анон, помоги с этой хуйнёй, возможно для тебя это пустяк, но я не осилил.
>>392651
Аноним 15/10/16 Суб 14:33:18 #12 №856995 
Решил на досуге изучать СИ по всяким кинжкам и интернетам. Задача такова.
while (scanf != EOF) туда вбиваются цифры, дальше в этом лупе я проверяю кажде число на четность/нечетность, положительное\отрицательное и т.д-
Далее всё это дело я естественно printf.
Но, нужно ещё вывести все цифры, которые я там вводил, через запятую. Окей, не проблема. Но как убрать запятую у последней цифры?
Аноним 15/10/16 Суб 14:35:03 #13 №856996 
>>856995
Ах да, массивы не использую.
Аноним 15/10/16 Суб 15:33:25 #14 №857032 
>>856995
Выводи запятую перед следующим числом, а не после предыдущего.
Аноним 15/10/16 Суб 15:49:04 #15 №857039 
>>857032
Только тогда запятая появляется перед первым числом..
Аноним 15/10/16 Суб 15:52:40 #16 №857041 
>>857039
Чтобы этого не было, ты заводишь переменную, которую меняешь после первого числа, и проверяешь ее значение при выводе.
Аноним 15/10/16 Суб 16:11:24 #17 №857053 
>>857041
Что-то я туплю совсем.
Код:
http://pastebin.ru/C9zXlvg7

Может я вообще плохо написал и то, что мне нужно, вообще никак не выйдет?
Аноним 15/10/16 Суб 17:52:37 #18 №857094 
14765431574140.png
Аноны, что я делаю не так, почему получается эллипс, а не ровный круг?
Аноним 15/10/16 Суб 17:55:43 #19 №857096 
>>857094
Ты забываешь, что символы в консольке у тебя не квадратные, а вытянутые.
Аноним 15/10/16 Суб 17:56:47 #20 №857097 
Только начал изучать прогу и у меня возникла проблема: в начальных легких задачках обычно нужно вводить какие-либо цифры, а затем уже происходит их подсчет и бла бла бла. А если я ввожу буквы, происходит зацикливание программы.
Как сделать защиту ввода в си, чтобы при введении любой хуйни, кроме цифр, минуса и точки програ не заедала?
Я пытался найти в интернете, но там только по с++ есть.
Какашечка 15/10/16 Суб 17:57:06 #21 №857098 
мозголомство:
из большого набора данных строится связанный список. при изменении данных список перестраивается, что очень плохо. есть идея запилить кэш, при изменении данных проверять на наличие в кэше, если попадает, перестраивать список, иначе ничего не делать. кэш реализовать как хэш) но как то это все громоздко. есть идеи/примеры получше?
Аноним 15/10/16 Суб 18:01:48 #22 №857102 
>>857053
Если в двух словах, то чтобы выводить числа, их надо сначала где-то хранить - в массиве или динамически выделенной памяти. Однако в твоем конкретном случае можно воспользоваться грязным костылем тем фактом, что у stdin есть свой буфер, в котором хранится строка, пока ты ее печатаешь, и в scanf она попадает только после того, как ты нажимаешь энтер (или ввел оче много символов), так что вывод ты можешь написать прямо в цикле scanf'а.
Аноним 15/10/16 Суб 18:05:01 #23 №857103 
>>857102
Вот спасибо. Я то как раз и пытался понять, как и куда вообще эти числа без массива сохраняются.
Аноним 15/10/16 Суб 18:12:05 #24 №857105 
>>857097
http://stackoverflow.com/questions/11805414/why-does-scanf-not-wait-for-user-input-after-it-fails-one-time#comment25183250_11805434
Аноним 16/10/16 Вск 03:56:36 #25 №857399 
Я тут столкнулся с необходимостью быстро сортировать. А так как ничего быстрее пузырька написать не могу, хочу использовать встроенную функцию c++.
Например задача:
разноцветные склянки в a[10] хранится цвет.
А в b[10] их вес.
Как мне их так отсортировать, по весу, чтобы цвета тоже поменялись?
Аноним 16/10/16 Вск 06:00:13 #26 №857416 
>>857399
У нас тут как бы сишечка, а не кресты. В сишечке ты можешь объединить вес и цвет каждой склянки в единую структуру, хранить массив таких структур, и уже его сортировать (например, с помощью qsort()). Если тебе религияпрепод запрещает складывать свойства одного объекта в единую структуру, ты можешь объявить третий массив, int sorted[10], заполнить его индексами объектов (от 0 до 10), и заставить qsort отсортировать его, чтобы упорядочить индексы в sorted по возрастанию веса соответствующих им склянок. Так как оригинальные массивы останутся неотсортированными, ты сможешь иметь несколько таких "вьюшек", отсортированных по разным параметрам, не дублируя при этом сами данные. http://ideone.com/Uu7Ia3
Аноним 16/10/16 Вск 09:18:17 #27 №857455 
>>857416
>У нас тут как бы сишечка, а не кресты.
Привыкай, пока плюсовой тред не перекаты все нюфаги будут спать здеся.
Аноним 16/10/16 Вск 13:34:00 #28 №857561 
>>857094
Один по горизонтали стоит двух по вертикали. Это для дефолтного шрифта.
Аноним 16/10/16 Вск 16:00:59 #29 №857683 
Нашел годную статью про то, чем лучше sublime напичкать разработчику c/c++, но сам еще не пробовал. Может, пригодится кому: https://izevg.ru/blog/2015-04/gotovim-sublime-text-3-dlya-razrabotki-c-cplusplus-koda
Аноним 16/10/16 Вск 19:46:07 #30 №857820 
Как записать в Си d = e^-1 mod m?
'e' и 'm' у меня известно, e^-1 равносильно 1 / e, но что делать дальше?
Аноним 16/10/16 Вск 19:50:52 #31 №857824 
>>857820
double d = (1/e) % m;
Аноним 16/10/16 Вск 19:51:29 #32 №857825 
>>857824
СМЕХ
Аноним 16/10/16 Вск 19:54:08 #33 №857826 
>>857820
Крептографея, что ли?
Аноним 16/10/16 Вск 19:55:13 #34 №857827 
>>857826
ага, RSA пишу
Аноним 16/10/16 Вск 19:57:43 #35 №857828 
>>857820
>>857827
>d = e^-1 mod m
Это значит что надо найти такое e, что
e*d = 1 mod m

>>857820
>e^-1 равносильно 1 / e
В каком смысле "равносильно"? Это всё целые числа, там нет 1/e
Аноним 16/10/16 Вск 19:59:51 #36 №857830 
>>857828
* найти такое d
Аноним 16/10/16 Вск 20:02:38 #37 №857835 
>>857824
Ответ всегда будет 0, ведь 1/e будет 0. ......
Значит неправильно :(


>>857828
ага, понял. Но ведь 1 mod m всегда будет равно 1, я правильно понимаю? m всегда будет целым числом. Как и с e / 1, я просто беру об. калькулятор и считаю там.
Аноним 16/10/16 Вск 20:06:35 #38 №857838 
сап, я школь, мне 13. учителя по ИКТ, которая началась у нас два года назад, забивали на нас болт и давали делать задания для аутистов. понимаю, что программирование пригодится мне в жизни, но не знаю с чего начать. думаю: чем раньше начну, тем будет лучше. подскажите с чего начать
Аноним 16/10/16 Вск 20:09:48 #39 №857840 
Ладно, попробую сделать так: Допустим m = 8;

буду умножать на его любое число и добавлять единицу. Из результата буду смотреть 2 множителя, которые и будут ключами.

8 1 + 1 = 9 >>> 3 3 // не подходит (одинаковые)
8 2 + 1 = 17 >>> // правильное число
8
3 + 1 = 25 >>> 5 5 // не недходит
8
4 + 1 = 33 >>> 3 * 11 // подходит. e = 3, d = 11.

Правильно ли я поступаю?

Спасибо анону >>857828 за наводку
Аноним 16/10/16 Вск 20:14:07 #40 №857844 
>>857835
>1 mod m всегда будет равно 1
ed = 1 (mod m)
Т.е. остаток от деления e
d на m равен 1
Аноним 16/10/16 Вск 20:15:11 #41 №857845 
>>857840
>Правильно ли я поступаю?
https://en.wikipedia.org/wiki/Modular_multiplicative_inverse
Есть стандартный алгоритм для этого
Аноним 16/10/16 Вск 20:52:53 #42 №857863 
>>857838
>подскажите с чего начать
http://wiki.nsunc.com/haskell
Аноним 16/10/16 Вск 22:01:17 #43 №857920 
14766444779000.jpg
>>857838
> подскажите с чего начать
Аноним 16/10/16 Вск 22:47:58 #44 №857950 
14766472789930.png
14766472789931.png
Аноны, помогите с дебагером. Запускаю в IDA отладку x64 приложения, отладчиком выбираю Bochs. Не идёт отладка. Где-то надо конфиг править? На первом скрине - как выглядит в IDA дизассемблированный файл, на втором - что получается при отладке. Что за stosb инструкция появляется? Должно быть jmp start_0_0. Ida (или bochs) пытается запустить эмулятор как 32 битный?
Аноним 16/10/16 Вск 23:01:17 #45 №857958 
14766480773960.png
>>857950
Ну вот чего ему не хватает? Функция под 380 ординалом есть и в 32, и в 64 битной версии.
Аноним 16/10/16 Вск 23:30:04 #46 №857979 
>>857950
А с другим отладчиком работает? Или может в отлаживаемой программе дело?
Аноним 16/10/16 Вск 23:32:15 #47 №857981 
>>857950
Может быть, ты расскажешь немного больше, чтобы мы тут не занимались гаданиями по скриншотам?
Аноним 16/10/16 Вск 23:33:42 #48 №857984 
>>857981
Нет. Вы тупые, если не понимаете, что там. Пойду отсюда лучше.
Аноним 17/10/16 Пнд 07:49:18 #49 №858140 
>>857979
Дело не в отлаживаемой проге. Скрин от 64 битного калькулятора из стандартной поставки. Библиотеку Ida(или bochs) загружает нормально, а функцию не находит. В первом случае нормальная инструкция jmp addr вдруг превращается в stosb. 32 битные приложения так же нормально не отладить. Не так всё просто с bochs, как мне казалось. Сейчас посмотрел на выполнение функции GetStartupInfoA.
mov eax, offset kernel32_GetStartupInfoA
call bochsys_BxUndefinedApiCall
Это нужно каждую функцию в настройках описывать, как выполнять?
Аноним 17/10/16 Пнд 08:55:38 #50 №858153 
>>858140
Bochs предназначен не для отладки обычных программ, а для эмуляции относительно небольших кусков кода. Например, декрипторов у малвари - встал на декриптор, получил расшифрованный код / ключ / расшифрованный урл, откуда оно качает payload, анализируешь. И да, конечно же, для этого тебе придется описывать вызываемые API.

Если ты не знаешь, почему тебе нужен именно Bochs - например, тебе хочется отладить калькулятор, отлаживай обычным отладчиком (Local Windows Debugger). Алсо, чаще всего, если ты опасаешься плохого поведения программы, проще (возможно, удаленно) отладить ее внутри VM, чем ебаться с Bochs.
Аноним 17/10/16 Пнд 09:28:18 #51 №858163 
>>858153
Хотел раздебажить программу, защищённую протектором. Протектор завершает программу, если обнаруживает hardware breakpoint, точки останова на системных функциях и прочие вещи. Не знаю, как он это делает, нет опыта работы с протекторами. Думал, что bochs может подойти для этого. Теперь понятно, что у него более узкие цели использования.
Аноним 17/10/16 Пнд 10:57:45 #52 №858186 
Как не обсираться с памятью в сишечке? Есть какой-то мануал на все случаи жизни?
Аноним 17/10/16 Пнд 10:59:51 #53 №858188 
>>858186
>Как не обсираться с памятью в сишечке?
Не писать на сишечке, когда можно
Аноним 17/10/16 Пнд 11:02:00 #54 №858190 
>>858188
Но я хочу писать на сишечке всегда, так как писать на ней очень приятно. А ещё я хочу писать хорошо, освобождать память когда надо, выделять память когда надо, что читнуть?
Аноним 17/10/16 Пнд 12:26:14 #55 №858219 
soC i bolshe ne proC
Аноним 17/10/16 Пнд 12:26:48 #56 №858220 
>>858190
жабку читни
Аноним 17/10/16 Пнд 13:37:55 #57 №858247 
Объясни добродвач почему этот код нормально работает?

int main (argc, argv )

int argc; char argv;
{
return EXIT_SUCCESS;
}
Аноним 17/10/16 Пнд 13:39:05 #58 №858248 
fix
char argv;
Аноним 17/10/16 Пнд 13:40:08 #59 №858249 
>>858247
А что не так?
Аноним 17/10/16 Пнд 13:40:11 #60 №858250 
2fix
char argv[][];
Аноним 17/10/16 Пнд 13:41:13 #61 №858252 
Хочу понять тонкость этого синтаксиса.
Аноним 17/10/16 Пнд 13:44:59 #62 №858256 
>>858252
http://stackoverflow.com/a/3092074
Аноним 17/10/16 Пнд 15:34:00 #63 №858325 
>>858247
Потому что твой компилятор поддерживает древний синтаксис. Так писали до принятия стандарта ANSI C'89.
Аноним 17/10/16 Пнд 20:17:52 #64 №858529 
Ананасы, как можно для sublime 3 скачать пакеты и поставить их без инета? С анакондой просто дома установить и скопировать потом файлы на работе прокатило, с плагинами для c/c++ вообще нихуя. Пиздец, какое же уебанство, когда все думают, что везде есть доступ в интернет, и можно нужные пакеты/документацию подтянуть. Все, кроме твоего работодателя, блять.
Аноним 17/10/16 Пнд 20:20:00 #65 №858530 
>>858529
> Все, кроме твоего работодателя, блять.
БЕГИ ОТТУДА, ДУРАК, ПОКА ЕСТЬ СИЛЫ
Аноним 17/10/16 Пнд 20:21:47 #66 №858531 
>>858530
Вся ирония в том, что я две недели назад только туда устроился. Когда устраивался, собеседовался в отделе N, там инет был, я видел. А устроили меня в итоге в отдел M, и вот тут началось самое веселое.
Аноним 17/10/16 Пнд 20:35:58 #67 №858535 
>>857920
Ох этот пда.
Аноним 17/10/16 Пнд 20:38:07 #68 №858537 
>>858190
Си пляс пляс читни.
Аноним 17/10/16 Пнд 21:08:51 #69 №858567 
>>858529
У тебя нет инета на работе? А что если нужно что-то загуглить по работе? Сосать хуй?
Аноним 17/10/16 Пнд 21:09:35 #70 №858568 
>>858529
Поставь дома, скопируй профиль Sublime целиком (в portable-режиме это папка Data). Можешь вручную пакеты выкачать и скинуть в Data/Installed Packages, алсо в пакетах есть .json-ы, в них могут быть описаны зависимости.

>>858186
> Как не обсираться с памятью в сишечке?
Всегда помнить, что ты пишешь на сишечке. Писать на сишечке. Это навык, как ковырять в носу. Если не будешь ковырять - не научишься.
Аноним 17/10/16 Пнд 21:15:21 #71 №858575 
>>858567
Есть отдельный комп в отделе, с него можно гуглить.
>>858568
>в portable-режиме
Я не знал, что его портабельным можно поставить. Как это сделать? Не помню, чтобы я видел такую опцию при установке.
Я думал, может, пути разные - пакеты лежат ведь в AppData пользователя, а у меня разные имена пользователей на компах.
А как вручную пакеты скачать? Не нашел у многих такой возможности.
Аноним 17/10/16 Пнд 21:41:11 #72 №858591 
>>858575
> как это сделать
https://www.sublimetext.com/3dev - есть ссылки на zip-архивы, которые установки не требуют.
> пакеты лежат ведь в AppData пользователя, а у меня разные имена пользователей на компах
Похуй должно быть, там обычно не используются абсолютные пути.

> А как вручную пакеты скачать?
Сходи на https://packagecontrol.io/, найди пакет, на странице описания есть ссылка на гитхаб, на гитхабе просто .zip сохраняешь (Clone or download) и меняешь расширение на .sublime-package. Или
https://packagecontrol.io/channel_v3.json распарси чем-нибудь. Но лучше не занимайся хуйней, а сделай что-нибудь с интернетами на работе. Модем под пряжкой ремня протащи, хуй знает.
Аноним 17/10/16 Пнд 21:49:01 #73 №858598 
>>858591
О, вижу, спасибо.
>Похуй должно быть, там обычно не используются абсолютные пути.
Тогда очень странно. Видимо, в реестре что-то прописывается или в других каких-то местах, потому что у меня анаконда с ошибкой стартует, но работает, а из >>857683 списка ни один не заработал. Дома, естественно, всё работает нормально.
>на гитхабе просто .zip сохраняешь (Clone or download)
Просто у некоторых есть именно zip, но я не понял, как его скормить саблайму, а где-то просто сборище сорцов, я думал, он такое не схавает.
Инет на работе не замутить - пизды дадут скорее всего. Я думаю, там из-за секретности разработок его нет.
Аноним 17/10/16 Пнд 22:53:08 #74 №858634 
Ананасы, обязательно ли использовать fPIC?
Я щас скомпильнул либу без него, и все нормально работает.
Или либа будет работать только на моем компе?
Аноним 17/10/16 Пнд 22:56:20 #75 №858640 
>>858634
32-битные либы можно без PIC, будут использоваться релоки, как у нормальных людейв Windows.
Аноним 17/10/16 Пнд 23:00:43 #76 №858643 
>>858640
Ну а вообще? Лучше с фпиком?
Аноним 17/10/16 Пнд 23:04:55 #77 №858647 
Лан ананасы я узнал. Лучше с пиком.
Аноним 17/10/16 Пнд 23:05:48 #78 №858648 
>>858643
На x86 спорно, компилятору приходится делать немного больше телодвижений и по сути лишиться одного из регистров для достижения этого самого PIC, но зато системе не приходится ничего патчить при старте, и дублировать из-за этих патчей страницы кодовой секции между разными пользователями либы.
Аноним 18/10/16 Втр 08:36:55 #79 №858820 
void bump(void);
Аноним 18/10/16 Втр 19:54:44 #80 №859194 
Как нормально считать строку с пробелами? Используя gets() CLion просто перечеркивает функцию, и говорит что использовать её неправославно.
Аноним 18/10/16 Втр 20:13:50 #81 №859210 
>>859194
Разобрался. Вся проблема в Clion. В code::blocks и VS все отлично работает. CLion почему-то не любит gets, и напрочь отказывается работать с fgets. Просто скипает её.
sageАноним 18/10/16 Втр 21:31:47 #82 №859225 
>>859194
>Используя gets() CLion просто перечеркивает функцию, и говорит что использовать её неправославно.
И он прав. В C11 функцию вообще выпилили. А вот fgets() остиалась, ее и используют.
Аноним 18/10/16 Втр 21:32:50 #83 №859226 
Антуаны, есть строка {a, b, c}
Как мне сделать массив int со значением этой строки в аскии-коде? То есть {a, b, c} = {97, 98, 99} ?
Аноним 18/10/16 Втр 21:36:06 #84 №859227 
>>859226
Поясни. Строка "abc" или "{a, b, c}"? Если первое, то это массив char, просто скопируй в цикле ints[n] = string[n]. Если второе, то тебе нужен синтаксический разбор. Используй strtok, чтобы найти запятые.
Аноним 18/10/16 Втр 21:43:39 #85 №859233 
>>859227
Давай разберем по частям мною написаное

Есть массив char*, который заполняется пользователем:
char text [100];
fgets (text, 100, stdin);

Допустим пользователь вводит abc

Мне нужно добавить к каждому значению его ввода 10. То есть a, b и с представить в Аскии-коде (97, 98, 99), и сделать (107, 108, 109). Результат записать обратно в другой массив char. В нем должно быть (k, l, m) по аскии.
Аноним 18/10/16 Втр 21:45:26 #86 №859236 
>>859233
Я сначала подумал просто сделать массив интов со значениями, но потом понял что надо именно второй массив делать чаровский. Проблема как раз стоит в переводе числа. Если например вывести text[1] в "%i", то получу не аски-код, а мусор типо 1274863
Аноним 18/10/16 Втр 22:01:42 #87 №859246 
>>859233
Так текст и так всегда представлен числами, тебе не нужны дополнительные телодвижения.
for (size_t j = 0, n = strlen(text); j < n; j++) {
printf("before: %c (%i); ", text[j], text[j]);
text[j] += 10;
printf("after: %c (%i)\n", text[j], text[j]);
}
sageАноним 18/10/16 Втр 22:06:28 #88 №859252 
>>859246
http://ideone.com/8P5Ydy
Аноним 18/10/16 Втр 22:07:53 #89 №859253 
>>859246
Спасибо, так получилось. Только вылез другой трабл. Добавить 10 это я просто сделал такой пример. По задаче мне надо каждую бувку поднести в n степень и поделить на число m. Остаток от деления и будет результат. При маленьких числах всё работало, но с такими уже ествественно не хочет.

При
for (int i = 0, n = strlen(text); i < n; i++) {
secretText = pow(text, e) % m;
printf ("%c", secretText);
}

получаю error: invalid operands of types ‘__gnu_cxx::__promote_2<char, long unsigned int, double, double>::__type {aka double}’ and ‘long unsigned int’ to binary ‘operator%’|
Аноним 18/10/16 Втр 22:09:16 #90 №859256 
>>859253
Забыл добавить, что у меня 'e' это 3, а 'm' это 8.
Аноним 18/10/16 Втр 22:10:04 #91 №859257 
>>859253
secretText = pow(text, e) % m;
проебалось при копипасте
Аноним 18/10/16 Втр 22:29:17 #92 №859287 
>>859253
А, ты RSA пилишь? Ты делаешь это неправильно. pow предназначен для вычислений с плавающей точкой и не гарантирует тебе точный результат для таких маленьких чисел, на самом деле, гарантирует, но лучше напиши свой целочисленный modpow(n, e, m): умножай n саму на себя, сколько нужно раз, и при каждом умножении, чтобы не переполнить переменную, сразу делай % m (потом допилишь это до полноценной длинной арифметики). Алсо, твой m должен быть произведением двух простых чисел, а у тебя сколько в нем множителей и какие?
Аноним 18/10/16 Втр 23:05:06 #93 №859346 
14768211067480.png
Почему в данном случае name выделяется память, а path нет?
Аноним 18/10/16 Втр 23:09:12 #94 №859350 
14768213524470.jpg
Обратите внимание, почему такая разность кривая получается? Он что, не умеет вычитать два double-числа?
sageАноним 18/10/16 Втр 23:18:27 #95 №859356 
>>859346
man 3 getenv
Аноним 18/10/16 Втр 23:46:49 #96 №859371 
>>859346
Потому что создается новый, свой собственный объект name, а уже существующий path, созданный кем-то раньше, получают извне. Конкретно в случае с getenv(), память для значения переменной окружения выделяется во время запуска программы. В какой-то другой реализации getenv() могла бы так же внутри себя вызывать malloc().

>>859350
Он-то умеет. Ты - нет. Числа с плавающей точкой по определению не могут хранить любые значения, поэтому они хранят приближенные значения, достаточно точные относительно порядка числа. И с такими огромными числами, как у тебя (а они больше, чем максимальное целочисленное значение, которое влезает в double без потерь), тыщей меньше или больше - особой разницы нет. Если тебе зачем-то нужна большая точность, попробуй long double.
Аноним 18/10/16 Втр 23:46:54 #97 №859372 
14768236147240.png
Помогите, аноны. Несколько дней мучаюсь.
Почему-то scanf, вместо того, чтобы считать новый символ с потока, пишет в переменную предыдущий введеный, и программа впадает в бесконечный цикл.
http://pastebin.com/6jqmBT05
Аноним 18/10/16 Втр 23:47:41 #98 №859374 
>>859371
> long double.
А вот с ним та же хрень
Аноним 18/10/16 Втр 23:57:42 #99 №859379 
>>859374
Может и long double не хвтать. А %lf указываешь? Если тебе нужно фиксированное число знаков после запятой и большие числа, посмотри в сторону fixed-point.

>>859372
После того, как scanf() сфэйлилась, пользовательский ввод еще в буфере ввода. И поэтому вот там, где ты просишь пользователя выбрать correct menu item, прочитай весь остаток текущей строки (просто вызывай getchar() в цикле, пока не встретишь \n).

Более правильный метод - нигде, кроме laba1.c, не пользоваться этим говном. Вместо этого лучше читать предварительно целую строку ввода с помощью fgets() или еще как-нибудь, а потом уже парсить - хочешь, тем же sscanf(), а хочешь - strtod()/strtol() и прочими. Тогда, при ошибке, ты просто выбросишь строку и сделаешь fgets() снова.
Аноним 19/10/16 Срд 00:00:17 #100 №859380 
>>859379
> А %lf указываешь?
Блин, такого не должно быть...
Ладно, мои траблы.
Аноним 19/10/16 Срд 00:00:35 #101 №859381 
>>859380
Ну, всмысле указывал
Аноним 19/10/16 Срд 00:01:43 #102 №859382 
>>859379
Большое тебе спасибо!
Аноним 19/10/16 Срд 00:02:24 #103 №859383 
>>859381
Там заглавная L. Всегда путаюсь, извини.
Аноним 19/10/16 Срд 01:44:50 #104 №859420 
14768306907040.jpg
Аноны, помогите дауну. Есть пикрилейтед программа. Как сделать так, чтобы какому-нибудь новому массиву типа char присваивалось значение, которое в данной программе является выводом, то есть как, сделать так, чтобы создавалась новая строка (например) str3[]="cccdd". Желательно, напишите работающую программу (я в программировании месяц, постараюсь поумнеть).
Аноним 19/10/16 Срд 01:47:33 #105 №859421 
>>859420
rez на пике указывает на нужный тебе кусок строки. Все, что тебе нужно сделать, это создать буфер достаточного размера и скопировать туда этот кусок:
char str3[16];
strcpy(str3, rez);
Аноним 19/10/16 Срд 07:17:33 #106 №859469 
>>859287
Да, это RSA. Спасибо что подкинул идею, сегодня на парах попробую реализовать.

>вой m должен быть произведением двух простых чисел

У меня m = (p-1) + (q - 1), где p и q целые простые числа, и p != q.
Поиск скрытого и открытого ключа я реализовал как тут >>857840. Допустим при вводе 3 и 5, m = 8, потом через функцию поиска ключей получаю e = 3, d = 11.
http://pastebin.com/pFBUuEEi
Аноним 19/10/16 Срд 11:27:02 #107 №859562 
>>859469
> у меня m = (p-1) + (q - 1)
Это стандартная путаница. В математике про вычисления по модулю говорят как о (mod m), а в терминах RSA у тебя должно быть mod n, где n - произведение p и q.
Аноним 19/10/16 Срд 15:46:34 #108 №859747 
http://pastebin.com/dWg1Njc9

Есть инжектор функции в память процесса, и четыре функции, которые я пытаюсь заинжектить. Проблема в том, что инжект каждой из них происходит успешно, но приводит к крашу приложения.
В чем тут проблема, почему даже пустая функция крашит все?
1437 19/10/16 Срд 18:53:52 #109 №859904 
Подскажите, в Си есть функции min, max, random? Если нет, то какие аналоги есть?
Аноним 19/10/16 Срд 18:59:53 #110 №859912 
>>859904
min и max надо делать макросами препроцессора, потому что иначе придется заводить такую функцию под каждый тип, причем с разным названием. Рандом есть, смотри rand, srand и т. п.
Аноним 19/10/16 Срд 19:02:27 #111 №859915 
>>859904
#define min(a,b) ((a<b)?a:b)
#define max(a,b) ((a>b)?a:b)
rand()
Аноним 19/10/16 Срд 19:05:05 #112 №859917 
>>859915
азаза, в скобочки не обернул
Аноним 19/10/16 Срд 19:06:46 #113 №859920 
>>859915
А если a=b?
sageАноним 19/10/16 Срд 19:08:02 #114 №859921 
>>859920
Не знаешь, чему в этом случае равно условие a<b ?
Аноним 19/10/16 Срд 19:08:35 #115 №859922 
>>859921
False
Аноним 19/10/16 Срд 19:09:08 #116 №859923 
>>859922
*0
сишкофикс
sageАноним 19/10/16 Срд 19:09:46 #117 №859924 
>>859922
Тогда в чём вопрос?
Аноним 19/10/16 Срд 19:10:55 #118 №859925 
>>859915
#define min(a, b) ((a<b)?a:(a==b)?a: b)
sageАноним 19/10/16 Срд 19:11:58 #119 №859926 
>>859925
Зачем 2 условия?
1437 19/10/16 Срд 19:26:06 #120 №859940 
А как сделать рандом из промежутка?
sageАноним 19/10/16 Срд 20:03:52 #121 №859972 
>>859940
reinterpret_cast<рандом>(промежуток);
Аноним 19/10/16 Срд 20:05:34 #122 №859976 
14768967347690.gif
>>859972
Аноним 19/10/16 Срд 22:43:15 #123 №860127 
>>859747
Нужно больше кода.
1) Так не инжектят. Вставляют джамп, чтобы не затереть остальные фунции (и даже с джампом бывают проблемы). А ты пишешь 250 байт. Мало того, что ты наверняка затираешь дохуя всего, так ты еще тупо копируешь кусок своего кода в чужое адресное пространство.
2) Ты уверен, что твоя целевая функция - cdecl, а не stdcall?

>>859940
Используй школьную арифметику, Люк. Например: ((double) rand() / RAND_MAX) даст тебе случайное значение из промежутка 0..1, назовем его rnd. Ты можешь сделать start + (int) ((end - start + 1) * rnd). Или можешь сделать start + (rand() % (end - start + 1)), но распределение будет гораздо хуже, и работать это будет только если диапазон меньше RAND_MAX.
Аноним 20/10/16 Чтв 02:35:11 #124 №860336 
Может быть, кто-то ещё не видел: “Arguing about Undefined Behavior” с CppCon 2016. Да, это про кресты, но код по большей ничем не отличается от сишного.

https://www.youtube.com/watch?v=yG1OZ69H_-o
sageАноним 20/10/16 Чтв 03:11:16 #125 №860339 
>>860336
Вот ещё питушня про UB
https://www.youtube.com/watch?v=g7entxbQOCc
sageАноним 20/10/16 Чтв 04:45:44 #126 №860345 
>>860336
Неплохой доклад, да. Меня, как и докладчика, заебали эти идиотские заявления "при UB может произойти что угодно, например, отформатироваться твой диск" и т.п.
sageАноним 20/10/16 Чтв 04:51:57 #127 №860346 
>>860336
>>860345
И да, эта петросянская шуточка про demons out of your nose. Не знаю, что больше раздражает. То ли сама шутка, то ли то, что с неё каждый раз все ржут.
sageАноним 20/10/16 Чтв 04:56:57 #128 №860348 
>>860345
> Меня, как и докладчика, заебали эти идиотские заявления "при UB может произойти что угодно"
Ну, например, обычный use after free может привести к очень интересным последствиям, особенно если программа работатает с файлами. Хотя сознательно компилятор ничего тереть не будет, конечно же.
Аноним 20/10/16 Чтв 12:31:52 #129 №860490 
>>860127
http://pastebin.com/xynv2ZaM

Я выделяю 511 в самом начале. Потом туда все записываю каждый раз и вызываю тред (так делает автор, я бы сделал по-другому, факт в том, что крашится пустая функция.
2. Не уверен.

да, там msvc, если что

Как бы ты заинъектил функцию, которая ничего не делает? Я думаю, что все-же в коде асм проблема, ибо делфипацаны так (почти так) инъектят уже много лет.
Аноним 20/10/16 Чтв 21:34:57 #130 №860958 
>>860490
> PAGE_READWRITE
Где VirtualProtectEx(PAGE_EXECUTE_READ) после записи? Или или хотя бы PAGE_EXECUTE_READ_WRITE при аллокации.

Алсо, нет смысла выделять 511 байт (почему такая константа?). Минимальный размер страницы 4К, меньше 4К VirtualAlloc тебе не выделит в любом случае.

Алсо, ты бы ошибки обрабатывал, что ли. Может, у тебя вообще процесс не открывается, или что-то не пишется.

> CreateRemoteThread(..., m_injFunction, ...)
Функция должна быть stdcall. Ей передается один параметр, поэтому либо ты либо помечаешь ее как __stdcall (WINAPI, CALLBACK, PASCAL), либо не забываешь retn 4.

Алсо, отключаешь ли ты проверки стека (/GS, /RTC и т. п.) при компиляции? Потому что та же 2015 студия в отладочный билд втыкает call stack_check, даже в пустую функцию. А функцию stack_check ты не копируешь, и получается call вникуда. Посмотри дизасм, удостоверься, что все ок.

> Как бы ты заинъектил
> которая ничего не делает
Ничего не делающую функцию инжектить незачем. А что-то делающую - целой DLL-кой. По крайней мере, не нужно будет задумываться о других функциях и переменных и пытаться заставить компилятор собрать position-independent код без лишнего говна. Если есть античит, то все, конечно, не так просто.
Аноним 20/10/16 Чтв 21:43:28 #131 №860964 
http://pastebin.com/fmHXYeef
Как сделать, что бы при делении на 0 в консоли выводилось не
inf, а "Деление на 0" например?
Cкорее всего, можно изи сделать через if, но я не понимаю как
Пытаюсь проверять через insinite но нихуя не получается
мимо месяц в программировании попалась самая сложная задачка в группе сдавать завтра утром
Аноним 20/10/16 Чтв 21:44:12 #132 №860967 
isfinite*
>>860964
быстрофикс
Аноним 20/10/16 Чтв 22:12:58 #133 №860986 
Решил уже, через if и правда было слишком легко
>>860964
Аноним 20/10/16 Чтв 22:38:02 #134 №861002 
14769922825790.png
На хую я вижуаловский копилятор вертел, блядь

Поясните, как без мозгоебства на винде на связке C+SDL писать/
Аноним 20/10/16 Чтв 22:42:56 #135 №861004 
>>861002
Код покажи. Ты явно что-то очень странное делаешь.
Аноним 20/10/16 Чтв 22:50:57 #136 №861009 
14769930578440.png
>>861004

Аноним 20/10/16 Чтв 23:01:01 #137 №861021 
>>861009
Ну оно же собирается без ошибок. А баги в проверке орфографиисинтаксиса у них часто, особенно когда с clang/c2 собираешь - компилируется ок, а ошибки подчеркивает. Там рядом с кнопочкой сворачивания окна можно тыкнуть и описать проблему. Сделай мир лучше.
sageАноним 20/10/16 Чтв 23:19:44 #138 №861056 
>>861009
Если очень раздражает, раздели декларацию структуры player и декларацию переменной player - оно перестанет ругаться. Судя по всему, во время определения переменной оно почему-то считает, что текущая структура struct player - анонимная, как бы странно это не звучало.
Аноним 20/10/16 Чтв 23:25:04 #139 №861061 
Объясните, где ошибся, уже который раз пытаюсь написать функцию перевода дробной части числа в другую систему счисления и нихуя не выходит, всегда какая-то ошибка, просто не понимаю, что я делаю не так.
http://ideone.com/CCzhlI (первая попытка),
http://ideone.com/isdbLH (вторая попытка).
На самом деле, попыток было гораздо больше, чем две.
Аноним 20/10/16 Чтв 23:30:58 #140 №861063 
>>861061
Мне кажется, что эти нолики в результате пытаются рисунком передать какое-то послание.
Аноним 20/10/16 Чтв 23:46:00 #141 №861071 
>>861061
У тебя запятые в пользовательском вводе, а scanf() не ожидает их увидеть. Оставь только пробелы, и все заработает.
Аноним 21/10/16 Птн 00:05:57 #142 №861081 
>>861071
Спасибо, анон.
что-то я туплю на ровном месте
Аноним 21/10/16 Птн 00:16:14 #143 №861089 
Сети и Си, что почитать?
Проблема: обмен пакетами между клиентом и сервером.
Нужно разобраться в вопросе как все устроено, и какие инструменты доступны в Си.
Аноним 21/10/16 Птн 00:17:36 #144 №861092 
>>861089
Попробуй википедию, потом, когда поймешь основы нагугли статейки или хабр. Там уже будешь иметь конкретные вопросы и список литературы.
Аноним 21/10/16 Птн 00:23:22 #145 №861097 
14769986027610.jpg
>>861089
Для обмена пакетами в Си, как и в других языках, используют сокеты. Если у тебя Windows, возьми что-то типа пикрелейтед. Если Linux - есть Cтивенс с его Unix Network Programming (его же TCP/IP Illustrated и для винды стоит почитать, чтобы понимать, как вообще сеть работает). Простые хелловорлды с блокирующими сокетами заработают с минимальными правками в любой ОС, а когда дело дойдет до неблокирующих сокетов - читай книжки, статьи, ну и маны, конечно.
Аноним 21/10/16 Птн 00:25:51 #146 №861099 
>>861097
> Если у тебя Windows, ставь Linux
Не благодари.
Аноним 21/10/16 Птн 03:05:36 #147 №861159 
>>861089
Хз, то или нет о, вчера анон ссылкой кидался, а я схоронил
Аноним 21/10/16 Птн 03:06:11 #148 №861160 
А ссыль то и позабыл
http://beej.us/guide/bgnet/
Аноним 21/10/16 Птн 03:18:37 #149 №861161 
Уна делла вопросо:
Читаю Hacking: The Art of Exploitation
Естественно, дизассемблированные листинги оче разные, у автора одни мнемоники идут, у меня другие. Как думаете, это компилятор оптимизирует, или оттого что компиляторы разных версий?
Аноним 21/10/16 Птн 03:24:48 #150 №861162 
>>861161
Показал бы хоть. Попробуй с -O0 компилировать, тогда компилятор точно не будет ничего оптимизировать.
Аноним 21/10/16 Птн 03:37:00 #151 №861165 
>>861162
Да, спасибо. Я думаю, это изза того что книга 2003 года, и в ней GCC version 3.3.6 используется. Я лучше погуглю как поставить две разные версии компилятора
Аноним 21/10/16 Птн 03:38:22 #152 №861166 
>>861165
Ставь сразу на виртуалку и остальной линукс тех лет. А то несколько тредов назад кто-то тут на ASLR напарывался с этой книгой.
Аноним 21/10/16 Птн 03:57:01 #153 №861168 
>>861166
Да, ты прав. Погуглил - только это и работает, приложенный iso надо использовать
Аноним 21/10/16 Птн 09:50:42 #154 №861202 
>>861160
>>861097

спасибо, то что нужно.
Причем второй коммент - вообще самый сок в сжатом виде по тому, что необходимо + там в конце учебника полно другой литературы которую бегло посмотрел, и меня заинтересовала так же. Спасибо.
Аноним 21/10/16 Птн 12:29:31 #155 №861255 
>>861168
Довольно потно идет книжка, должен сказать, от адресов в глазах рядит лол
Аноним 21/10/16 Птн 13:23:56 #156 №861276 
>>861168
>приложенный iso надо использовать
В той ебаной системе курсор мышки глючит.
Аноним 21/10/16 Птн 13:35:40 #157 №861284 
>>861276
Да? Чот не заметил, хотя я мышой не сильно елозил. Вся проблема была в том, что я диск скачал с нашего русского издательства, по фтп. Он не хотел ставится в виртуалбокс, ну я и полез хуй пойми куда старые компиляторы, оптимизации. А нужно то всего было скачать диск с нормального места
Аноним 21/10/16 Птн 13:42:44 #158 №861285 
14770465650640.png
>>860958
Было PAGE_WRITE, заменил на PAGE_EXECUTE_READWRITE
Какой смысл в VirtualProtectEx, мы аллоцировали память, про которую клиент не знает, получили все права и делаем что хотим.
Ошибки я обрабатываю, для теста я считываю значение ХП из клиента. А инъектирование возвращает успех. Мне нужно заинжектить не один раз, а делать это постоянно. Память аллоцируется при старте под все возможные функции и соотетствующим образом используется.

Тем не менее исправив твои замечание, свершилось чудо, которое я не мог узреть три года, пустая функция заинжекшена успешно без краша.
Разреши еще немного заебать парой вопросов:
1. Я попробовал инжектить более продвинутую функцию simpleF(). В дампе передо мной находится то, как msvc перепихнул simpleF() ? По какой причине в асм коде появилась строчка, которая вызывает краш? Какого черта код сам забирает параметры, хотя это же должна делать по идее функция, которую мы вызовем?
2. Если предположить, что функция

MOV ESI, 0x007F4C80
CALL ESI

Должна попать два аргумента со стека, семантика верна, и краша не должно быть? всмысле ошбика уже в предугадывании характера функции, а не в коде ассемблера
3. ВНЕЗАПНО на вирустотале данный код уже помечен 5 антивирусами, на какое апи они триггерятся?
4. Автор статьи также предлагал более универсальный метод по инжекту - прямое записывание функции. Он бинарно копирует асм код из олли, и инжектит уже фиксированное количество байт для каждой функции

void Skill(DWORD id)
{
char fdata[39]="\x60\x6A\xFF\x6A\x00\x6A\x00\x68\x00\x00\x00\x00\x8B\x0D\x00\x00\x00\x00\x8B\x89\x00\x00\x00\x00\x8B\x89\x00\x00\x00\x00\xB8\x00\x00\x00\x00\xFF\xD0\x61\xC3";

DWORD func=F_SKILL;
DWORD ba=BA;
DWORD dga=D_GA;
DWORD ps=PERS_STRUCT;

memcpy(fdata+8,&id,4);
memcpy(fdata+14,&ba,4);
memcpy(fdata+20,&dga,4);
memcpy(fdata+26,&ps,4);
memcpy(fdata+31,&func,4);
InjectFunction(fdata,39);
}

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

http://pastebin.com/ZWXYGJF0
Аноним 21/10/16 Птн 15:12:10 #159 №861366 
У меня есть библиотека .lib, написанная на ассемблере. Как написать к ней хедер на си, чтобы подключать в си-проектах? Основной тип данных в этой библиотеке - DWORD (unsigned long), в хедере я пишу что-то вроде:

#define DWORD unsigned long

DWORD func(DWORD arg);

Но когда я подключаю этот хедер к проекту, он не компилится: Undeclared identifier 'DWORD' (did you mean 'argv'?)
Undeclared function 'func

Что делать? Объявлять функции как extern? А с двордом что?
Аноним 21/10/16 Птн 15:40:26 #160 №861398 
Привожу свои попытки написать хедер (два кодеса в одной пасте): http://pastebin.com/HsNbAKXY

Мануал:

_BigCreate (dword)InitValue
[LIBcore.asm]
creates a bignum and initializes it with the value InitValue
returns a pointer to the bignum

_BigDestroy (big )Big
[LIBcore.asm]
destroys the bignum Big

_BigCopy (big
)BigSrc, (big )BigDest
[LIBcore.asm]
copies BigSrc to BigDest

_BigCompare (big
)BigA, (big )BigB
[LIBcore.asm]
compares BigA and BigB
returns 1 if BigA > BigB
0 if BigA = BigB
-1 if BigA < BigB

_BigCompare32 (big
)BigA, (dword)Value
[LIBcore.asm]
compares BigA and Value
returns 1 if BigA > Value
0 if BigA = Value
-1 if BigA < Value
1437 21/10/16 Птн 15:58:49 #161 №861414 
Как задать размер массива переменной?
Аноним 21/10/16 Птн 16:02:31 #162 №861416 
>>861414
1437 21/10/16 Птн 16:43:03 #163 №861449 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//=========функциязаполнениямассива=========
int RandVector(int size, int massiv, int max_rand)
{
srand(time(0));
//рандомизация – установка начального псевдослучайного числа
for (int i = 0; i< size; i++)
{
massiv = 1 + (rand() % max_rand);
//случайное число в диапазоне от 1 до 10
}
return 0;
}

//=========функция вывода массива на консоль=========
int PrintVector(int size, int
massiv)
{
for (int i = 0; i< size; i++)
{
printf("%i ", massiv);
}
printf("\n");
return 0;
}
В чем ошибка?
Аноним 21/10/16 Птн 18:18:44 #164 №861516 
>>861414
На стеке никак. Только в куче:
int count = 100500;
T ptr = malloc( sizeof(T) count );
Аноним 21/10/16 Птн 18:21:57 #165 №861517 
>>861516
парсер звездочки съел
http://pastebin.com/sM7h7FMp
Аноним 21/10/16 Птн 20:34:27 #166 №861599 
>>861516
Ну вообще в C можно VLA

Но не нужно.
Аноним 21/10/16 Птн 21:23:30 #167 №861628 
>>861285
> какой смысл в VirtualProtectEx
Как альтернатива выделению с PAGE_EXECUTE_READWRITE. Выделилить read-write, записать, сделать execute-read. Дело вкуса, но это
> ВНЕЗАПНО на вирустотале данный код уже помечен 5 антивирусами
может снизить градус подозрительности у некоторых антивирусов. А возбуждаться могут даже на OpenProcess+WriteProcessMemory, там все сложно. Иногда и на хелловорлды ругаются. Даже не знаю, что предложить почитать. Васм закрылся, к сожалению.

> В дампе передо мной находится то, как msvc перепихнул simpleF() ?
В дампе код метода класса. Ты можешь легко вычислить методы по обращению к ECX без его предварительной инициализации. В ECX передается this.

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

> 0x007F4C80
> Должна попать два аргумента со стека
И указатель на объект в ECX.

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

>>861366
Ну у тебя все правильно, только не стоит объявлять псевдонимы дефайном, для этого есть typedef: typedef unsigned long myDWORD; И не стоит вообще делать тип DWORD, когда можно #include <stdint.h> и использовать uint32_t (если тебе нужен точный размер и 64-битной версии либы не предвидится).

>>861398
В пасте все должно компилироваться. Почему у тебя функции с подчеркиванием в начале? Алсо, extern писать не обязательно, функции по умолчанию и так extern.

>>861449
Если у тебя там massiv[i] в обеих функциях, то не вижу ошибок. Или ты в PrintVector всегда печатаешь численное значение указателя? https://ideone.com/ позволяет, во-первых, запостить код, не распидорасив его [i] и звездочками, а во-вторых, показать нам, что идет не так, раз уж тебе лень объяснить самому.
Аноним 22/10/16 Суб 00:25:41 #168 №861694 
>>861628
>Васм закрылся, к сожалению
А базу статей/примеров/постов форума админы не выкладывали?
Аноним 22/10/16 Суб 01:02:45 #169 №861702 
>>861694
Хуй знает. Существуют .chm со статьями и примерами, но я имел в виду форум и живых людей.
Аноним 22/10/16 Суб 01:23:59 #170 №861705 
>>861628
> Васм закрылся, к сожалению.
Это да, к большому сожалению. Теперь толпы школохацкеров-дегенератов разбежались повсюду и засирают всё своими хуками и прочим говном.
sageАноним 22/10/16 Суб 01:26:45 #171 №861706 
>>861705
Не припомню на васме прямо таких уж толп школьников с читами и хуками. Вот срач и политоту в хипе - помню, это да. И еще помню профи, которые могли ответить на любой вопрос.
Аноним 22/10/16 Суб 01:28:45 #172 №861707 
>>861702
tparser находит chm-ку только от 2004го года, которая немного устарела.
Аноним 22/10/16 Суб 01:47:54 #173 №861712 
>>861707
http://rutrackermirror.org/torrent-62156.html (2006)
http://rgho.st/6Z7bNy4PC 2ch (2007)
Еще на вебархиве есть многое.
Аноним 22/10/16 Суб 01:58:28 #174 №861714 
>>861712
О, спасибо, совсем забыл про вебархив. А были же дампы года 2012-14го, или мне кажется?
sageАноним 22/10/16 Суб 02:05:34 #175 №861715 
>>861714
Хуй знает. Наверняка где-то и полный дамп продается с прошлого взлома.
Аноним 22/10/16 Суб 04:03:23 #176 №861733 
Ананасы, срочно, решительно нужна добрая душа, которая забилдит древнюю libSDL https://www.libsdl.org/download-1.2.php под win32.
Аноним 22/10/16 Суб 04:33:51 #177 №861741 
>>861733
Чем тебя не устроили готовые билды?
Аноним 22/10/16 Суб 13:10:25 #178 №861812 
>>861599
Я вообще не понимаю, нахуя эту поебень добавили в стандарт. Кто вообще в здравом уме будет добровольно размещать массивы произвольного размера на стеке?
Аноним 22/10/16 Суб 15:30:46 #179 №861864 
Сап двач, программа не проходит так, как хотелось бы, в чем дело?
код - http://pastebin.ru/eSs1eT0W
задание 27 - https://pp.vk.me/c637825/v637825283/1af5c/Km9rz5QQ4Cw.jpg
Аноним 22/10/16 Суб 16:12:35 #180 №861876 
>>861705
Поставил тебе хук за щеку, проверяй.
Аноним 22/10/16 Суб 17:08:37 #181 №861903 
>>861876
Школохацкер-дегенерат, надо полагать?
Аноним 22/10/16 Суб 21:29:09 #182 №862041 
>>861876
Проверил, крашнулось с ошибкой 0xc0000005
Аноним 22/10/16 Суб 21:38:54 #183 №862050 
14771615349860.png
>>856777 (OP)
Щас буду делать "первую программу". Знаний по с ноль, аноны я долго будут с этим ебаться, если всю инфу буду черпать с учебника?
Аноним 22/10/16 Суб 21:45:38 #184 №862051 
>>861812
Расскажи, чем код: int length = 100; int array[length]; принципиально отличается от int array[100000]; int length = 100; (ну кроме считающегося в рантайме sizeof и проблем оптимизации)?

>>862050
Если ты формулу понимаешь, и на си не писал вообще, то провозишься пару часов, наверное.
Аноним 22/10/16 Суб 21:47:18 #185 №862052 
14771620387170.png
Блять, хочу запилить RSA для шифрования сессионного ключа блочного шифра. Очень хочется, чтобы ключ шифрования был 0xDEADFADE, но не получается сделать так, чтобы это число было обратимо по модулю функции Эйлера. Хуле так сложно подобрать параметры?
Аноним 22/10/16 Суб 21:55:38 #186 №862058 
>>861864
> программа не проходит так, как хотелось бы, в чем дело?
В строках 28-43 после совпадения одного из условий ты проваливаешься в проверку следующего, и получается, что ты считываешь с середины символа, а потом на следующей итерации опять с середины и т. д. Свяжи if-ы через else или воткни continue после каждого printf, выводящего символ.
Аноним 23/10/16 Вск 01:49:23 #187 №862196 
>>862051
> принципиально отличается
Тем, что с первым у тебя будет просто переполнение стека и сегфолт, а со вторым еще в придачу и выполнение произвольного кода через подмену адреса возврата.
Аноним 23/10/16 Вск 02:22:09 #188 №862202 
>>862196
> подмену адреса возврата
Ну во-первых, это уже малоактуально - компиляторы давно умеют детектить порчу стека. Во-вторых, это аргумент за VLA, но какой-то хуевый, потому что проверка запрошенного размера массива нужна в обоих случаях, и в обоих случаях она одинаковая.
Аноним 23/10/16 Вск 06:11:09 #189 №862235 
>>862196
>>862202
> со вторым еще в придачу и выполнение произвольного кода через подмену адреса возврата
Ну вот тебе подмена адреса возврата с VLA: http://ideone.com/M8agh6 Алсо, сможешь без отладчика пояснить, как работает magic()? Алсо, по техническим причинам это не сработает в Windows, вне зависимости от использованного компилятора.
Аноним 23/10/16 Вск 07:53:01 #190 №862237 
>>862235
Ваш компилятор слишком тупой и неправильно выделяет память под массив. Если запросить у него пару мегабайт места на стеке, то на винде всё просто упадёт.
>как работает magic()
Никак не работает.
sageАноним 23/10/16 Вск 08:00:42 #191 №862239 
>>862237
> Ваш компилятор слишком тупой и неправильно выделяет
Ваш - это чей? А как правильно выделять? На самом деле там ни единой страницы не выделяется - все уже выделено.

> Никак не работает.
Если она не работает, как тогда сообщение печатается? Закомментируй вызов magic() - не будет сообщения.
Аноним 23/10/16 Вск 08:27:21 #192 №862240 
>>862239
Она нужна всего лишь, чтобы адрес evil затолкался на стек. Возможно, это можно сделать с локальными переменными (или даже просто в массив записать) - мне лень сейчас в голове проворачивать, как оно там выделяется и работает. Сама функция ничего не делает.
>А как правильно выделять?
Явно не sub esp, xxx. Это, в общем, ещё один специализированный инструмент по отстрелу ног. Накой нужна фича с такой-то реализацией?
sageАноним 23/10/16 Вск 09:42:20 #193 №862249 
>>862240
> Накой нужна фича с такой-то реализацией?
Но ты ведь понимаешь, что VLA ценны только потому, что они "бесплатные"? Если аллокация массива будет сложнее, чем sub esp,nnn - такая фича будет никому не нужна, потому что тогда проще выделить массив фиксированного размера или сделать malloc(). Собственно я и начал весь этот ээ... разговор, пытаясь доказать, что массивы фиксированного размера ничем не хуже.
Аноним 23/10/16 Вск 17:29:58 #194 №862467 
У функции ReadFile есть ограничение на размер буфера? Почему зашифрованный RSA-блок размером 146 16-ричных цифр не считывается целиком моим кодом?

ZeroMemory(rsa_block, RSA_BLOCK_SIZE);
ReadFile(hEncryptedFile, rsa_block, RSA_BLOCK_SIZE, &dwBytesRead, NULL);
RSASetup(&rsa);
RSADecrypt(&rsa, rsa_block, RSA_BLOCK_SIZE, key);
RSAClear(&rsa);
Аноним 23/10/16 Вск 19:39:30 #195 №862523 
В общем реквестирую какой-нибудь не очень большой материал для повторения по С++. Потому как 2 года до этого писал на С++, сейчас пишу на Objective-C(пришлось временно перейти из-за нехватки проектов, а потом на работе С++ отдел развалился) и хочу перейти на другую работу чтобы писать на С++. И каждый раз на собеседованиях сталкваюсь с проблемами связанными с тем что на С++ давно не писал и то не помню как инициализировать char * строки и какая библиотека нужна чтобы использовать функции strcpy и strlen, то не помню как определять шаблоны, то не помню как определять операторы. Нет, начни я кодить - сразу бы загуглил, но вот с ходу вспомнить не всегда могу.
Какашечка 23/10/16 Вск 20:08:36 #196 №862534 
>>862523
эплоблядь, ты заебал со своими реквестами, тебе на топики похуй? или привык через жопу все. пиздуй к плюсанам.
Аноним 23/10/16 Вск 20:13:03 #197 №862535 
>>862534
Извиняюсь. Я просто тред плюсов и си перепутал.
Аноним 23/10/16 Вск 21:46:34 #198 №862586 
>>862467
Возможно, RSA_BLOCK_SIZE у тебя в байтах, а блок текстом? И вообще, где возвращаемое значение ReadFile, где GetLastError?
Аноним 23/10/16 Вск 22:54:37 #199 №862653 
>>862586
>RSA_BLOCK_SIZE у тебя в байтах, а блок текстом
RSA_BLOCK_SIZE равен логарифму по основанию 16 от модуля RSA, т.е. максимальную длину 16-ричного числа по этому модулю.

Я хочу сохранять в заголовке файла 16-ричные числа как текст, читать их оттуда как текст и расшифровывать, потому что моя либа это позволяет делать.
Аноним 23/10/16 Вск 23:00:50 #200 №862659 
>>862653
Хм, помогло увеличение RSA_BLOCK_SIZE на единицу. Я немного проебался с логарифмом. Тестовая программа нормально работает.
Аноним 23/10/16 Вск 23:05:31 #201 №862661 
Алсо, насколько важно в системном коде проверять коды возврата? Они помогают избежать неопределенного поведения при ошибке, но здорово раздувают размер кода.
Аноним 23/10/16 Вск 23:12:31 #202 №862664 
>>862661
настолько, насколько тебе важна стабильная работы программы
Аноним 24/10/16 Пнд 04:59:08 #203 №862766 
https://www.youtube.com/watch?v=MUNRvqpske0 вдрух кому интересно
Аноним 24/10/16 Пнд 06:27:53 #204 №862774 
Пиздос, читаю Прату. Глава про указатели и многомерные массивы. Вот прочитал - как будто не читал вовсе.
Аноним 24/10/16 Пнд 07:50:16 #205 №862779 
>>862774
Бумажка с ручкой тебе поможет. Зарисовывай. Ну и отладчиком тоже смотри.
Аноним 24/10/16 Пнд 13:57:33 #206 №862865 
Как на WinAPI узнать расширение файла и проверить его на соответствие всем возможным расширениям из списка? Выглядит как пердолинг.
Аноним 24/10/16 Пнд 14:03:08 #207 №862867 
>>862865
Как на WinAPI найти сумму элементов на чётных позициях в массиве?
Вот точно так же.
Аноним 24/10/16 Пнд 14:03:11 #208 №862868 
>>862865
PathFindExtension, а на соответствие - это ты как-нибудь сам. С маленьким списком и цикл ок, с большим изобрети хэшик какой-нибудь. Но судя по
> Как на WinAPI
ты тот самый пидор, который пишет криптолокер.
sageАноним 24/10/16 Пнд 14:06:16 #209 №862870 
>>862867
Ну, учитывая многобразие поддерживаемых форматов путей в Windows, а также то, что расширения у файла может не оказаться, решения типа strrchr(..., '.') - это не самый правильнный выход, лучше обращаться к уже отлаженной функции ОС.
Аноним 25/10/16 Втр 06:56:54 #210 №863253 
Няхи, читал ктонибудь? Как вам?
https://www.crcpress.com/X86-Assembly-Language-and-C-Fundamentals/Cavanagh/p/book/9781466568242
sageАноним 25/10/16 Втр 08:12:11 #211 №863262 
>>863253
Содержание выглядит как пересказ интеловского мануала.
Аноним 25/10/16 Втр 08:39:29 #212 №863263 
>>863253
ода из миллиарда подобных

по асму читай тома свана, однозначно
Какашечка 25/10/16 Втр 10:11:50 #213 №863286 
Встретил слово 'tuple' в алгоритме работы со списком. Это еще че за хуйня? Понятно, что имеют ввиду элемент списка, но в чем семантическое отличие от 'node'?
Аноним 25/10/16 Втр 12:56:38 #214 №863322 
>>863263
Блин, книга то древняя Тасм, дос. Хотя пишут что написана суперски.
Какашечка 25/10/16 Втр 15:14:03 #215 №863381 
>>863322
ого, а ты сразу на винапи хочешь вкатится, силен хули.
Аноним 25/10/16 Втр 15:27:45 #216 №863388 
>>863381
Да нет же!Нет!
Какашечка 25/10/16 Втр 15:46:59 #217 №863397 
>>863388
ты же понимаешь, что асм под винду и асм под никс и асм под железо на одной платформе схожи только синтаксисом и то невсегда. асм под арм и асм под 86 отличны в синтаксисе. учи хаскел.
Аноним 25/10/16 Втр 15:53:06 #218 №863405 
>>863397
Все ассемблеры одинаковы. Если знаешь один-два, следующий учится за вечер.
Аноним 25/10/16 Втр 17:33:47 #219 №863454 
анон, что я делаю не так? чому не работает?
http://rgho.st/69DgdmLqt
Какашечка 25/10/16 Втр 17:45:08 #220 №863456 
>>863454
а ты хитрюша, ссу тебе в ротешник.
Аноним 25/10/16 Втр 17:54:23 #221 №863458 
>>863454
> printf("Wrong");
> system("cls");
У меня от тебя ZEN ENGINEERING.
Аноним 25/10/16 Втр 17:59:56 #222 №863460 
>>863458
Ну на тролль дауна пожалуйста.
Вставлю паузу сюда, но ведь работать не начнёт.
Аноним 25/10/16 Втр 18:01:18 #223 №863462 
>>863460
Блядь, ну ты нормальный вообще? Ты выводишь сообщение, потом очищаешь экран. А потом выходишь из функции, а потом из программы. Убери нахуй все свои cls.
sageАноним 25/10/16 Втр 18:06:42 #224 №863465 
>>863460
Алсо, ты в game() break в switch забыл запомни правило, чтобы не ошибаться с break, у тебя в каждом case должен быть break;, кроме случаев, когда каждый case состоит из простого выражения и return. В menu() тоже воткни везде break, иначе поправишь код и опять напорешься. Алсо, сделай что-нибудь со своей рекурсией - погугли game loop.
Аноним 25/10/16 Втр 19:16:43 #225 №863503 
Привет снова, программисты. Студент-даун снова нуждается в помощи. Объясните, какого хуя опять ошибку выдает? http://ideone.com/isdbLH
Аноним 25/10/16 Втр 19:30:15 #226 №863507 
>>863503
1) accuracy не должен превышать sizeof(k) - 1;
2) В строке 39 завершающий ноль нужно писать по k[i], а не по k[i+1] - после записи очередной цифры ты уже делаешь i++, и получается, что после выхода из цикла k[i] - это первый незанятый элемент строки.
3) И главное, ты не инициализируешь переменную i, и она может быть равна чему угодно. Если у тебя нет компилятора, которому можно сказать -Wall, то хотя бы выбери на ideone язык не C, а C99 Strict, и будешь видеть предупреждения.
Аноним 25/10/16 Втр 19:39:16 #227 №863509 
>>863507
Спасибо, изменил accuracy, все заработало, а i у меня была объявлена перед циклом while.
Аноним 25/10/16 Втр 19:41:21 #228 №863511 
>>863509
У тебя i объявлена, но не инициализирована (ей не присвоено значение до ее использования). Если по счастливой случайности сейчас она у тебя оказывается равна 0, это не значит, что так будет в дальнейшем.
Аноним 25/10/16 Втр 22:23:26 #229 №863592 
>>863511
Действительно, забыл. Мой косяк. Спасибо еще раз.
Аноним 25/10/16 Втр 23:33:42 #230 №863632 
До сих пор использую сишку, чтобы крестоносцы не заругали за неправильные паттерны. Иногда порываюсь написать что-то на крестах, но потом все равно переписываю на сишке. Кресты - это секта. Начиная с вектора вместо массива. Я бы понял, если бы в векторе была специальная индексация, которая позволяет быстро вставить блок в середину здоровенного вектора и одновременно быстро извлекать элементы по индексу. А так, простите господа паттернопоклонники, я атеист.
Аноним 25/10/16 Втр 23:37:27 #231 №863638 
>>863632
Кресты - это шаблоны, дурачок.
Начиная с определенного момента без них становится очень хуево. Структуры вместо классов, например, и прочая няшнота - why not, а без шаблонов - совсем никак.
Аноним 25/10/16 Втр 23:40:24 #232 №863643 
>>863638
>Начиная с определенного момента без Иисуса становится очень хуево, дурачок
Из-за шаблонов приходится держать код в хедерах, или уже что-то придумали? Потом, ебанутое именование символов в модулях. Из-за этого у старинной сишки РЕФЛЕКТИВНОСТЬ лучше, чем у крестов.
Аноним 25/10/16 Втр 23:41:54 #233 №863644 
>>863643
Зато из-за отсутствия шаблонов в сишечке ты вынужден либо изобретать qsort каждый раз, либо сосать по сравнению с крестами из-за колбека на каждый элемент.
Аноним 25/10/16 Втр 23:48:49 #234 №863647 
>>863643
>Из-за шаблонов
И правда дурачок - или ребенок просто.
Задача: реализовать класс/структуру для инт/флоат/дабл/хуйпизда.
Ты можешь, конечно, набойлерплейтить все комбинации - если совсем дебил наиболее вероятный вариант
Или можно пропердолиться дефайнами по взрослому, без носков. На самом деле вариант - только проблема в том, что они глобальны. То есть придется велосипедить свой неймспейс.
Детский сад, вобщем.
sageАноним 25/10/16 Втр 23:50:14 #235 №863648 
>>863647
Так ты предлагаешь реализовывать свой забагованный qsort в каждом проекте, я правильно понял?
Аноним 25/10/16 Втр 23:54:44 #236 №863657 
>>863647
>Задача: реализовать класс/структуру для инт/флоат/дабл/хуйпизда.
Это сделано во всех интерпах с динамическими типами и почти во всех почему-то не на крестах. Дурачки делали, вероятно.

>>863644
Почему, берешь какую-нибудь либу с qsort, указатели на функции все решают. Потом, в сишечке можно определить адрес (сорян, матерное слово для крестоносцев) структуры по ее элементу, эта хуйня даже в ядре линупса используется, и сам пользовался сколько раз.
sageАноним 25/10/16 Втр 23:57:57 #237 №863662 
>>863657
> указатели на функции все решают
А в крестах у метода, сравнивающего элементы есть все шансы заинлайниться. О том и речь.
Аноним 25/10/16 Втр 23:58:23 #238 №863663 
>>863657
>с динамическими типами
Тебе в JS - это твое.
>динамическими типами
>Дурачки делали
Что очевидно.
Аноним 26/10/16 Срд 00:07:07 #239 №863668 
>>863662
>в крестах у метода, сравнивающего элементы есть все шансы заинлайниться
Во-первых, не у метода, а у класса. В парадигме ООП сравнение, как и все остальное что угодно - это класс/объект. Во-вторых, в сях то же самое. Это вопрос к компилеру. Современные компилеры оптимизируют рекурсию.

>>863663
>Тебе в JS
Кресты и есть нечто гомеоморфное JS. Их прототипы не лучше ваших паттернов.
Аноним 26/10/16 Срд 00:08:21 #240 №863670 
>>863648
>реализовывать свой забагованный qsort
Ты нить потерял, дебиленок.
Крестопараша, конечно, говно омерзительное - но иногда няшная хуже. Когда шаблоны нужны, например.
Старенькая она уже.
Аноним 26/10/16 Срд 00:10:08 #241 №863671 
>>863668
> Во-первых, не у метода, а у класса
Мне похуй, что там в парадигме. Инлайнится конкретный метод.
> Современные компилеры оптимизируют рекурсию.
А это-то тут каким местом?
Аноним 26/10/16 Срд 00:12:57 #242 №863672 
>>863668
>есть нечто гомеоморфное JS
Высеры с *воид твоих собратьев по, хаха, "разуму" - это точно жс, по уровню дегенерации.
Проебать контроль типов, огрести оверхед на своих же костылях - и обосраться по быстродействию даже по сравнению с крестопарашей.
Няшная не для дебилов вроде тебя, вобщем.
Аноним 26/10/16 Срд 00:13:44 #243 №863673 
>>863671
>Инлайнится конкретный метод.
Функции еще лучше инлайнятся.
>> Современные компилеры оптимизируют рекурсию.
>А это-то тут каким местом?
Тем же самым. Вместо call получается jmp или инлайн.
Аноним 26/10/16 Срд 00:16:01 #244 №863675 
>>863671
>А это-то тут каким местом?
Не обращай внимания, просто он инфантильный дурачок почти как ты
Аноним 26/10/16 Срд 00:16:51 #245 №863676 
>>863673
> Функции еще лучше инлайнятся.
Когда дело доходит до инлайна, отличий между методом и функцией нет вообще.
> Вместо call получается jmp или инлайн.
Не получается. qsort() в либе, в середину скомпиленной функции тебе никто jmp втыкать не будет. И вообще компиляторы вызов функций по указателям оптимизируют крайне неохотно.
Аноним 26/10/16 Срд 00:17:57 #246 №863677 
>>863673
> >указатели на функции
>Вместо call получается jmp или инлайн.
https://www.youtube.com/watch?v=uB4zwhvaKLE
Аноним 26/10/16 Срд 00:20:30 #247 №863678 
>>863676
>компиляторы вызов функций по указателям оптимизируют крайне неохотно.
>вызов функций по указателям оптимизируют
То есть все-таки могут заинлайнится, правда?
Да уж, ну и дебилы. А я-то думал тупее чем на хабре не бывает, наивный.
Аноним 26/10/16 Срд 00:23:05 #248 №863680 
>>863676
>в середину скомпиленной функции
Можно взять нескомпиленную. Как в крестах прямо.

>>863677
Это ты там выше подорвался? Ничего, Чудское Озеро охладит твой зад.
Аноним 26/10/16 Срд 00:26:58 #249 №863684 
>>863680
Фиксирую отсутствие возражений.
То есть указатели на функции и у этого дегенерата инлайнятся.
Все же большой минус няшной - в комьюнити у крестопараши таких дебилов уровня /бэ все же меньше.
Аноним 26/10/16 Срд 00:28:02 #250 №863687 
>>863678
Да, gcc это оптимизирует, если у него есть в наличии код функции.
Аноним 26/10/16 Срд 00:30:44 #251 №863691 
>>863684
Да, господин дегенерат. Они правда инлайнятся, если компилеру известен исходный кот qsort и исходный кот функции сравнения.
Аноним 26/10/16 Срд 00:33:23 #252 №863693 
>>863687
>gcc это оптимизирует
Пример, пожалуйста.
Указатель на функцию - это, в общем случае, переменная - иначе смысла во всем этом нет.
И знать на какую именно функцию там ссылка компилятор - в хотя бы немного осмысленных случаях - не может.
хелло_лаба1.с не учитываю, конечно.
Аноним 26/10/16 Срд 00:34:25 #253 №863694 
>>863691
То есть если ссылка - это константа, по сути.
лаба1, как и было сказано.
Аноним 26/10/16 Срд 00:35:47 #254 №863696 
>>863693
>Пример, пожалуйста.
То есть результат транслейтинга в ассемблер? Извини, лень что-то.
Аноним 26/10/16 Срд 00:36:46 #255 №863697 
>>863694
А в крестах что, инлайнится код, полученный из интернета?
Аноним 26/10/16 Срд 00:37:56 #256 №863698 
>>863696
Маневр номер очередной засчитан.
То есть исходника в качестве примера у тебя нет.
Все ясно.
Аноним 26/10/16 Срд 00:40:34 #257 №863700 
>>863697
>в крестах что, инлайнится код
Шаблонных классов, например.
То есть можно более-менее генерики с контролем типов и оптимизацией - в том числе инлайнами где надо.
Без позорища с *воид и прочей школопарашей уровня /бэ.
Аноним 26/10/16 Срд 00:42:54 #258 №863702 
>>863698
То есть ты из исходника собирался определять, объединяет ли gcc код двух функций, исходники которых ему известны, когда одна передается указателем в другую?
Аноним 26/10/16 Срд 00:44:57 #259 №863703 
>>863702
>ты из исходника собирался определять
Не вижу проблем прогнать гцц и немного подебажить.
Это не так страшно как ты думаешь, не бойся за меня :3
Аноним 26/10/16 Срд 00:45:12 #260 №863704 
>>863700
А в сишечке инлайнится код функций нормально. Это практически та же ситуация, только проще - без таблицы виртуальных функций.
Аноним 26/10/16 Срд 00:46:00 #261 №863707 
>>863703
Тогда DIY с -O3 просто.
Аноним 26/10/16 Срд 00:48:35 #262 №863710 
>>863707
Маневр номер очередной+1 засчитан.
То есть исходника у тебя нет - да и быть не может, что ты вроде бы уже понял.
Хотя может и нет - неисповедимы пути дебилов уровня /бэ.
Аноним 26/10/16 Срд 00:49:52 #263 №863711 
>>863704
> >генерики
>в сишечке
>Это практически та же ситуация
Тебе лучше попробовать 1с.
Там все твои друзья.
Аноним 26/10/16 Срд 00:51:53 #264 №863714 
>>863710
Извини, конечно, но по большому счету ты утверждаешь, что компилер заинлайнит метод, но с функцией обосрется.
Аноним 26/10/16 Срд 00:52:35 #265 №863715 
>>863711
Попробуй JS.
Аноним 26/10/16 Срд 01:00:18 #266 №863716 
Вы вообще понимаете, господа крестоносцы, что само, блядь, слово inline по отношению к вашей религии это матершина? Какой inline, если паттерны и кроссплатформенность во все поля? Идите грехи замаливать уже.
Аноним 26/10/16 Срд 01:02:00 #267 №863717 
test
Аноним 26/10/16 Срд 01:05:19 #268 №863718 
>>863715
>сам дурак
Ясно.
>>863714
А, понятно - с памятью проблемы и вообще.
>>863693
>Указатель на функцию
Хотя стыдно, конечно - нехорошо смеяться над больными людьми.
Аноним 26/10/16 Срд 01:15:45 #269 №863721 
>>863716
Что ты несёшь, поехавшее?
Аноним 26/10/16 Срд 01:17:31 #270 №863722 
>>863718
>и вообще
Что сказать хотел?
Аноним 26/10/16 Срд 01:22:37 #271 №863723 
>>863721
Такое же как ты, в точности.
>>863722
Читать это существо тоже не умеет, фиксирую признание.
Аноним 26/10/16 Срд 01:27:47 #272 №863726 
>>863723
>Читать это существо тоже не умеет
Скорее gcc не сумеет в инлайн метода, чем в инлайн функции :3
Аноним 26/10/16 Срд 08:44:08 #273 №863785 
>>863726
Дебил натуральный.
Вся ваша проблема в непонимании других.
И не потому что другие дебилы - хотя правило 95% работает всегда, да - а потому что дебилы с отставанием в развитии всего - это вы все, двачеры.
Совсем как маил.ру.
Аноним 26/10/16 Срд 10:15:15 #274 №863817 
>>863785
Найс, бомбануло:3
Аноним 26/10/16 Срд 10:51:25 #275 №863830 
>>863817
>бомбануло
Ну так зашивайся, няша.
И держи нас в курсе.
Аноним 26/10/16 Срд 10:55:51 #276 №863833 
>>863723
>Такое же как ты, в точности.
Я вообще другой анон, но так и не понял хуиты про паттерны и кроссплатформу: на сях так не пишут?
Аноним 26/10/16 Срд 10:59:36 #277 №863839 
>>863833
>на сях так не пишут?
Няшная не для всяких извращений.
Хотя крос можно напердолить дефайнами, конечно.
Аноним 26/10/16 Срд 11:01:58 #278 №863843 
>>863839
Кроссплатформа на плюсах пердолится точно так же как на говняшной. Про паттерны — посмотри ядро линукса или хотя бы GTK.
Аноним 26/10/16 Срд 11:04:12 #279 №863847 
>>863843
>посмотри ядро линукса
Лучше бы ты гомонегров в говне запостил, няша.
Аноним 26/10/16 Срд 12:30:11 #280 №863870 
Сап сипипач. Посоветуйте легкую, но хорошую IDE для C++ под Windows. Хочу, чтоб:
1. Быстро открывалась, без модулей sql, git и прочего лишнего. Кодить буду только cpp и winapi.
2. Был нормальный функционал для опытного пограммера. Подсветка, автокомплит, рефакторинг, find usage, goto defination and declaration и т.п.
3. Не нужно ебаться с привязкой компиляторов. Чтоб всё шло из коробки.

Т.е. не Visual Studio (пункт1), не sublime+gcc (пункт2), не Eclipse (пункт3).
Видел кучи рекомендаций CodeBlocks, QtCreator, DevCpp и т.д. - куча, какой наиболее подходит под мои требования?
Аноним 26/10/16 Срд 12:48:03 #281 №863874 
>>863870
dev-c++
Говнище жуткое, очень нравится.
1437 26/10/16 Срд 19:18:24 #282 №864095 
Подскажите как определить максимальное из чисел, встречающихся в заданном массиве более одного раза
Аноним 26/10/16 Срд 19:41:49 #283 №864108 
>>864095
1. Отсортировать массив
2. ???
3. Profit!
Аноним 26/10/16 Срд 21:29:49 #284 №864180 
Поясните за битмаски. Нахуя их суют в каждую жопу? Или код вида
int hui = hui1 | hui2;
if((hui & (hui1 | hui2) == (hui1 | hui2))

может быть быстрее кода типа
int hui = 1;
if(hui)

Так какого хуя-то?
Аноним 26/10/16 Срд 21:36:07 #285 №864184 
>>864180
Экономия места (в сетевых протоколах вполне оправдано), возможность проверить несколько флагов одновременно, удобство (назначить 20 флагов маской через | проще, чем писать 20 присваиваний). Алсо, if((hui & (FLAG1 | FLAG2) == (FLAG1 | FLAG2)) всего лишь на одну инструкцию длиннее, чем if (hui1), а гораздо более частый вариант с одной маской if (hu1 & FLAG1) и вовсе ничем от if (hui1) не отличается с точки зрения количества инструкций на самом деле от платформы зависит, но на x86 разницы нет.
Аноним 26/10/16 Срд 23:01:01 #286 №864261 
Допустим, у меня есть некий абстрактный класс, от которого идут наследники. У всех этих наследников есть одинаковые поля, но в каждом классе у них должны быть разные значения, например, максимальное количество здоровья.
Как лучше это реализовать? Объявить поля в базовом классе, а в наследниках присваивать им значения в конструкторе? Или можно как-то более красиво?
Аноним 26/10/16 Срд 23:48:48 #287 №864275 
>>864261
1) Это не крестотред;
2) Если не хочешь анальных трещин от архитектуры до рантайма — не суй, блядь, данные в родительский класс. Интерфейс должен обеспечивать только методы т.е. в твоём случае можно объявить в род. классе virtual int max_hp() а в наследниках просто возвращать константу int max_hp() override { return 100; }.
Аноним 26/10/16 Срд 23:50:19 #288 №864277 
>>864275
Это не крестотред, но
> override
что это, блять? Им мало было overload в 90х?
Аноним 27/10/16 Чтв 00:02:58 #289 №864285 
>>864277
Это хуитка из жявы, не дающая стрелять в ногу реализовать метод которого нет в интерфейсе (например, ты совсем валет и вместо size_t написал unsigned int аргумент — без этой хуиты такой код компилировался везде молча, но при попытке дёрнуть виртуальный метод на платформе где size_t != uint всё бы жутчайшим образом распидорасило на пустом месте).
Аноним 27/10/16 Чтв 06:49:20 #290 №864336 
>>864261
Крестоеб уходи!
Какашечка 27/10/16 Чтв 08:22:14 #291 №864362 
Котаны, как получить время с 00:00:00 UTC on 1 January 1970?
Аноним 27/10/16 Чтв 08:24:03 #292 №864363 
>>864362
* timestamp, бистрафик
Аноним 27/10/16 Чтв 08:26:27 #293 №864364 
>>864362
#include <time.h> time(NULL).
Аноним 27/10/16 Чтв 08:28:18 #294 №864365 
>>864364
пасиб
Аноним 27/10/16 Чтв 09:05:28 #295 №864371 
>>864275
А если надо не чисто асбтрактный класс, а как шаблон, который делал бы почти всё, а наследникам надо только переопределить некоторые (по усмтотрению) методы, ну и поля?
Аноним 27/10/16 Чтв 09:33:25 #296 №864376 
Посоны, в K&R их стандарт, не ANSI?
Аноним 27/10/16 Чтв 09:35:19 #297 №864378 
>>864376
Во втором K&R уже ANSI.
Аноним 27/10/16 Чтв 13:03:32 #298 №864487 
Зачем кулхацкеры, которые пишут на си всякие парсилки PEB, оборачивают ассемблерные вставки в функцию _declspec(naked)? Чем так мешает пролог?
Аноним 27/10/16 Чтв 13:18:24 #299 №864500 
>>864487
Тем, что пидорасит регистры и стек, что не всегда нужно когда надо например вставить свою хуитку в чужой код.
Перейти из скриптовых в С/С++ за полгода Аноним 27/10/16 Чтв 13:55:43 #300 №864539 
привет, ребята. Ситуация такая.
В универе выбрал не ту дорожку (не имел представления о мире программирования вообще) и пошел по пути веб-программирования, джава спринг и прочее. За год работы в конторе ужасно непонравилось, ушел в скриптинг на питоне/руби. Сейчас все еще думаю о том, чтобы перейти в с++, начал читать сначала С керигана ричи, смотреть лекции Линского, потом планирую какую нибудь книгу по с++. На все про все даю себе полгода до уровня Junior. В универе изучал С++ но, как уже сказал, выбрал не ту дорогу. Как думаете, аноны, реально ли до уровня уверенного джуна за полгода подняться? В программировании, структурах данных и алгоритмах минимально разбираюсь, в универе нормально решал. Спасибо.
Аноним 27/10/16 Чтв 13:58:36 #301 №864544 
>>864539
Нет.
Аноним 27/10/16 Чтв 14:01:24 #302 №864547 
>>864544
хуево, а реальных цифр не подкинете? Год-два?
Аноним 27/10/16 Чтв 14:06:05 #303 №864551 
>>864547
>Год-два?
Если начинать с правильного возраста.
Тебе уже поздно, ты уже веб-дебил.
Твой мозг искалечен.
Аноним 27/10/16 Чтв 14:13:24 #304 №864555 
>>864551
ну понятно.
Аноним 27/10/16 Чтв 14:13:47 #305 №864556 
>>864547
Можно за год выучить и сишечку, и кресты до хуевого, но приемлемого уровня. Только надо въябывать, а не спрашивать на форумах для девочек-анимешниц, получится ли у тебя.
Аноним 27/10/16 Чтв 14:19:35 #306 №864558 
>>864539
Приплюснутые как евреи, у ник ОП-стихоплет ушел, и они лишились родины, теперь кочуют туда сюда балмошаться без ума-толку
Аноним 27/10/16 Чтв 14:21:56 #307 №864560 
>>864558
понял
Аноним 27/10/16 Чтв 14:22:22 #308 №864561 
>>864556
просто хотел оценку от опытных людей. Спасибо.
Аноним 27/10/16 Чтв 14:58:23 #309 №864575 
Почему приянто мешать си и плюсы в одну колею (я про эти все c/c++, говорим си подразумеваем плючы и наоборот, вот это вот все). Это же разные языки. Плюсы вообще жутко перегруженное чудовище. Это ведь все равно что писать java/javascript общего нихуя, кроме двух слогов в названии.
Аноним 27/10/16 Чтв 15:00:34 #310 №864578 
>>864575
У плюсов с си как раз общего дохуя, а большая часть роектов на плюсах — си с классами и шаблонами вместо макросов.
Аноним 27/10/16 Чтв 15:06:12 #311 №864584 
>>864578
общего столько же, сколько у жс с жавой

а большинство проектов на жс - жава с динамической типизацией
Аноним 27/10/16 Чтв 15:09:50 #312 №864587 
>>864584
Ты долбоёб какой-то. Жс поддерживает код жявы?
Аноним 27/10/16 Чтв 15:11:26 #313 №864588 
>>864587
да
Аноним 27/10/16 Чтв 15:11:49 #314 №864589 
>>864587
жава поддерживает код жс
Аноним 27/10/16 Чтв 15:12:41 #315 №864591 
>>864588
>>864589
))) ебать даунич
Аноним 27/10/16 Чтв 15:17:27 #316 №864593 
14775706477550.png
>>856777 (OP)
Аноны, полный ноль в С на связи, препод дал это задание в С, т.е. создать программу для решения с вводом переменных, как долго я буду с этим дрочиться, если знаний в С тупо нет Только в Паскале еще более менее?
Аноним 27/10/16 Чтв 15:18:16 #317 №864594 
>>864589
Ты серьёзно долбоёб?
Аноним 27/10/16 Чтв 15:24:09 #318 №864604 
>>864594
Если ты не умеешь в программирование, то кто в этом виноват, мань?
Аноним 27/10/16 Чтв 15:24:52 #319 №864605 
>>864604
Кто виноват что ты пишешь хуйню, сам нихуя не понимая?
Аноним 27/10/16 Чтв 15:27:53 #320 №864607 
>>864605
Но ведь пишешь хуйню ты, хорошо?
Аноним 27/10/16 Чтв 15:28:54 #321 №864610 
>>864607
>хорошо?
Плохо.
Аноним 27/10/16 Чтв 15:30:03 #322 №864612 
>>864610
Хорошо. Хорошо?
Аноним 27/10/16 Чтв 15:30:20 #323 №864613 
>>864607
Но ведь долбоёб ты, хорошо? Пруф или соси хуй.
Аноним 27/10/16 Чтв 15:31:26 #324 №864614 
>>864613
Пруф. хорошо?
Аноним 27/10/16 Чтв 15:33:41 #325 №864617 
>>864614
нет(
Аноним 27/10/16 Чтв 15:34:49 #326 №864620 
>>864617
да.ладно?
1437 27/10/16 Чтв 16:11:16 #327 №864644 
14775738763680.png
http://pastebin.com/60GePxa2
Подскажите в чем ошибка, почему криво заполняет массив с клавиатуры?
Аноним 27/10/16 Чтв 16:21:33 #328 №864648 
Крестотред утонул — теперь дауны и лабодауны собираются здесь.
Аноним 27/10/16 Чтв 16:27:53 #329 №864651 
>>864644
>в чем ошибка
В ДНК, очевидно же.
Аноним 27/10/16 Чтв 16:54:45 #330 №864668 
>>856777 (OP)
Ананасы, какую структуру данных лучше всего использовать для записи и хранения в ней логов? Основные требования - отсутствие malloc-ов и возможность добавления записей с помощью snprintf т.е. очевидный кольцевой буффер отпадает
Аноним 27/10/16 Чтв 17:11:14 #331 №864679 
14775774745770.png
>>856777 (OP)
Что может быть не так с этим?
Аноним 27/10/16 Чтв 17:18:39 #332 №864686 
>>864668
Прям полное отсутствие malloc-ов, или один раз не пидарас? коли не пидор - выдели при инициализации всё что нужно и не еби мозга, иначе задумайся о своей реализации snptintf
>>864679
ДНК. А вообще - почитай про точки следования, с оптимизациями вычисление i может и покорёжится.
Аноним 27/10/16 Чтв 17:19:14 #333 №864687 
>>864679
Ну и говно.
Аноним 27/10/16 Чтв 17:55:35 #334 №864690 
>>864668
Кольцевой буфер + промежуточный буфер для печати. Печатаешь в промежуточный, копируешь в кольцевой.
Аноним 27/10/16 Чтв 18:34:11 #335 №864733 
Соре за тупой вопрос, но не гуглится
Что такое !=?
Аноним 27/10/16 Чтв 18:42:17 #336 №864747 
Ну, <= это меньше или равно например
Аноним 27/10/16 Чтв 18:53:14 #337 №864767 
>>864733
Товсто
Аноним 27/10/16 Чтв 20:38:26 #338 №864851 
>>864668
>snprintf т.е. очевидный кольцевой буффер отпадает
Не отпадает.
http://www.gnu.org/software/libc/manual/html_node/Custom-Streams.html
Аноним 27/10/16 Чтв 20:44:20 #339 №864855 
>>864686
>А вообще - почитай про точки следования, с оптимизациями вычисление i может и покорёжится.
Чтобля? Каким образом?
Аноним 27/10/16 Чтв 20:58:30 #340 №864866 
>>864855
>почитай про точки следования
Аноним 28/10/16 Птн 00:07:23 #341 №864956 
>>864866
Ты что-то такое слышал, но не знаешь, что именно? Где у него там i модифицируется, чтобы точки следования повлияли?

>>864679
У тебя код картинкой, перепечатывать его никто не будет, а что тебе в нем не нравится, и что ты вообще хотел сделать - ты не сказал.
Аноним 28/10/16 Птн 01:08:21 #342 №864984 
>>864561
>хотел оценку от опытных людей
>опытных людей
>на дваче
>опытных
лол
Аноним 28/10/16 Птн 01:10:44 #343 №864985 
>>864578
>У плюсов с си как раз общего дохуя
Не настолько, чтобы мешать их в одну кучу и заменять один другим.
>большая часть роектов на плюсах — си с классами и шаблонами вместо макросов
Ну это явно хуёвый подход к программированию на крестах, ставить его в пример как-то глупо.
Аноним 28/10/16 Птн 01:15:16 #344 №864987 
Это я тут вчера хуйню про инлайн указателей на функции гнал. Зато тред сишечки живет и даже висит на видном месте.
Аноним 28/10/16 Птн 10:18:16 #345 №865044 
>>864987
Молодец, мужественно признался на анонимном формуе.
Аноним 28/10/16 Птн 10:52:52 #346 №865048 
>>864668
>какую структуру данных лучше всего использовать для записи и хранения в ней логов?
Используй mmap, malloc-ов нет, можно через sprintf писать
Аноним 28/10/16 Птн 12:10:33 #347 №865073 
>>856777 (OP)
Все на английцком, дай на руццком
Аноним 28/10/16 Птн 12:24:45 #348 №865080 
>>865073
Ну вот выучишь ты синтаксис языка, читая русские учебники, а что дальше? Все интересные статьи на английском, документация к либам на английском, комментарии в коде на английском, тикеты на английском, тз на английском. Намек понял?
Впрочем, если тебя в вузике язык учить заставлют, Керниган и Ричи есть в русских переводах, даже в трех изданиях, вместо каноничных двух.
Аноним 28/10/16 Птн 12:52:08 #349 №865093 
>>865073
На хуицком. В поиск научись
Аноним 28/10/16 Птн 14:26:04 #350 №865133 
Как проверить число на чередование чёрных и нечётных цифр?
Аноним 28/10/16 Птн 14:32:51 #351 №865135 
>>865133
Разбей задачу на подзадачи: научись получать цифры числа (snprintf или делением на 10), а потом напиши цикл по цифрам, проверяя это самое чередование. Потом посмотри на свое решение и выкинь лишние шаги.
Аноним 28/10/16 Птн 14:43:31 #352 №865144 
>>864866
Прочитал тебе за щёку, даун.
Аноним 28/10/16 Птн 14:44:58 #353 №865146 
>>865144
ебать Cантехника порвало)
Аноним 28/10/16 Птн 14:50:13 #354 №865150 
>>865146
Ну так зашивайся, раз порвало.
Аноним 28/10/16 Птн 15:01:18 #355 №865160 
>>865150
зачем мне тебя зашивать?
Аноним 29/10/16 Суб 14:51:29 #356 №865720 
Пиздец я конченый. Решаю задачку 1.13 из KR, вроде написал быстро - НЕ РАБОТАЕТ. Ну сука, ушел курить с тетрадкой и ручкой, возвращаюсь, написал блять точно все как надо, уж точнее не придумаешь. Снова не работает. Я минут 20 с выискиывал логическую ошибку, прежде чем понял, что проблема была в непоставленных скобках для блока if else.
поплакался
Аноним 29/10/16 Суб 14:54:34 #357 №865723 
>>865720
Это нормально. Все на это напарывались. В твоей жизни еще будут и = вместо ==, и ошибки на 1 в for, и упущенные break в switch, и много других радостей.
Аноним 29/10/16 Суб 15:16:10 #358 №865728 
>>865720
держи нас в курсе
Аноним 29/10/16 Суб 17:45:44 #359 №865838 
>>865728

Так и будет, не сомневайся. Тебе могу даже на емайл первому писать
Какашечка 29/10/16 Суб 18:40:35 #360 №865863 
>>865838
и мне пиши
Какашечка 29/10/16 Суб 18:43:35 #361 №865864 
сисюны, решительно пояснили преимущество енюмов над дефайнами для констант. сам топлю за дефайны.
Аноним 29/10/16 Суб 20:39:33 #362 №865943 
>>865864
Дефайны более гибкие: можно делать unsigned, можно втыкать флаги в старшие биты. В целом, можно думать об этом так: если enum подходит в качестве типа переменной или аргумента (например, void foo(enum smth arg)), тогда стоит использвать enum. Если возникают причины так не делать, возвращаемся к дефайнам.
Аноним 29/10/16 Суб 23:17:27 #363 №866019 
>>865864
просто открой сорцы любого mature опенсорсного проекта
там сразу поймешь где и как перечисления используются
тупо того же линукса
Аноним 29/10/16 Суб 23:22:15 #364 №866021 
>>865723
кстати, все перечисленное тобой легко предупреждается подключением утилит статического анализа кода..
непонятно, почему разрабы до сих пор ленятся их использовать
Аноним 29/10/16 Суб 23:50:35 #365 №866030 
>>866021
> легко предупреждается подключением утилит статического анализа кода
Не так уж и легко. Ловится далеко не все, что хотелось бы, зато количество ложных срабатываний отбивает всякое желание проверять код на постоянной основе - либо ты каждый раз читаешь километры логов, либо ты орально ублажаешь статический анализатор вместо написания программы.

> непонятно, почему разрабы до сих пор ленятся их использовать
Встречный вопрос: ты что-нибудь крупное писал, или только на хелловорлдах тестил?
Аноним 30/10/16 Вск 00:06:18 #366 №866035 
>>865723
>В твоей жизни еще будут и = вместо ==, и ошибки на 1 в for, и упущенные break в switch, и много других радостей.
Это не то, что статическими анализаторами, это всеми компиляторами ловится.
Аноним 30/10/16 Вск 00:08:45 #367 №866036 
Другой-анон врывается в тред

>>866030
>Не так уж и легко.
Не легко, а ОЧЕНЬ легко.
> Ловится далеко не все, что хотелось бы
Не могу представить, чего бы ещё хотелось, столько всего выловилось.
> количество ложных срабатываний отбивает всякое желание проверять код на постоянной основе - либо ты каждый раз читаешь километры логов, либо ты орально ублажаешь статический анализатор вместо написания программы.
Осиль grep. 5 фильтров и никаких ложных срабатываний нет.

> ты что-нибудь крупное писал, или только на хелловорлдах тестил?
В проекте 2.3 MLOC C++ + 0.7 MLOC C
Аноним 30/10/16 Вск 00:22:42 #368 №866045 
>>866035
> это всеми компиляторами ловится.
res = 1;
for (i = 0; i <= e; i++) {
res *= x;
}
Не подскажешь, кем это ловится? И как оно вообще может ловиться?

>>866036
> 5 фильтров и никаких ложных срабатываний нет.
Какие фильтры, ты о чем вообще вон, в PVS-Studio предлагают комментариями с аннотациями срать, чтобы fp подавить? Например, есть одна вижуал студия. Есть глобальный массив структур items, последний его элемент всегда { 0 }. Функция делает: for (ptr = items; ptr->name != NULL; ptr++) { ... } Статический анализатор в студии клинит вроде починили в последнем апдейте, и он говорит, что я выхожу за пределы массива. Что ты будешь грепать? Отключишь сообщение целиком? А в другом месте оно может на баг указать.
Аноним 30/10/16 Вск 01:17:33 #369 №866061 
Насколько clang умеет лучше в трансляцию over гцц и студия?
Аноним 30/10/16 Вск 01:22:30 #370 №866064 
>>866061
Немного лучше гцц/местами/очень сильно зависит от кода/с каждым релизом обоих соотношение меняется. Собирай свой код и профилируй.
Аноним 30/10/16 Вск 02:00:01 #371 №866071 
>>865864
enum {HUITA_RAZ, HUITA_DVA, HUITA_TRI, KOLICHESTVO_HUIT};
struct huita massiv[KOLICHESTVO_HUIT] = { … };

Inogda eto udobno.
Какашечка 30/10/16 Вск 07:13:49 #372 №866109 
>>865943
>>866019
>>866071
нашел только один плюс в енюмах, можно задавать выражение и будет подставлен результат. дефайны как то проще и наглядней.
Аноним 30/10/16 Вск 07:13:53 #373 №866110 
14778008336650.png
Необходимы УЖЕ готовые функции и алгоритмы поиска пути в двумерном пространстве (x,y)

Пример:
11111011B1
1111001111
1111101111
11A1111011
1111111111

Есть вот плоскость из клеток.
Есть Начальная координата A(x1,y1) и конечная B (x2,y2).
Нужно найти кратчайший путь от A до B и записать все x3,y3 по которым нужно идти в массив walk_x[index], walk_y[index]

Нахуя мне это нужно? Есть 2d MMO в ней уже есть A алогритм поиска пути, но он блядь ограничен всего 32 клеточками, и в зоне 32 клеток от персонажа я могу ходить нормально (алгоритм работает и я обхожу препятствия), но блядь это работает исключительно в зоне 32x32, а карты от 300х400 до 500х500, т.е. мне нужно научится преодолевать препятствия другими способами, либо если существует способ задействовать A алгоритм и разбивать как-то локацию на отдельные участки и чек-поинты по которым можно двигаться (от одного к другому) - то это было гуд.

В общем чуваки, мне нужны ГОТОВЫЕ примеры рабочих функций ЛЮБОГО алгоритма поиска пути и записи всех координат от точки A(x1,y1) до точки B(x2,y2) c обходом препятсвий.

К сожалению я нашел в других языках программирования всех алогритмы которые мне интересны Jump Point Seach, A, D, Lee Algorithm но я слишком тупой что бы их портировать под Си, да и знаний Си особых нет.

Если кто-то может запилить функцию которая принимает find_route(X1, Y1, X2, Y2) (где X1,Y1 = начало где стоит чел, и X2, Y2 куда нужно найти путь если существует и записать его в массив route_x[index] route_y[index] - было бы ахуенно.

====================
Дополнительные вопросы:
====================

Назовите пожалуйста оптимальные алгоритмы для поиска пути которые не жрут систему пиздец как при поиске пути на картах от 300x300 клеток до 500x500 (больше 500х500 возможности сделать карту нет). Лабиринты проходить не собираюсь, 80% карты можно посетить, 20% карты занимают различные препятствия (здания, объекты, и т.п. т.д.)

Накидайте годной инфы и желательно примеры, а еще было бы ахуенно если бы можно было получить функцию в которую скинул бы указатель на свои массивы матрицы карты где уже изначально обозначены все клеточки как проходимые или нет, и получить ответ - можно ли добежать до указанной координаты, или нет, и если можно - записать все клетки (x,y) по которым можно пробежать до точки B с точки А.



Аноним 30/10/16 Вск 09:07:38 #374 №866132 
Блин, поставил i3wm, теперь я как настоящий хакр
Аноним 30/10/16 Вск 09:36:02 #375 №866134 
>>866110
>Необходимы УЖЕ готовые функции
50000 рублей
Аноним 30/10/16 Вск 12:18:49 #376 №866181 
>>866110
Вот например, загуглил в гугле и нашел курсовик на плюсах:
http://www.twirpx.com/file/998973/
Аноним 30/10/16 Вск 12:43:37 #377 №866195 
>>866045
>Какие фильтры, ты о чем вообще
О grep, читать научись.

>вон, в PVS-Studio предлагают комментариями с аннотациями срать, чтобы fp подавить
Так большинство анализаторов требует. Тот же coverity. Кстати, PVS после coverity тонны реальных ошибок выловил.
Аноним 30/10/16 Вск 12:46:23 #378 №866197 
>>866061
>студия
visual c++ вообще никак в плане оптимизаций. До последней экспериментальной версии, где они наконец реализовали SSA (хотя, как мне кажется, просто сунули внутрь llvm)
Аноним 30/10/16 Вск 13:28:10 #379 №866227 
>>866195
> Так большинство анализаторов требует.
Что и требовалось доказать. Ты >>866030
> орально ублажаешь статический анализатор
или несколько разом. И нехуй тут про grep затирать. А знаешь, что будет потом? Потом кто-нибудь напишет еще один анализатор, и ты пойдешь расставлять новые комментарии в файликах, и удалять старые. Что угодно, только бы сразу не писать качественный код. Правильно было бы хранить подавленные предупреждения вместе с контекстом анализатора в отдельном файле, и чтобы статический анализатор знал о системе контроля версий (и желательно, чтобы не только о git). Вот тогда бы можно было включить в билд статический анализ на постоянной основе. Надеюсь, clang к этому придет когда-нибудь.
Аноним 30/10/16 Вск 13:32:30 #380 №866229 
>>866227
Короче, лалка. Не-систематических (вырезаемых grep-ом) false positive находится две с половиной штуки. И то, если внимательно присмотреться, оказывается, что как минимум одно "false positive" опирается на implementation-defined behavior
Аноним 30/10/16 Вск 13:47:28 #381 №866235 
>>866229
Я тебе сейчас не могу конкретных примеров из живого проекта привести, но я в свое время заебался читать логи. Алсо, если у тебя богатый опыт, может, напишешь для оппоста абзац со ссылками?
Аноним 30/10/16 Вск 14:00:24 #382 №866241 
>>866235
Опыт небогатый. Прогнал PVS, показал результаты ребяткам. Они сказали "ого, coverity пропустил много лажи" (в основном копипейст в логических операторах, одинаковое тело у if и else ветки, невозможные условия типа A > B && A <= B или
if (A) {
if (!A) {
do_something();
}
})

Короче, что этим анализатором обычно находится.
Аноним 30/10/16 Вск 14:02:52 #383 №866243 
>>866235
Что было из систематических false positive: ссылка очень хитро инициализировалась динамически выделяемой памятью, но завёрнуто это всё было так, как будто из функции возвращается ссылка на локальную переменную.
Аноним 30/10/16 Вск 14:05:54 #384 №866246 
>>866045
выход за границу массива не статическими анализаторами проверяется, ты путаешь
Аноним 30/10/16 Вск 14:23:43 #385 №866262 
>>866241
Если говорить о PVS-Studio, есть еще такая проблема, как русские разработчики, не умеющие в бизнесцена - она абсолютно неподъемная для небольших команд, а cppcat кончился.

> невозможные условия
Не вижу причин вообще это ловить. Оно чаще всего остается после всяких #ifdef DEBUG (иногда напрочь выпиленных до проверки, иногда выпиленных только препроцессором), и отлично вычищается любым, даже самым говенным оптимизирующим компилятором.

>>866246
> выход за границу массива не статическими анализаторами проверяется
Отлично проверяется в простых случаях:
char x[10]; for(size_t i = 0; i <= 10; i++) printf("%i\n", x);
Что говорит нам Visual Studio?
> bounds.c(4): warning C6201: Index '10' is out of valid index range '0' to '9' for possibly stack allocated buffer 'x'.

А вот в том случае, про который я говорил выше, оно как раз не должно было проверять, но проверяло и не осиливало осознать условие прекращение цикла. Сейчас потестил - на простом примере уже не ругается, но может еще что-то влияло.
Аноним 30/10/16 Вск 14:55:21 #386 №866282 
>>856777 (OP)
Не осилил даже на уровне установки. Нашёл какой-то MinGW, установил, в меню "Пуск" есть только одна программа, которая вызывает консоль, а на рабочем столе появился ярлык для установки всякого говна. Успешен?
Аноним 30/10/16 Вск 15:04:07 #387 №866286 
>>866262
Запускаешь ту самую консолю из меню пуск. В консоле пишешь mingw-get --help и читаешь. Не помню, нужно ли ставить gcc, или оно уже есть если что, mingw-get install mingw32-gcc. Пишешь хелловорлд, говоришь cd /d полныйпутькпапкесхелловорлдом. Говоришь cc helloworld.c -o helloworld.exe пока читаешь K&R, можешь писать просто make helloworld, где helloworld - имя .c файла без расширения. Большего тебе знать пока не нужно.

Если не осилишь и это, поставь себе Code::Blocks, там есть версия со встроенным GCC - ставишь, пишешь хелловорлд, мышкой тыкаешь конпелировать, ни о чем нидумоешь.
sageАноним 30/10/16 Вск 15:04:29 #388 №866287 
>>866286
>>866282
Наебался.
Аноним 30/10/16 Вск 15:05:53 #389 №866289 
>>866286
Ты очень добрый. Я бы понял, если бы ты просто послал нахуй. Спасибо, но я уже всё удалил.
Аноним 30/10/16 Вск 15:12:19 #390 №866293 
>>866286
Но Code::Blocks действительно просто берёт и работает, спасибо большое.
Аноним 30/10/16 Вск 15:37:10 #391 №866314 
>>866262
у тебя массив на стеке
конечно его можно проверить стат тулзой
Аноним 30/10/16 Вск 16:15:22 #392 №866342 
Котики, кто-то помнит допускаемое количество вложений для switch-case? Пишу функцию, которая зависит от состояния 2ух переменных из 2ух структур. Одна принимает значения 0-1, другая 0-4 это получаеться 10 возможных действий для функции. И что бы не городить 10 if, думаю обойтись switch внутри switch. Можно ли так?

switch(a):
case 0:
switch(b):
....
break;
case 1:
switch(b):
.....
break;
Аноним 30/10/16 Вск 16:23:50 #393 №866351 
>>866342
> Можно ли так?
Можно, в лимит стандарт гарантирует минимум 127 ты не упрешься точно. А вот читаться это будет хуево. Уверен, что нельзя по-другому? Что за код ты будешь выполнять в свитче?
Аноним 30/10/16 Вск 16:32:54 #394 №866357 
>>866351
Обработчик ошибок. 4 из 10 вариантов запускают функции, 2 из 10 принты, остальные 4 из 10 обнуляют необходимые переменные/счетчики/указатели.
Аноним 30/10/16 Вск 16:40:54 #395 №866370 
>>866351
>>866357
Ну у меня 2 выбора для этого. Или свитч внутри свитч или 10 if-ов. 1ая переменная из структуры 2 флага всего имеет USE; SLEEP; 2ая 5 флагов. Вот эти 10 вариантов флагов я сравниваю, для определения дальнейших действий. Все объявлено через enum. Я не спал уже 2ой день и возможно мой почерк будет маленько бредовый, а посты будут похожи на поток мыслей, заранее прошу прощения.
Аноним 30/10/16 Вск 18:17:37 #396 №866445 
>>866370
Сделай композитный флаг по формуле (значение флага один помноженное на количество возможных значений флага два плюс значение флага два) и гоняй свич по одному этому числу. И простейший макрос вида
#define CHOICE(flag1, flag2) ((flag1) * FLAG2_COUNT + (flag2))
Аноним 30/10/16 Вск 18:30:06 #397 №866451 
Вариант имеет право на жизнь. Хотя напрашивается if/else для переменной, которая 0 или 1, а внутри два свитча.
Аноним 30/10/16 Вск 19:20:18 #398 №866487 
>>866342
не умеешь писать стейт-машины?
пиздуй нахуй из профессии
Аноним 30/10/16 Вск 19:41:08 #399 №866500 
>>866487
Так я же только учусь. Нет, что бы наставить на путь или кинуть в меня книжкой. А тут сразу на хуй шлют, пичаль.
Аноним 30/10/16 Вск 20:38:14 #400 №866517 
>>866132
хакеры юзают dwm, который сами допиливают для получения нужно функциональности
Аноним 30/10/16 Вск 21:45:15 #401 №866551 
>>866500
Не слушай его, он бака
Аноним 31/10/16 Пнд 09:30:57 #402 №866800 
>>857838

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

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

Аноним 31/10/16 Пнд 09:32:26 #403 №866801 
>>866181

говно это все. Спасибо за ссылку, но это не то.
Алгоритмы поиска пути мне известны, проблема с их реализацией на Си, на других языках программирования с этим особых проблем нет, но из-за различных очень строгих ограничений в Си многое не представляется возможным реализовать простым способом.
Аноним 31/10/16 Пнд 10:03:34 #404 №866808 
>>866800
Синенавистник!
Аноним 31/10/16 Пнд 10:37:22 #405 №866828 
>>866342
Я бы сделал битовую структуру, где хранил бы флаги и катался по ней в switch c использованием масок. Из плюсов вижу возможную детекцию множественных ошибок (если оно вообще нужно). Но тк я Сишечку только изучаю, я хз адекватное ли это решение.
Аноним 31/10/16 Пнд 11:00:06 #406 №866845 
Code from K&R book:
#include <stdio.h>
#define MAXLINE 1000

int get_line(char line[], int MAXLINE);
...

Error:

string.c:2:17: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
#define MAXLINE 1000
^
string.c:4:31: note: in expansion of macro ‘MAXLINE’
int get_line(char line[], int MAXLINE);

chto ya delayu ne taq?

too lazy to switch language
Аноним 31/10/16 Пнд 11:02:41 #407 №866848 
>>866845
Препроцессор заменяет первый токен, определенный в дефайне, на остальные. Т.е., MAXLINE на 1000. Ты пишешь:
int get_line(char line[], int 1000)
Что ты делаешь не так?
Аноним 31/10/16 Пнд 11:04:25 #408 №866851 
>>866848
Я говорю в объявлении функции "бери вторым аргументом какую-то хуйню 1000 целочисленного типа"
Правильно?
Аноним 31/10/16 Пнд 11:14:31 #409 №866859 
>>866851
И что это должно по-твоему значить? Функции принимают аргументы. Аргумент - это значение, передаваемое тем, кто вызывает эту функцию. Чтобы можно было узнать значение аргумента, у него должно быть имя. А что ты со своей тысячей можешь сделать без имени? #define отрабатывает до компиляции - препроцессор проходит по исходнику и заменяет все дефайны на их значения, поэтому компилятор слово MAXLINE вообще не увидит нигде.

У тебя может быть два варианта.
1) Зафиксировать максимальный размер массива и не передавать его. Ты делаешь (сделал) #define MAXLINE 1000, и внутри функции используешь MAXLINE в качестве лимита. Получается:
int get_line(char line[]) { ... }
и вызов
char buffer[MAXLINE];
get_line(buffer);
2) Ты можешь предоставить вызывающему решать насчет максимального размера. Тогда ты передаешь размер аргументом и используешь этот аргумент в качестве лимита.
int get_line(char line[], int length) { ... }
и вызов
char buffer[12345];
get_line(buffer, 12345);

Аноним 31/10/16 Пнд 11:18:39 #410 №866865 
>>866859
Я понимаю, что препроцессор заменяет дефайны, этот код я перепечатал прямо из книги, а оно не компилируется, вот я и опупел слегка. Так то я уже заменил имя формального параметра в функции, все заработало
Аноним 31/10/16 Пнд 11:22:53 #411 №866871 
>>866865
Поглядел книгу - у тебя либо ошибка распознавания, либо ты просто ошибся регистром (там maxline). Регистр в сишечке имеет значение. MAXLINE и maxline - абсолютно разные вещи.
Аноним 31/10/16 Пнд 11:27:26 #412 №866877 
>>866871
русское издание блядское
sageАноним 31/10/16 Пнд 11:32:50 #413 №866885 
>>866877
В шапке прямая ссылка на английское. Подглядывай туда, если что.
Аноним 31/10/16 Пнд 11:35:33 #414 №866888 
>>866885
Да я лучше уж на инглише, спасибо.

Блин, мне кажется, или задания тут потруднее вем у Праты
Аноним 31/10/16 Пнд 11:38:30 #415 №866893 
>>866888
Простые, упрощенные до жути примеры и несложные задачки. Хочешь сказать, у Праты совсем дрисня в задачах?
Аноним 31/10/16 Пнд 12:04:45 #416 №866931 
>>866893
Пожалуй нет, мне показалось
Аноним 31/10/16 Пнд 13:24:57 #417 №867024 
>>864362
шли ноль, не прогадаешь
Аноним 31/10/16 Пнд 13:55:30 #418 №867047 
>>866342
Стараюсь в таких случаях чередовать switch-case и if, иначе адская каша получается
Аноним 31/10/16 Пнд 16:50:53 #419 №867159 
>>857838
Изучи архитектуры компьютеров(процессоров), машинную логику/арифметику, строение *nix, Win систем. На это придеться потратить ~3-4 годика, при необходимом рвении и желании можно уложиться и в 2. После этого любой язык программирования осилишь за пару месяцев. При этом паралельно будет изучение алгоритмов. И к 1-ому курсу будешь первоклассным программистом.
Аноним 31/10/16 Пнд 18:44:54 #420 №867257 
>>866931
Снова я. Почему может не работать ctrl-d? С клавой все ок, но ввод програамки не воспринимает EOF
Аноним 31/10/16 Пнд 19:05:22 #421 №867274 
>>867257
В Windows - Ctrl+Z. Еще не забудь о том, что ввод по умолчанию буферизированный, и буфер заполняется по Enter, т.е., нужно жать Ctrl+Z (или Ctrl+D в Linux) и потом Enter. Ну или пости код.
Аноним 31/10/16 Пнд 19:11:04 #422 №867279 
>>867047
>switch(a):
>case 0:
>switch(b):
Очевидно, это составное, сложное условие. Либо переделывай на битовую маску, если кончено это возможно, либо переписывай все на if, ищи оптимальную конструкцию. Я считаю switch - зло, прочитать тяжело, всегда стараюсь if использовать, легче вычитывать каждую ветку логики.
>867047
>чередовать switch-case и if
Говнецо тоже.
Аноним 31/10/16 Пнд 19:21:37 #423 №867290 
>>867274
Спасиб, уже переделал и все заработало.
осталось понять почему
Аноним 31/10/16 Пнд 23:20:02 #424 №867444 
>>866181
Перезалей на рыгохост какой-нибудь.
Аноним 01/11/16 Втр 00:43:16 #425 №867481 
https://habrahabr.ru/company/pvs-studio/blog/314044/
Аноны, поясните нуфагу, что за йобу они тут рекламируют? Это софтина находит плохой код?
Аноним 01/11/16 Втр 01:06:12 #426 №867492 
>>867481
Выше тред поскролли, мы как раз обсуждали. Плохой код - субъективное понятие. Софтина находит код, который нарушает какие-то положения стандарта. И, что гораздо круче, она находит еще и тот код, который на основании каких-то признаков или исходя из логических выводов программы может содержать ошибки (а может и не содержать). PVS-Studio стоит овердохуя и не продается физическим лицам. Кроме нее существуют и другие тулзы для статического анализа (всякие cppcheck, Coverity и прочие линты), в статический анализ понемногу учатся сами компиляторы (Visual Studio и clang кое-как умеют, например). Но с PVS-Studio, конечно, все это не идет ни в какое сравнение.
Какашечка 01/11/16 Втр 09:10:17 #427 №867619 
>>867492
>PVS-Studio стоит овердохуя и не продается физическим лицам.
а сколько стоит и почему не продается? если застартпупить свой анализатор, взлетит?
Аноним 01/11/16 Втр 11:50:42 #428 №867664 
>>867619
>а сколько стоит
Для всех по-разному. Где-то была приведена переписка с PVS-Studio, там цена была в районе 5k$ в год.

В принципе, это в примерно равно месячной зарплаты девелопера, так что не то чтобы очень дорого.
Аноним 01/11/16 Втр 12:41:59 #429 №867689 
Посоветуйте первую книгу для изучения основ C, я немного мимокрок, хотел почитать что то для обучения, прежде чем читать книгу с оп пика.
Аноним 01/11/16 Втр 12:55:34 #430 №867699 
14779941340880.jpg
>>867689
Аноним 01/11/16 Втр 13:00:27 #431 №867702 
>>867619
Взлетит. Если тебе удастся его написать, конечно же - там работы до опизденения.
Аноним 01/11/16 Втр 13:35:40 #432 №867727 
>>867702
пилю годноту. я любитель эс в частности clips и в сабжевой гуглагруппе пару лет назад появился чел, говорил, что их компания работает над проектом статического анализатора, задавал грамотные вопросы, фирма его в подписи светилась, вроде как с пиндостана. так вот, что в нормальных анализаторах крутится экспертная система, это для меня без сомнения, проблема в базе знаний. если бы можно было набрать паттерны ошибок как здесь http://www.viva64.com/en/w/ то создать анализатор более чем реально. но с другой стороны, анализаторов этих всяких дохуя и даже если застартпупить проектик, вероятность занять место под солнцем милипиздрическая.
Аноним 01/11/16 Втр 13:48:21 #433 №867738 
>>867727
Да похуй абсолютно на находимые ошибки, вась, просто посмотри на Coverity. Умеет примерно следующее: генерировать красивые отчёты с графиками, конвертировать их в пдфчики/доки и любые другие форматы и... всё. К чему я это: тут главное пиар и количество бабла в него вложенное, как и всегда в бизнесе.
Аноним 01/11/16 Втр 13:59:12 #434 №867747 
>>867738
тематика интеллектуального анализа текста мне интересна и запилить годноту поимев профит тоже и если бы запахло жирной котлетой, я бы макнулся.
Аноним 01/11/16 Втр 15:23:55 #435 №867801 
Программач, поясни за gdb. Есть какие-нибудь адекватные уроки для обучения работе с этим инструментом? В инглиш я вери бед, так что желательно всё же русскоязычное что.
Аноним 01/11/16 Втр 15:44:14 #436 №867808 
>>867619
Вангую, что пока ты пилишь свой, анализатор в clang уже будет допилен до приемлемого уровня.

>>867747
Это не про анализ текста если только ты не правила для cppcheck пилить собрался, лол. Это гораздо больше про компиляторы. Когда компилятор обрабатывает исходник, он анализирует код и применяет разные техники оптимизации (constant propagation, dead code elimination, например), чтобы сгенерить быстрый и/или короткий код. Сгенерив код, компилятор данные анализа выбрасывает, а статический анализатор, наоборот, использует подобные данные для поиска возможных проблем.
Аноним 01/11/16 Втр 15:53:11 #437 №867812 
>>867808
>Это не про анализ текста
как раз про то, просто кампутерные языки более примитивные и легче поддаются анализу.
> разные техники оптимизации
это то причем? как бонус анализаторы могут выдавать подсказки по оптимизации.

грубо говоря, нужно в соответствии с стандартом искать семантические ошибки.
if (a = 1) <- как банальный пример.
Аноним 01/11/16 Втр 16:44:52 #438 №867847 
14780078927080.png
>>867812
> if (a = 1) <- как банальный пример.
Фу. Давай лучше поговорим о if ((ptr = malloc(1000))) { ... }?

> > разные техники оптимизации
> это то причем?
При том, что техники используются те же. Если у тебя в коде:
point.x = 1;
point.x = 1;
то статический анализатор после преобразования кода в какую-нибудь SSA-форму находит лишнее присваивание, а потом подключает базу знаний, из которой извлекает вероятное описание проблемы (например, он может посмотреть, что в структуре кроме x есть только y и намекнуть на копипаст), а если не найдет совпадений в базе знаний - рассказывает только о присваивании. Но чтобы увидеть подобную проблему в:
buffer[0] = 1;
buffer[42 * (1 - sizeof(char))] = 1;
ему приходится выполнять те же самые оптимизации, что и компилятору.

Алсо, вот тебе пример того, как студия делает анализ, мне он очень нравится. По сути это false positive (этот конкретный код не содержит ошибок), но если вдуматься, то я должен был использовать do { ... } while.
Какашечка 01/11/16 Втр 18:20:55 #439 №867943 
>>867847
>if ((ptr = malloc(1000))) { ... }?
давай, что здесь не так?

и я смысла в твоей простыне не понял, что анализатор и конпилятор в связке могут давать более пролуктивный анализ? вопрос не о деталях и плюшках, а о коммерческом потенциале.
sageАноним 01/11/16 Втр 18:27:57 #440 №867954 
>>867943
> а о коммерческом потенциале.
Шел бы ты в /biz/, барыган, с таким подходом к вопросу. Из-за таких как ты, у которых на первом месте прибыль, а на втором все остальное, мир и катится в пизду.
Аноним 01/11/16 Втр 18:41:09 #441 №867965 
>>867943
> и я смысла в твоей простыне не понял
А я про анализ текста отвечал. Анализируется совсем не текст. И вообще это серьезная магия, без соответствующего опыта ты ничего адекватного не напишешь.
Аноним 01/11/16 Втр 21:37:57 #442 №868062 
Есть один шеллкод, который просто спавнит мессаге бокс "Хелло, ворлд" я с этого кекну немношк. Хочу по-приколу инжектировать его во все процессы и получить кучу таких окошек. Что почитать об этом? Как сделать инжект в каждый процесс?
Аноним 01/11/16 Втр 21:38:51 #443 №868064 
14780255314340.jpg
Спойлер не там
Аноним 01/11/16 Втр 21:44:19 #444 №868075 
>>867801
Нагугли какой-нибудь quick reference (тысячи их), а дальше юзай help и официальную документацию по необходимости http://sourceware.org/gdb/current/onlinedocs/gdb/
Аноним 01/11/16 Втр 21:45:55 #445 №868076 
>>868062
сделал по-приколу инжект тебе в рот
Аноним 01/11/16 Втр 22:06:09 #446 №868084 
>>868076
Приятное теплое распирание и щекотание при выполнении каждой инструкции.
Аноним 01/11/16 Втр 22:10:07 #447 №868086 
>>868062
> Что почитать об этом? Как сделать инжект в каждый процесс?
Ну очевидно же. >>861712
Аноним 02/11/16 Срд 17:06:06 #448 №868535 
Репост, здесь мне более компетентные люди помогут.

Анон, у меня вопросы по сетям, возможно глупые: при каждом http-соединении программой-сервером создаётся файл-сокет, поскольку http работает поверх tcp?

И ещё: через TCP-сокет можно ответить http-пакетом, но это уже будет вроде как нарушение конвенции?
Как с этим соотносится то, что TCP-бинарный, HTTP-текстовый?
Простейший абстрактный TCP-сервер принимает данные и выводит их. То что они сразу выводятся не в бинарном виде-заслуга либы (<sys/socket.h>, etc)?
Аноним 02/11/16 Срд 18:40:37 #449 №868601 
>>868535
> при каждом http-соединении программой-сервером создаётся файл-сокет
Во-первых, не при каждом. В HTTP/1.1 есть такой Keep-Alive, когда после получения одного ресурса с сервера клиент может попросить другой, используя уже установленное соединение. Например, так всякие картиночки с двачей браузеру удобнее грузить. Во-вторых, файлом сокет быть не обязан (в винде у сокета по умолчанию нет файлового I/O). Но в целом, ты прав: создается TCP-сокет, подключается к серверу, отправляется запрос и читается ответ.

> И ещё: через TCP-сокет можно ответить http-пакетом, но это уже будет вроде как нарушение конвенции?
Не совсем понятный вопрос. И не совсем правильно говорить про HTTP "пакеты". Это поточный протокол поверх поточного же TCP, данные могут приходить разными порциями.

> Как с этим соотносится то, что TCP-бинарный, HTTP-текстовый?
Текст - не абстрактная хуйня в вакууме, это просто интерпретация последовательности байтов. В частности, в HTTP используется ASCII.

> То что они сразу выводятся не в бинарном виде-заслуга либы
Данные приходят байтиками, но если ты делаешь какой-нибудь printf, это значит, что ты интерпретируешь эти байтики как символы в кодировке ASCII (в ASCII нет преобразований - порядковый номер символа равен численному значению байта).
Аноним 03/11/16 Чтв 02:53:03 #450 №868858 
поясните за аргументы командной строки. если что я шиндоусблядь. вот в K&R базар пошел за сабж и несколько примеров программ. вот следующая хуета например должна найти образец в строке.

#define MAXLINE 1000

int main(int argc, char *argv[]) {
char line[MAXLINE];
int found = 0;
if(argc < 2) printf("используйте find для образца\n");
else
while(getline(line, MAXLINE))
if(strstr(line, argv[1]) != NULL){
printf("%s", line);
found++;
}
return found;
}
собственно когда я откомпилировал это и запускаю программу не о какой инициализации аргументов разговора быть не может в окне пишется первый принтф допустимто. ну я открыл просто командную строку и ввел там типо find -"eblo" -n "lo", ввёл всё еще раз по другому. проясните короче за эту хуйню.
Аноним 03/11/16 Чтв 02:54:36 #451 №868859 
>>868858
ну воще за эти аргументы, как я например указываю количество параметров в argc.
Аноним 03/11/16 Чтв 06:54:08 #452 №868910 
Суп программач,
поясни за написание драйверов и служб для линукс, насколько хорошо освещена эта тема, какие актуальные годы для книжек, что вообще стоит почитать? Сам я байтоёб, вроде неплохо уже пишу для STM32, но без фанатизма. Посмотрел курсы на степике, но у них задания и вопросы просто дичь какие кривые и нулевая база теории, один упор на практику: что куда подставить, какие команды мы будем сейчас использовать и прочее и прочее. Почитал зарубежные статьи, и чот как-то грустненько они идут, ничего толком непонятно, какие-то корки хуёрки. Материал подается так, что считается что ты должен знать основной материал а разбирают уже нюансы. Вообщем нид сам хелп фром анон хеар.
Аноним 03/11/16 Чтв 09:06:55 #453 №868939 
>>868910
> драйверов и служб для линукс
Это называется "модули ядра" и "демоны", виндузятник.
Аноним 03/11/16 Чтв 09:18:13 #454 №868941 
>>868939
А по делу что сказать?
Аноним 03/11/16 Чтв 10:04:22 #455 №868948 
>>868858
Что тебе пояснить? Программа берет командную строку:
> find -"eblo" -n "lo"
разбивает ее на куски по пробелам (куски в кавычках считаются одним целым, даже если внутри есть пробелы). Конкретные детали того, как парсится командная строка, зависят от ОС и/или стандартной библиотеки C. После того, как командная строка разобрана, создается argv, в него кладутся указатели на каждый кусок, а в argc общее количество указателей. А потом еще в argv[argc] кладется NULL.

Если у тебя программа с аргументами не запускается, удостоверься, что ты не ошибся директорией и именем (может, у тебя компилятор собирает какой-нибудь a.exe). В Windows есть команда find, поэтому если в текущей директории нет твоей find.exe, запустится системная команда. Алсо, практически во всех IDE можно указать командную строку для запуска, но в таком случае указывать имя самой программы (find) не нужно, только аргументы.
Аноним 03/11/16 Чтв 10:04:51 #456 №868949 
>>868601
Спасибо, бро, добра тебе!
Аноним 03/11/16 Чтв 11:07:01 #457 №868970 
14781604219600.jpg
Аноны, правда ли стоит начинать вкатываться в программирование (начинать хотел с C) с помощью этой книги, если я мимокрок?
Если литература годная, может вообще стоит начать с "основ программирования для чайников"?
Изначально хотел начать с какой нибудь простой книги о основа C + конспекты лекций институтов по алгоритмам и систем данных, а после перейти на книгу с оп пика.
Аноним 03/11/16 Чтв 11:09:28 #458 №868971 
>>868970
Начни с питона, нет начального гемороя как в Си, куча готового кода, всякие онлайн соревнования и задачи. Как наберешься навыков именно программирования, там уже будешь видеть дальнейший свой путь развития.
Аноним 03/11/16 Чтв 11:19:20 #459 №868974 
>>868971
Питон же относится к web, не так интересно (как мне показалось)
Аноним 03/11/16 Чтв 11:19:26 #460 №868975 
>>868601
А не скажешь, что можно почитать/посмотреть по теме.
Читал Олиферов год назад-ничего не запомнил, Beejs Netwrk Programming нормально зашло.

Сейчас планирую UNIX Network Programming начать.
Аноним 03/11/16 Чтв 11:21:10 #461 №868976 
>>868974
Питон относится ко всему, в первую очередь к десктопам.
Аноним 03/11/16 Чтв 11:23:18 #462 №868979 
>>868975
Можешь оценить свой навык создания unix приложений? Что читал, что зашло, как оно вообще.
>>868910 - анон
Аноним 03/11/16 Чтв 11:27:22 #463 №868980 
>>868976
Я правильно понимаю, что питон просто будет для меня лучшим началом, так как более дружелюбен к мимокрокам?

И почему в этой пасте советуют книгу Dive into python, когда есть Укус питона, потому используют даже в НАСА!!11

Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Аноним 03/11/16 Чтв 11:30:44 #464 №868982 
>>868980
Да, правильно понимаешь.
Мне питон нравится тем, что в нём можно работать как в командной строке сразу.
Аноним 03/11/16 Чтв 11:33:06 #465 №868983 
>>868979
Практически нулевой. Кроме того что выше-почти ничего не читал.
Только начинаю вкатываться в низкий уровень, а так пишу всякую сетевую и около-сетевую хуиту на питоне. Хочу глубоко врубиться во все, с чём работаю.
Аноним 03/11/16 Чтв 12:33:56 #466 №869011 
>>868975
Читай UNIX Network programming, да. Не стесняйся писать мелкие программки, пока читаешь. Собери себе виртуальную сеточку из пары-тройки линуксов в VirtualBox если воткнуть какой-нибудь арчик без гуя, оно будет летать даже на совсем днищепк без аппаратной виртуализации и экспериментируй. Теория, не закрепленная практикой, быстро забывается, а если соберешь все грабли по пути, в голове точно что-нибудь останется.
Аноним 03/11/16 Чтв 14:37:13 #467 №869059 
>>869011
Так и сделаю, добра тебе ещё раз!
Аноним 03/11/16 Чтв 16:49:37 #468 №869146 
>>868535
Ты походу дела вообще не понимаешь о сетях.
Google: инкапсуляция модели OSI;
google: модель OSI
Какашечка 03/11/16 Чтв 20:24:36 #469 №869263 
сисюны, поясните за булевые элементы в структуры. ести четыре булевых значения и я пиздец как нехочу их в своей структуре в виде булов, а хочу как флаги. удобно обнулять при инициализации да и места не жрут. а? нахуй булы?
Аноним 03/11/16 Чтв 20:30:41 #470 №869265 
>>869263
>а хочу как флаги
битовые операции
Аноним 03/11/16 Чтв 20:55:20 #471 №869287 
>>869263
> удобно обнулять при инициализации да и места не жрут
struct { bool foo:1; bool bar:1; unsigned baz:4; } x = { 0 };
Аноним 03/11/16 Чтв 21:12:10 #472 №869301 
>>869265
>битовые операции
ну и норм
>struct { bool foo:1; bool bar:1; unsigned baz:4; } x = { 0 }
уотаквот malloc(sizeof(YOBAStruct))

Аноним 03/11/16 Чтв 21:14:22 #473 №869303 
>>869301
> уотаквот
Щито?
Аноним 03/11/16 Чтв 21:17:40 #474 №869309 
>>869303
>Щито?
динамически выделяется, вот что.
Аноним 03/11/16 Чтв 21:19:14 #475 №869311 
>>869146
Да, как-то хуёво отложилось.

HTTP-пакет неявно включает в себя заголовки всех нижележащих уровней, ты на это намекаешь?
Аноним 03/11/16 Чтв 21:19:32 #476 №869312 
>>869309
Ну ты же написал "структура" - кто тебе мешает динамически выделять структуры с битфилдами?
Аноним 03/11/16 Чтв 21:29:03 #477 №869324 
>>869312
> кто тебе мешает динамически выделять структуры с битфилдам
никто, просто по району ходит слух, что битфилды не всегда кроссплатформенны и конпиляторозависимы.
Аноним 03/11/16 Чтв 21:35:14 #478 №869326 
>>869324
> что битфилды не всегда кроссплатформенны
Чушь собачья. Разворачиваются в те же самые инструкции, что и логические операции. Ты, наверное, не до конца понял. На самом деле, проблема с битфилдами - интероперабельность. Если твой код будет писать битфилды в файл - ты обязательно их прочитаешь, а вот программа, собранная другим компилятором или под другую платформу - не обязательно - выравнивание и порядок битов в битфилде зависит от компилятора. То же, если битфилды будут торчать в API твоей библиотеки. Если ты соберешь либу одним компилятором, а пользовательский код будет собран другим - может случиться неприятность. Но в своем коде можно использовать битфилды без проблем.
Аноним 03/11/16 Чтв 21:36:12 #479 №869329 
вообщем енюмы это как то слишком молодежно, а буллы это один чар как минимум, а в чар я могу напихать целых восемь флагов. ня.
Аноним 03/11/16 Чтв 21:37:38 #480 №869333 
>>869329
Не пихай в char флаги. Там выше видео про undefined behavior, и там поясняют, что бывает за то, что ты вдвигаешь 1 в знаковый бит.
Аноним 03/11/16 Чтв 21:38:43 #481 №869337 
>>869326
> выравнивание и порядок битов в битфилде зависит от компилятора
а мне нужно более менее предсказуемо да еще максимально кроссплатформенно, вот.
Аноним 03/11/16 Чтв 21:40:11 #482 №869339 
>>869333
>что ты вдвигаешь 1 в знаковый бит.
на ладно, unsigned char. да и что будет? если никто мой байтик не тронет.
Аноним 03/11/16 Чтв 21:40:52 #483 №869342 
>>869339
Все хотят тронуть твой байтик
Аноним 03/11/16 Чтв 21:41:42 #484 №869344 
>>869337
> максимально кроссплатформенно
Макисмально кроссплатформенно парсить бинарные форматы побайтово. Иначе ты можешь напороться и на порядок байтов, и на количество бит в инте, и на выравнивание по умолчанию.

>>869339
> unsigned char
С unsigned ничего не будет, с unsigned все ок.
Аноним 03/11/16 Чтв 21:44:12 #485 №869346 
>>869311
>HTTP-пакет
Пиздец. А ничего, что TCP — уже стримовый протокол?
Аноним 03/11/16 Чтв 21:44:27 #486 №869348 
>>869344
>С unsigned ничего не будет, с unsigned все ок.
а без unsigned? поясни.

Аноним 03/11/16 Чтв 21:48:58 #487 №869352 
>>869346
Я нуфаг, не обессудь.
Аноним 03/11/16 Чтв 21:52:34 #488 №869357 
14781991540760.png
>>869348
> а без unsigned? поясни.
А без unsigned ты можешь сдвигать вправо только положительные числа. На самом деле, ты вряд ли будешь сдвигать влево именно сам char с флагами, так что я зря прицепился.
sageАноним 03/11/16 Чтв 21:53:14 #489 №869358 
>>869357
сдвигать влево
фикс
Аноним 03/11/16 Чтв 21:57:36 #490 №869364 
>>869357
>сдвигать влево именно сам char с флагами
ну там очевидно будет два стула или shl или shr, вот и неопределенность.
Аноним 03/11/16 Чтв 21:58:38 #491 №869365 
>>869364
shl/sal быстрофикс
Аноним 03/11/16 Чтв 22:07:15 #492 №869370 
>>869364
Неопределенность там из-за наличия других архитектур, в том числе и еще не существующих. x86 все в порядке, просто порежутся биты слева. Между SHL и SAL вообще разницы нет.

Алсо, я тут подумал, и понял, что зря вообще прицепился. Прошу прощения. Именно с char в принципе все ок, ибо integer promotions до int во время вычислений.
Аноним 03/11/16 Чтв 22:19:59 #493 №869380 
>>869370
>SAL
схоронит выпавший битик в флаг, а shl нет. вроде так.
Аноним 03/11/16 Чтв 22:21:43 #494 №869383 
>>869380
Оба воткнут тот же самый бит в CF.
Аноним 03/11/16 Чтв 23:49:34 #495 №869431 
Интересует вызов WinAPI по хэшу. Когда мой кодес занимается парсингом таблицы экспорта кернеля, в какой момент останавливать вычисление хэша? Завершаются ли экспортируемый имена нулем? В олли я видел, что эти имена располагаются вплотную без всяких нулей.
Аноним 04/11/16 Птн 08:41:27 #496 №869559 
>>869431
Не помню уже, но должны завершаться. Читай описание формата РЕ-файла, там всё написано.
Аноним 04/11/16 Птн 09:39:37 #497 №869563 
>>869431
Количество именованных экспортов лежит в IMAGE_EXPORT_DIRECTORY.NumberOfNames. Имена завершаются нулем.
Аноним 04/11/16 Птн 21:47:36 #498 №869854 
анончики, я подсел на дефайны. я все хочу задефайнить. у меня есть повторяющиеся участки кода, я хочу их задефайнить, а не выносить в подпрограмму. это норма?
Аноним 04/11/16 Птн 21:49:16 #499 №869857 
>>869854
Не норма. Если только ты не пишешь для древнего компилятора какого-нибудь, делай inline/always_inline и не выделывайся.
Аноним 04/11/16 Птн 22:01:30 #500 №869858 
>>869857
вот есть например три цикла подряд, отличающиеся количеством повторений:

c = 10;
while(c--) {
}

c = 20;
while(c--) {
}

c = 30;
while(c--) {
}

хочу тело цикла задефайнить, что в этом плохого? зачем инлайн функция?
Аноним 04/11/16 Птн 22:06:18 #501 №869860 
Я напейсал прогу, которая зкаменяет табы на пробелы. Я теперь си программист? Заслужил ли я носить бороду?
Аноним 04/11/16 Птн 22:10:54 #502 №869862 
>>869860
>Я теперь си программист?
да
>Заслужил ли я носить бороду?
нет
Аноним 04/11/16 Птн 22:26:07 #503 №869867 
>>869862
А что нужно чтобы, бороду заслужить?
Кстати, надо через программку програнть весь мой говнокод на питоне
Аноним 04/11/16 Птн 23:00:51 #504 №869879 
>>869858
Сделай инлайн-функцию с циклом, принимающую количество повторений? Или обычную static функцию, компилятор сам разберется.
Аноним 04/11/16 Птн 23:14:35 #505 №869884 
Как прописать программу в автозагрузку и что не так в моем коде? http://ideone.com/p8uNtC

Запускаю его как с правами администратора, так и без. Запись в реестре не появляется.
Аноним 04/11/16 Птн 23:21:53 #506 №869889 
>>869884
GetLastError и прочая диагностика где? 64-битная ОС и 32-битное приложение? В HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run смотрел?
Аноним 04/11/16 Птн 23:26:44 #507 №869893 
>>869889
>64-битная ОС и 32-битное приложение?
Да, так и есть.
>В HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run смотрел?
Нет, что это за ветка? Завтра посмотрю, батарея разряжена
Аноним 04/11/16 Птн 23:31:57 #508 №869897 
>>869893
64-битная винда частично редиректит доступ к реестру от 32-битных приложений в отдельную ветку из-за проблем совместимости. Например, чтобы ты случайно не прочитал имя 64-битной дллки какой-нибудь и не плакал, что не получается ее загрузить.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384232%28v=vs.85%29.aspx
Аноним 04/11/16 Птн 23:56:18 #509 №869909 
>>869897
И как происходит запуск из той ветки? Почему моя программа не запускается при загрузке системы? Или из той ветки вообще не работает запуск?
Аноним 04/11/16 Птн 23:57:58 #510 №869910 
>>869909
Нормально происходит. Посмотри для начала, пишется ли. Может, ты все же не под админом запускаешь?
ПЕРЕКАТ Аноним 05/11/16 Суб 00:00:09 #511 №869912 
>>869911 (OP)
>>869911 (OP)
>>869911 (OP)
>>869911 (OP)
>>869911 (OP)
Аноним 05/11/16 Суб 08:00:40 #512 №870043 
14783220407730.png
>>856777 (OP)
Анон, как мне сменить язык с С++ на просто С, я ультраньфаня
Аноним 05/11/16 Суб 18:01:26 #513 №870367 
Ребят, помогите, пользуюсь visual studio 2015 и почему то в ней scan, gets считает за ошибки и нужно писать scan_s, gets_s. Как фиксить это? (в 2008 версии все ок). Спасибо.
Аноним 07/11/16 Пнд 18:31:47 #514 №871643 
14785327077020.png
>>870367
gets() официально выпилена из стандарта, пользуйся fgets(). Остальные предупреждения отключаются втыканием #define _CRT_SECURE_NO_WARNINGS (или в старых версиях #define _CRT_SECURE_NO_DEPRECATE 1) в самое начало исходника (перед всеми инклудами). Или при компиляции из командной строки -D_CRT_SECUREблаблабла. Или через GUI (пикрелейтед) ошибки превращаются в варнинги. В любом случае, внимания обращать на это не стоит, пользоваться функциями с _s не стоит тем более.
Аноним 07/11/16 Пнд 21:45:27 #515 №871772 
анон, а где можно почитать про создание собственного представления int-ов, не влезаю в 64 битный, числа большие, на них потом будет пара алгоритмов из теории чисел?
Аноним 08/11/16 Втр 00:22:05 #516 №871951 
>>871772
> где можно почитать про создание собственного представления int-ов
В википедии в статье "длинная арифметика". Узнаешь про Карацубу, посмотришь быстрое возведение в степень. Сложение и вычитание в столбик, как в школе (если сумма меньше любого слагаемого, значит был перенос). Хранить лучше в виде структурки с массивом каких-нибудь uint_fast32_t, битность этих самых fast посчитаешь. А вообще, мы уже в новый тред перекатились, сюда вряд ли многие заглядывают.
Аноним 08/11/16 Втр 12:37:54 #517 №872144 
14785978742960.jpg
Привет. Есть говнокод эмулятора на Си: https://github.com/HerculesWS/Hercules/

Как и чем этот говнокод можно покрыть тестами? Есть ли тут те, кто покрывают Си код тестами? Чем пользуетесь, как тестируете, что почитать, что изучить? Короче любой фидбек будет только на пользу.
Аноним 08/11/16 Втр 14:45:33 #518 №872179 
>>872144

ПЕРЕКАТ >>869911 (OP)
Аноним 09/11/16 Срд 16:23:43 #519 №872882 
http://ideone.com/J4CVCA
Подскажите как сложить два массива.
Аноним 18/11/16 Птн 19:44:31 #520 №877947 
ананасы, подскажите, можно ли как нибудь способом узнать указывает ли указатель void * на какое либо место в памяти
Ошибка в C. Не могу построить цикл. moon 20/11/16 Вск 20:58:13 #521 №879162 
14796646932250.jpg
14796646932351.jpg
Дело в том что в школе началось программирование, а с этим в свою очередь начались проблемы. Проходим циклы. Я прикрепил задачу и её решение на Си. Но я не понимаю что я сделал не так(( Помогите. Заранее благодарен.
Ошибка в Си. Не могу построить цикл. moon 20/11/16 Вск 21:04:11 #522 №879167 
14796650514130.jpg
14796650514191.jpg
Дело в том, что в школе началось программирование, а В связи с этим-проблемы. Проходим циклы. Я прикрепил два скрина : задачу и её решение. Но выдаёт ошибку. Что я сделал не так? Помогите, заранее спасибо.
comments powered by Disqus

Отзывы и предложения