М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 6 сентября 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

78 Кб, 792x1023

C Programming Language #10 # OP 21 Июл, 08:25 #801836 В конец треда | Веб

Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: http://www.ime.usp.br/~pf/Kernighan-Ritchie/C-Programming-Ebook.pdf
- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт) не драфт ищем на торрентах
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- 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/

Шапка: http://piratepad.net/bJ1SdmkZyu

Ответы>>801994>>807992>>810342>>819218

21 Июл, 08:32 #2 #801842

Влился в этот инт мейн(вйод)

Ответы>>801851

21 Июл, 08:49 #3 #801848

Скампливиравал экзэ.
Ошибка памити.
Мам, нада камплюхтер памащнее.
Ну мам, мне для работы, мам.

25 Кб, 416x287

21 Июл, 08:52 #4 #801851

>>801842
> вйод

21 Июл, 09:45 #5 #801878

Закатился и сразу вопрос, пишет кто что-то для себя на Си или это только рабочий момент? Решение реальных задач мне видится более интересным занятием чем перетирание задачников для студентиков.

Ответы>>801886>>801888>>801892

21 Июл, 09:51 #6 #801886

>>801878
Контроллеры

21 Июл, 09:52 #7 #801888

>>801878
mplayer2,mpv

21 Июл, 09:55 #8 #801892

>>801878
https://github.com/search?utf8=✓&q=zadachi+language:c
Неужели это так трудно, дибил?

Ответы>>801900

21 Июл, 10:09 #9 #801900

>>801892
Я смотрю ты у мамы дурачок, если бы я хотел сферических задач в вакууме, то я бы порешал студентчские задачки (чем я и знанимался), а я ищу несложный совместный с аноном проект, где мы вместе могли бы сделать какую-нибудь полезную хуйню. Для самодостаточных опенсорсных проектов у меня маловато знаний.

Ответы>>801906>>801923>>802138

21 Июл, 10:17 #10 #801906

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

Ответы>>801908

21 Июл, 10:23 #11 #801908

>>801906
Кокой агрессивный экземпляр, сходи в /е/ передерни и успокойся.

21 Июл, 10:49 #12 #801923

>>801900
Так это, тебе все правильно сказали. Выбираешь, какая сфера интересна, идешь на гитхаб, ищешь проект и помогаешь по мере сил. Очень часто в Issues висят простенькие задачи, до которых просто руки не доходят ни у кого. Или тебе вот прямо необходимо именно с кем-нибудь из /pr/ что-то делать?

21 Июл, 12:16 #13 #801994

>>801836 (OP)
Ананасы, как вы избегаете лесенок из if-then-else при проверке результата вызова функций?
Вот написал функцию https://ideone.com/UPvigL и больше смотреть на неё не хочу, ибо она БЛЯТЬ СЛИШКОМ УЖАСНАЯ. Как можно сделать лучше?

Ответы>>801999>>802001>>802119

21 Июл, 12:23 #14 #801999

>>801994
да, выглядит уебищно простынно

Ответы>>802006

21 Июл, 12:24 #15 #802001

>>801994
Что-то можно в одном условии по && или || проверить. Ну и как бы есть идиома:
err = function();
if (err)
{
printf("pizdariki\n");
return; // Или, О БОЖЕ, goto cleanup;
}
И есть куча противников такого подхода. Разделяешь их мнение - заводи стейт, разбивай функцию на более мелкие. Хотя твою функцию однозначно стоило бы разбить код не читал.

Ответы>>802006

21 Июл, 12:28 #16 #802006

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

>>802001
Идиома будет еще хуже выглядеть, чем лесенка, если в функции появится куча хуйни, которую нужно будет деинициализировать/удалить/etc. goto конкретно в моем случае тоже будет плохо выглядеть.
Наверное и правда надо разбивать функцию.

21 Июл, 13:22 #17 #802057

Ананасы киньте свою реализацию связного списка.

Ответы>>802069>>802071

21 Июл, 13:36 #18 #802069

>>802057
std::forward_list<int> xs;
typedef std::forward_list<int> list;

list& push (list &ls, int value)
{
ls.push_back(value);
return ls;
}

Ответы>>802075>>802076

21 Июл, 13:36 #19 #802071

>>802057
stepic ?

Ответы>>802077>>802093

sage 21 Июл, 13:38 #20 #802075

>>802069
нахуй пошел

21 Июл, 13:38 #21 #802076

>>802069
printf("пошел нахуй\n");

21 Июл, 13:39 #22 #802077

>>802071
нет

21 Июл, 13:52 #23 #802093

>>802071
Где там можно найти курс по алгоритмам на графах с показом профессионально реализованных алгоритмов на C++14? Интересует только правильная реализация, про сами алгоритмы можно и у Кормена почитать.

30 Кб, 698x363

21 Июл, 13:54 #24 #802094

Анон, нужна помощь по задаче:
"Задан целочисленный массив arr[30], в котором существует минимум 10 различных значений. Найти 10 по величине элемент массива."
Доп. условие: оформлять в виде функций.
Вот решение: http://pastebin.com/GJiripGh
А на пике результат работы. Откуда там неизвестное значение после сортировки? По видимому это ноль, но что с ним стало?
Спасибо.

Ответы>>802105>>804265>>804794

21 Июл, 14:13 #25 #802105

>>802094
В stdlib.h есть банальный qsort. В задаче не запрещено?

> Откуда там неизвестное значение после сортировки?
Выход за границу массива в строках 24-27.

Алсо, можно не сортировать весь массив, а хранить (и по желанию сортировать) только максимальные 10 элементов. Код от этого не усложнится, а вот бегать по массиву в строке 36 и ниже не придется.

Ответы>>802146

21 Июл, 14:22 #26 #802119

>>801994
do while 0 idiom

299 Кб, 606x606

21 Июл, 14:48 #27 #802138

>>801900
>я ищу несложный совместный с аноном проект, где мы вместе могли бы сделать какую-нибудь полезную хуйню.

ИНТЕРЕСНЫЕ ПРОЕКТЫ

21 Июл, 14:56 #28 #802146

>>802105
pro qsort, ничего в занятиях не было, вот и не знал.

>Выход за границу массива в строках 24-27.
Действительно. Просто алгоритм сортировки я почти полностью повторил из одного интернет-курса.(http://www.youngcoder.net/2013/07/poisk-i-sortirivka-massiva.html). Надо было самому думать.

>Алсо, можно не сортировать весь массив, а храни
Ещё один массив подключить?
З.Ы. Чую пора завязывать с интернет-курсами и браться за K&R.

Ответы>>802149>>802151

21 Июл, 15:00 #29 #802149

>>802146
>и браться за K&R.
Ты оттуда возьмешь максимум синтаксис Си хотя прочитать эту книжку надо обязательно. Курсы нормальные надо смотреть, а не говно для дебилов, сделанное такими же дебилами, да еще и на русском языке.

Ответы>>802153

21 Июл, 15:06 #30 #802151

>>802146
Лел, кто будет на полном серьезе учить пузырьковой сортировке, она же интуитивно очевидна ньюфагу, я и то шкальником без всяких знаний алгоритмов как-то сходу нахуярил подобное?
У Кормена например первый алгоритм это сортировка вставками. Код короче будет и выполняется она быстрее, но это зависит от входного массива.
Алсо у тебя в коде необязательно в параметрах функции указывать массив с размером, всё-равно прилетает лишь указатель на первый элемент. Читай K&R, не разменивайся на говнокурсы.

Ответы>>802163>>802164

21 Июл, 15:07 #31 #802153

>>802149
Есть более конкретные предложения? кроме параши от мелкософта?

Ответы>>802164

21 Июл, 15:13 #32 #802163

>>802151
Я боялся браться за ритчи и кормена из-за их специальной направленности. с моим гуманитарным нужно было что-то общей направленности. Вот я и выбрал эти курсы

Ответы>>802166>>802173

21 Июл, 15:15 #33 #802164

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

>>802153
Очевидный Седжвик на курсере, Embedded Systems - Shape the World на edx. Также буквально сегодня на мыло пришел анонс нового курса https://www.edx.org/course/real-time-bluetooth-networks-shape-world-utaustinx-ut-rtbn-12-01x, вроде должен быть интересным (но это уже более продвинутый курс).

Ответы>>802177

21 Июл, 15:15 #34 #802166

>>802163
> с моим гуманитарным
Ебать, зачем тебе сишка вообще?

Ответы>>802171

21 Июл, 15:26 #35 #802171

>>802166
нраится. причём чисто, без прикладного характера.

21 Июл, 15:33 #36 #802173

>>802163
А что за специальная направленность у Ритчи?

Ответы>>802186

21 Июл, 15:36 #37 #802177

>>802164
> Также буквально сегодня на мыло пришел анонс нового курса https://www.edx.org/course/real-time-bluetooth-networks-shape-world-utaustinx-ut-rtbn-12-01x, вроде должен быть интересным (но это уже более продвинутый курс).
Индусы решили сбыть партию контроллеров.

Ответы>>802180

21 Июл, 15:41 #38 #802180

>>802177
Ох да ладна. TI может бесплатно отправить контроллеры для обучения, если очень хорошо попросить. В любом случае предыдущий курс у них не так уж плох, особенно для гуманитария итт.

21 Июл, 15:54 #39 #802186

>>802173
Ну, я думал книга больше про синтаксис С, нежели про программирование вообще

Ответы>>802230>>802271

21 Июл, 17:07 #40 #802228

Как внедрить точку останова в GDB? Команда set {char} *0x08048080 = 0xCC выдает ошибку cant access memory at address.

Ответы>>802366

21 Июл, 17:09 #41 #802230

>>802186
И синтаксис, и примеры программ, и стандартная библиотека стандарта ANSI, и упражнения. Там даже быструю сортировочку обсуждают. Но всё-равно ограничиваться K&R не стоит, ведь есть C99/C11, а стандартная библиотека давно вышла за пределы, обсуждаемые в книжке.

Ответы>>802271

21 Июл, 19:13 #42 #802271

>>802186
Книга действительно больше про си, нежели программирование, даже сам Ритчи это писал.
>>802230
Можно Прату почитать, там рассказываются очень многие аспекты языка, описываются современные стандарты, да и есть темы, которых нет в k&r

21 Июл, 22:03 #43 #802366

>>802228
Напомни, чем тебе b/hb не понравились?

21 Июл, 22:19 #44 #802374

В этом вашем Си есть лямбда-выражения? Если нет, то когда завезут?

Ответы>>802379>>802413>>802537

21 Июл, 22:21 #45 #802379

>>802374
А что тебе еще нужно? Генераторы, LINQ, модули, сборку мусора?

Ответы>>802393

21 Июл, 22:51 #46 #802393

>>802379
Если отбросить троллинг, почему в Це-Плюс-Плюс лямбды есть, а в обычном Це - нет?

Ответы>>802397>>802405

21 Июл, 22:58 #47 #802397

>>802393
Как раз именно поэтому хорошо писать на си несложно, а вот на крестах хорошо пишут единицы. Предложение воткнуть замыкания в следующий стандарт есть, ссылка на черновик валяется в одном из предыдущих тредов, лень искать. Срач там же.

21 Июл, 23:21 #48 #802405

>>802393
Как думаешь, почему си – переносимый ассемблер?

21 Июл, 23:34 #49 #802413

>>802374
Не отвечайте этому долбоёбу, он это в каждый C-тред пишет.

22 Июл, 05:09 #50 #802537

>>802374
В этом вашем Хаскелле есть арифметика указателей? Если нет, то когда завезут?

Ответы>>802581

22 Июл, 10:03 #51 #802581

>>802537
Foreign.Ptr

22 Июл, 11:18 #52 #802621

Анон, ты мне проясни, могу ли я целиком положиться на k&r и сидеть его ковырять, посматривая в интернет, в случае чего? Просто я его полистал и мне, в принципе понравилось, достаточно удобоваримо. Или всё-же надо параллельно ещё что-то изучать по алгоритмам? Или же за k&r вообще нубам браться не стоит?
вчерашний гуман, с его копрокурсами

Ответы>>802626>>802761

22 Июл, 11:21 #53 #802626

>>802621
Можешь. Алгоритмы и структуры данных надо ковырять, когда уже язык знаешь. А если у тебя трудности с пониманием указателей, или ты все еще ошибаешься на 1 в for(), какие уж тогда алгоритмы?

Ответы>>802640

22 Июл, 11:37 #54 #802640

>>802626
Из предисловия ко второму изданию:
"Книга не рекомендуется для
чтения новичкам; для своего изучения она требует знания основ программирования и вычислительной техники"

Ответы>>802643

22 Июл, 11:39 #55 #802643

>>802640
Это защита от дурака, или требование знаний пары курсов какого-нибудь технарского?

Ответы>>802646

1 Кб, 180x80

22 Июл, 11:43 #56 #802646

>>802643
Начни читать, блять.

Ответы>>802733

22 Июл, 14:12 #57 #802733

>>802646
Слушаюсь!

22 Июл, 15:05 #58 #802761

>>802621
Стивен Прата. Язык программирования С. Лекции и упражнения.
Это читай, там новые стандарты есть, K&R это уже прошлый век.

22 Июл, 21:39 #59 #802936

Напоминаю, что через 9 дней я начинаю свое саморазвитие, а именно буду учить кодинг на си.

Ответы>>802940>>803326

22 Июл, 21:43 #60 #802940

>>802936
> через 9 дней
Не начнешь.

Ответы>>803157

23 Июл, 00:48 #61 #803157

>>802940
Чому он не начнет?

Ответы>>803293

23 Июл, 03:51 #62 #803223

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

Ответы>>803318

23 Июл, 06:41 #63 #803293

>>803157
Потому что через девять дней. Это как с понедельника бросать курить - в понедельник найдется тысяча причин, чтобы отложить еще ненадолго.

23 Июл, 09:25 #64 #803318

>>803223
Easyelectronics.ru

23 Июл, 10:04 #65 #803326

>>802936
Пока ты там кочегаришься, я уже подучил асомблер, и написав функциюшку-другую на си, гляжу что получилось на асомблере.

24 Июл, 01:24 #66 #803841

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

https://ideone.com/0XPBVC

Ответы>>803842>>803843>>803844>>803852

24 Июл, 01:26 #67 #803842

>>803841
Хотя то, что я запостил, в самом деле может быть допустимым, потому что наверняка перед тем, как пушить число x на стек перед вызовом printf, ему выделяется большее число байт. Тогда в каком случае будет ошибка из-за разного количества байт в типе?

24 Июл, 01:29 #68 #803843

>>803841
Увидел, что там вообще используется сопроцессор.

24 Июл, 01:30 #69 #803844

>>803841
> Как именно работает приведение типов на низком уровне?
Хуй знает, что ты хочешь услышать. Конструируется значение нужного типа. Иногда несколькими инструкциями. Если что-то не влезло - обрезается. Если исходное значение наоборот слишком маленькое - добивается нулями или знаковым битом.

> Почему допустимо приведение маленького типа данных к типу данных, который занимает большее число байт в памяти?
А почему бы и нет? Конкретно на x86 обычно делается movzx/movsx для всяких char->int и fild для int->double.

> Можно ли как-то вызвать ошибку, приводя численные типы друг к другу?
Можно проебать значащие биты, проебать точность. Можно наебаться с signed/unsigned.

24 Июл, 01:49 #70 #803852

>>803841
Если бы ты и правда хотел зделать нечто экстраординарное, ты бы делал так https://ideone.com/rW7vdd

Ответы>>803861>>803865

24 Июл, 02:08 #71 #803861

>>803852
Не учи его плохому. Ты тут кроме инта читаешь еще 32 бита мусора из стека. Не говоря уже о кривом дабле в получившемся результате.

24 Июл, 02:18 #72 #803865

>>803852
Как там получился -0? У меня должен был просто выводиться мусор, но программа сегфолтится.

Ответы>>803944

24 Июл, 09:46 #73 #803944

>>803865
Зависит от компилятора и фазы луны.

24 Июл, 13:24 #74 #804047

Сосоны. Такой вопрос. Короче хочу использовать библиотеку OpenCV, а в ней ебаные классы. Каким хуем бля я должен использовать в сишке плюсовые классы, ведь это бля сишная библиотека, ебаный в рот. Или что мне бля делать?

Ответы>>804078>>804093

24 Июл, 14:22 #75 #804078

>>804047
А ты в документацию заглядывал? Кроме крестового, есть и сишный API.

24 Июл, 14:42 #76 #804093

>>804047
>Каким хуем бля я должен использовать в сишке плюсовые классы, ведь это бля сишная библиотека,
Сам-то понял что написал? Когда OpenCV стеной стать успела?

Ответы>>804094

24 Июл, 14:42 #77 #804094

>>804093
>стеной
Сишной*

24 Июл, 18:01 #78 #804265

>>802094
Ты не передавай МАССИВ в функцию. Юзайте УКАЗАТЕЛИ. Школокод тетектид

Ответы>>804275>>804276

24 Июл, 18:04 #79 #804275

>>804265
А у него и есть указатель. Ну что ж вы, каждый тред одно и то же...

Ответы>>804315

24 Июл, 18:05 #80 #804276

>>804265
Ещё непонятно кто хуже, ведь массивы в си передаются только по ссылке...

Ответы>>804279>>804284>>804312

24 Июл, 18:06 #81 #804279

>>804276
> массивы в си передаются только по ссылке
Пожалуйста, скажи, что ты так траллишь.

24 Июл, 18:13 #82 #804284

>>804276
можно не по ссылке в составе структуры

Ответы>>804285>>804286

24 Июл, 18:15 #83 #804285

>>804284
Какие к чёрту ссылки в C?

Ответы>>804286

24 Июл, 18:17 #84 #804286

>>804284
Тогда это будет передача структуры, содержащей массив. А массив в чистом виде не передать.

>>804285
Это общепринятый перевод терминлогии, когда дело касается передачи аргументов. By reference (по ссылке) и by value (по значению). А уж каким образом достигается эффект - дело конкретного языка.

Ответы>>804295

24 Июл, 18:29 #85 #804295

>>804286
В C всё передаётся by value

Ответы>>804392

24 Июл, 18:39 #86 #804312

>>804276
Ты долбаёб?

24 Июл, 18:40 #87 #804315

>>804275
где?

Ответы>>804317

24 Июл, 18:41 #88 #804317

>>804315
На вот, пока старый тред, читай и запоминай >>793991.

Ответы>>804327

24 Июл, 18:49 #89 #804327

>>804317
не комильфо так передавать. функция должна быть универсальной, а не для const элементов

Ответы>>804330

24 Июл, 18:49 #90 #804330

>>804327
Какой const, ты о чем, болезный? Ты картинку видел, текст прочитал?

Ответы>>804337

24 Июл, 18:52 #91 #804337

>>804330
Не агри. Я тебе про его код говорю fn(int array[30])

Ответы>>804339>>804358

24 Июл, 18:53 #92 #804339

>>804337
Функция fn принимает указатель на int. И что?

Ответы>>804342

24 Июл, 18:55 #93 #804342

>>804339
int array[30] тебя не смущает? меня да. говнокод. int *array надо

Ответы>>804358

24 Июл, 19:06 #94 #804358

>>804337
>>804342
Да, теперь понял, о чем ты. 30 там вообще ни на что не влияет (пока это не int array[static 30]). Можно было с таким же успехом int array[0xcafebabe] написать. Это просто последствия копипаста - хоть и некрасиво, но не смертельно.

А int array[] vs. int ∗array vs. int ∗const array в параметрах - это вкусовщина уровня tabs vs. spaces.

Ответы>>804361

24 Июл, 19:11 #95 #804361

>>804358
Вот вот. Писать грамотно тоже надо

24 Июл, 19:44 #96 #804392

>>804295
тогда, что значит передать "по ссылке", если это не указатель

Ответы>>804394

24 Июл, 19:48 #97 #804394

>>804392
Где значит?

Ответы>>804466

24 Июл, 20:57 #98 #804466

>>804394
В принципе, что значит - передать по ссылке? Я думал, это ты типа передаёшь указатель на объект (ну там &a).

Ответы>>804482>>805264

24 Июл, 21:13 #99 #804482

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

В сишечке же в этом смысле ничего не скрывается, все явно, никакой магии не делается. Если ты делаешь:
int variable = 123;
int ∗ptr = &variable;
function(ptr);
можно считать, что ты передаешь в функцию переменную variable по ссылке. Но также можно заметить, что функция-то принимает указатель, и этот указатель передается по значению, т.е., если ты изменишь указатель внутри функции, ptr не изменится.

Ответы>>804513

24 Июл, 21:44 #100 #804513

>>804482
>При этом работу с указателями язык скрывает.
Ну от языка многое зависит. В Perl также есть операции разыменовывания, передача указателей и всего такого. В питоне вообще нельзя ссылку передать на переменную так, чтобы потом она могла быть изменена внутри функции.

Ответы>>804527

24 Июл, 21:58 #101 #804527

>>804513
> в питоне
Ну как же нельзя-то? Просто тип int иммутабельный, его невозможно изменить без присваивания, а когда ты присваиваешь к аргументу значение, создается новый объект, а ссылка выкидывается, поэтому переданный по ссылке int в принципе никак изменить нельзя. А вот list мутабельный, и вот тебе классическая передача по ссылке:
def foo(a):
....a.append('yoba')

b = [ 'allo' ]
foo(b)
print(b)
Блять, тред про си, до чего мы дожили.

Ответы>>804544

24 Июл, 22:10 #102 #804544

>>804527
ну я плохо выразился. Я имел в виду, что нельзя сделать так, чтобы в случае

b = ['allo']

нельзя передать ссылку на на эту переменную таким образом, чтобы внутри функции ты бы мог поменять значение этой переменной. Ты можешь менять сам объект. Но b во внешнем окружении как указывала на созданный массив ['allo'], так и будет на него указывать. Ты не сможешь сделать так, чтобы она стала указывать на int или на что-то ещё. В perl можно так сделать, например. Мне он видится очень похожим на C в этом плане.

71 Кб, 642x427

25 Июл, 08:00 #103 #804794

>>802094
Вы чего тут развели? Я же сказал: "Иду по программе говно-курсов. Задача оттуда же. Указатели ещё НЕ проходил". Какая, блин, критика кода, если это моя 19 по счёту программа(считай хэлловорлд)?
Сейчас, с лёгкой руки здешних обитателей, курсы послал и неспешно ковыряю K&R. Больше тред тупыми вопросами не засоряю.
сорвавшийся ридонли гум

152 Кб, 1170x1170

25 Июл, 10:08 #104 #804832

Возможно ли скрыть файл от процедуры получения списка файлов в папке?
Эта процедура - readdir из Си(чистого).
Пробовал делать файл невидимым (добавлял точку перед названием), но не помогло.

Может имеются программо-ориентированные файловые системы, которые имеют событие, реагирующее на создание файла?

Ответы>>804844

25 Июл, 10:53 #105 #804844

>>804832
Вопрос решён созданием жёсткой ссылки в другом месте и удалением старого файла.

Ответы>>806614

25 Июл, 14:30 #106 #805034

Что-то я не понимаю нихуя.
Нужно чтобы число было положительным и меньше 10, допустим

>ввод числа
while (height < 0 && height > 10) {
>хуй, вводи заново
>ввод числа
}

Больше 10 не принимает, а отрицательные принимает! Что за? Почему?

Ответы>>805505

25 Июл, 14:34 #107 #805037

У тебя height не unsigned случайно? Алсо, ты пишешь:
Пока height меньше нуля и (в то же самое время) height больше десяти: вводи заново. Какое-то страное условие, не находишь? Тебе нужно || - или.

Ответы>>805039

25 Июл, 14:36 #108 #805039

>>805037
>Какое-то страное условие, не находишь?
Вот это я балда. Спасибо.

32 Кб, 700x466

25 Июл, 15:36 #109 #805112

https://ideone.com/tG6pHy
Какая прекрасная программа, не находите? Сам написал

Ответы>>805122>>805136

25 Июл, 15:46 #110 #805122

>>805112
лол что за пиздец.

Ответы>>805793

25 Июл, 15:57 #111 #805136

>>805112
А тебя в школе сокращать формулы не учили?
> y < MAX -(MAX - x)
Алсо, во вложенном цикле можно одной лишь итерацией по ch обойтись. Подумой.

Ответы>>805793

25 Июл, 17:06 #112 #805215

Как в сишке принять двумерный массив в функцию?

То есть есть функция "void func()", вне функции есть несколько двумерных массивовconst char massiv1[10][10], ей нужно обрабатывать один из них, конкретно который я укажу, но как указать сраный массив в аргументах функции чтобы работать с ним в самой функции? Вот тут, если кто не понял: void func(massiv1);

Алсо, почему const char massiv[][] не работает? Я хочу чтобы компилятор сам определял размер массива.

Ответы>>805261

25 Июл, 17:32 #113 #805237

Ананасы обоснуйте, плиз.
Есть функция:

void print_smth(int x)
{
printf("Hello world with %d", x);
}

Есть указатель на неё:

void (funptr)(int) = &print_smth;

И как правильней вызвать её?

(funptr)(10);

или

funptr(10);

работают оба варианта.

Ответы>>805241>>805261

25 Июл, 17:33 #114 #805241

>>805237
блят void (*funptr)(int);

25 Июл, 17:34 #115 #805245

Как в С правильно писать длинные формулы? Что можно сделать с этим пиздецом?
https://gist.github.com/anonymous/ceb5efda41a52d69e7294a4b49e28871

Ответы>>805261

25 Июл, 17:43 #116 #805261

>>805215
Расчет адреса элемента array[j][k] для массива N×M сводится к array + j ∗ M + k. Если ты сделаешь аргумент вида int array[][], компилятор не сможет обращаться к массиву, потому что он не знает вот этой самой M, и ему неоткуда взять эту информацию. Поэтому в функцию ты можешь либо передать массив с одной фиксированной размерностью void func(int array[][123], ...) (для трехмерных массивов с двумя и т.д., не указывать можно только первую), либо сделать void func(int ∗array, size_t n, size_t m) и считать индекс "вручную", т.е., обращаться по array[j * m + k] (n в формуле не используется, но полезно, чтобы ограничивать j в циклах по массиву). Ну и немного упростить себе вызов функции, определив:
#define COUNTOF(x) (sizeof(x) / sizeof((x)[0]))
и сделав
int array[2][3];
func(array, COUNTOF(array), COUNTOF(array[0]));

>>805237
Как угодно. В (∗funcptr)() язык преобразует выражение в первых скобках обратно к указателю перед вызовом. Если хочешь акцентировать внимание читающего на том, что это указатель - пиши с дереференсом. Если хочешь просто вызвать функцию - пиши без. Алсо, в funptr = &print_smth оператор & тоже необязательный, функция сама к указателю преобразуется.

>>805245
Не объявлять несколько переменных в одной строке (особенно, если есть еще и присваивания), не стесняться использовать временные переменные.

Ответы>>805271

25 Июл, 17:46 #117 #805264

>>804466
какие нахуй объекты в няшном си?

Ответы>>805271

25 Июл, 17:52 #118 #805271

>>805261
Забыл добавить, что когда последняя размерность массива указана, у компилятора есть возможность заменить умножение чем-нибудь более быстрым, а вот если ты считаешь сам, компилятору придется умножать "честно".

>>805264
В стандарте языка объектами называются сущности в памяти. Например, значения переменных. Или то, что ты создал через malloc().

25 Июл, 20:38 #119 #805450

Помогите с make и clang, При компилировании через make ставится только один ключ -o. Как впилить в него -Wall, -l и т.д. чтобы не прописывать это всё время вручную через clang?

Ответы>>805459>>805508>>805514

25 Июл, 20:46 #120 #805459

>>805450
Поясни поподробнее. Надеюсь, ты не делаешь make -o?

Ответы>>805467

25 Июл, 20:52 #121 #805467

>>805459
Ну смотри: допустим у меня есть программа со сторонней библиотекой, и при компилировании я хочу увидеть все возможные предупреждения и ошибки. Мне надо писать "clang -ggdb -Wall -Werror -llibrary.h -hello.c -o hello"
Если написать "make hello" то оно автоматом пропишет "clang hello.c -o hello". Мне нужно все те параметры впихнуть в make, чтобы не прописывать каждый раз заново через clang

Ответы>>805478

25 Июл, 21:06 #122 #805478

>>805467
> автоматом
Это магия, которую обеспечивают так называемые "неявные правила", к которым лучше не привыкать. Лучше напиши Makefile нормальный. Но если все же очень хочется, то можно задать соответствующие переменные окружения: CC=clang CPPFLAGS=-Weverything -Werror make hello (ну или не инлайном задавать, а export CPPFLAGS=-Weverything и т. д.).

Ответы>>805503

25 Июл, 21:27 #123 #805503

>>805478
Моих навыков в Линукс еще недостаточно для того, чтобы провернуть такую операцию. Ну да ладно, написать полную строчку clang не составляет большого труда. И на этом спасибо.

sage 25 Июл, 21:28 #124 #805505

>>805034
>while (height < 0 && height > 10) {
while (height < 0 || height > 10) {

sage 25 Июл, 21:30 #125 #805508

>>805450
Создай Makefile со строкой
CFLAGS=-Wall

sage 25 Июл, 21:35 #126 #805514

>>805450
Библиотеки добавляются в LDLIBS:
LDLIBS=-lm

9 Кб, 576x68

25 Июл, 21:45 #127 #805524

Всем спасибо! Заработало

Ответы>>805527

sage 25 Июл, 21:48 #128 #805527

>>805524
>Всем
Кому всем, блядь?

1 Кб, 139x35

25 Июл, 21:50 #129 #805530

Объясните, в чём отличие?

Ответы>>805531>>805550

sage 25 Июл, 21:51 #130 #805531

>>805530
В пробеле.

Ответы>>805535

23 Кб, 607x343

25 Июл, 21:55 #131 #805535

>>805531
Сирьюсли? Эти две записи функцилнально идентичны, то есть создают указатель на чар?

Ответы>>805539>>805540

25 Июл, 21:56 #132 #805539

>>805535
Да. Но первая запись предпочтительнее, исходя из правила "объявление отражает использование".

Ответы>>805541>>818668

sage 25 Июл, 21:56 #133 #805540

>>805535
Да.

Ответы>>805541

25 Июл, 21:58 #134 #805541

>>805539
>>805540
Спасибо, разрешили мой когнитивный диссонанс!

25 Июл, 22:19 #135 #805550

>>805530
В данном случае ни в чем.

26 Июл, 11:33 #136 #805793

>>805122
Прастите
>>805136
Извините

26 Июл, 17:29 #137 #806064

Стоит ли использовать CooCox IDE? Название какое-то петушиное.

Ответы>>806148>>806298

26 Июл, 18:43 #138 #806148

>>806064
Что нибудь в зад заснунь, и все норм будет.

26 Июл, 21:22 #139 #806298

>>806064
Есть много годных IDE, нет я буду жрать ноунейм говно

Ответы>>807114

27 Июл, 07:44 #140 #806614

>>804844
а как же подмена функций библиотеки libc

27 Июл, 08:03 #141 #806619

чёт прям самому захлотелось подмен нахуярить. проблема в том, а как заменить dlsym? или как вообще, гарантировать что программа сделает call именно на мою функцию... пойду почитаю.

27 Июл, 11:33 #142 #806684

вообще, для начала, хотелось бы начать выполнять свой код раньше main'а другой программы. но что насчёт dlsym, то есть решение использовать "внутреннею" функцию glib, _dl_sym, которую вызывает dlsym.

в общем-то там такая цепь dlsym -> __dlsym -> static dlsym_doit -> _dl_sym -> do_sym (где и начинаются двиги)

не понятно пока, но видимо всю цепочку нужно подменять и блочить в moji_dlsym.

а если статичная линковка? чёт приуныл.

27 Июл, 11:38 #143 #806688

наверно всё это хрень, нужно просто накатить что-нибудь, чтоб вместо вызова ЛЮБОЙ функции вызывала мою. должно же быть такое.

Ответы>>806799

27 Июл, 15:14 #144 #806799

>>806688
С динамической линковкой все просто: вот, например, https://blog.netspi.com/function-hooking-part-i-hooking-shared-library-function-calls-in-linux/

Ответы>>806860

27 Июл, 17:52 #145 #806860

>>806799
блять, сначала прочёл что со статической - прочёл - васянство уровня любой другой статьи на русском. да прекращай.

27 Июл, 23:53 #146 #807114

>>806298
Это какие годные? Кейл?

Ответы>>807350

28 Июл, 13:09 #147 #807350

>>807114
не, vim/emacs

Ответы>>807403

28 Июл, 15:05 #148 #807403

>>807350
NANO!

28 Июл, 15:06 #149 #807405

Как в формуле прописывать количество определённых символов при выводе? Это же символы, их хуй умножишь...

Ответы>>807407

28 Июл, 15:10 #150 #807407

>>807405
И их количество должно зависеть от условий, которые задаст пользователь. Я просто не понимаю, что писать в printf..

Ответы>>807410

28 Июл, 15:27 #151 #807410

>>807407
Покажи на пальцах, что у тебя есть, и какой должен быть выхлоп.

Ответы>>807412

28 Июл, 15:31 #152 #807412

>>807410
Ну вот, это я понимаю, но не понимаю, как именно ЗАДАТЬ n-ое количество этих символов, который должны выводиться в строчке. Не буду же я вручную прописывать все варианты от одного до бесконечности.

Ответы>>807414

28 Июл, 15:32 #153 #807414

>>807412
Тип было бы хорошо, если можно было переменную char умножить на 8, и ты в итоге получаешь $$$$$$$$

Ответы>>807418

28 Июл, 15:39 #154 #807418

>>807414
Это тебе в питон с таким, там как раз умножение для строк определено. В сишечке ты либо выделяешь буфер, заполняешь char-ами циклом (или memset еще подойдет в твоем случае) и делаешь puts/printf("%s", ...). Или ты в том же самом цикле выводишь по одному char putchar/printf("%c", ...) сразу, безо всяких буферов. Ну или можешь так сделать: http://ideone.com/IC0Vst Сама по себе printf умеет только предварять/дополнять выхлоп нулями или пробелами.

Ответы>>807421>>807467

28 Июл, 15:40 #155 #807420

digits - первые две (в случае VISA - одна) цифра. Если первая цифра 4 - значит карта от визы, если 34 или 37 - american express ну и так далее.
Как правильно это реализовать? С помощью if получается вот такое

[CODE]
if (digits / 10 == 4)
printf("VISA\n");
else if (digits == 34 || digits == 37)
printf("AMEX\n");
else if (digits == 51 || digits == 52 || digits == 53 || digits == 54 || digits == 55)
printf("MASTERCARD\n");
else
printf("INVALID\n");
[/CODE]

Может тут можно switch использовать?

[CODE]
switch (digits || digits / 10) {
case 4:
printf("VISA\n");
break;
case 34 || 37:
printf("AMEX\n");
break;
case 51 || 52 || 53 || 53 || 55:
printf("MASTERCARD\n");
break;
default:
printf("INVALID\n");
[/CODE]

GCC ругается
> switch (digits || digits / 10)
> switch condition has boolean value
Digits / 10 для визы, ведь там однозначное число.
> 34 || 37
> error: duplicate case value
А тут что такое?

28 Июл, 15:40 #155 #807420

digits - первые две (в случае VISA - одна) цифра. Если первая цифра 4 - значит карта от визы, если 34 или 37 - american express ну и так далее.
Как правильно это реализовать? С помощью if получается вот такое

[CODE]
if (digits / 10 == 4)
printf("VISA\n");
else if (digits == 34 || digits == 37)
printf("AMEX\n");
else if (digits == 51 || digits == 52 || digits == 53 || digits == 54 || digits == 55)
printf("MASTERCARD\n");
else
printf("INVALID\n");
[/CODE]

Может тут можно switch использовать?

[CODE]
switch (digits || digits / 10) {
case 4:
printf("VISA\n");
break;
case 34 || 37:
printf("AMEX\n");
break;
case 51 || 52 || 53 || 53 || 55:
printf("MASTERCARD\n");
break;
default:
printf("INVALID\n");
[/CODE]

GCC ругается
> switch (digits || digits / 10)
> switch condition has boolean value
Digits / 10 для визы, ведь там однозначное число.
> 34 || 37
> error: duplicate case value
А тут что такое?

Показать весь текст
Ответы>>807424>>807427

28 Июл, 15:44 #156 #807421

>>807418
Вот я понимаю, что в СИ такую хуйню с чарами не сделать.

int num = 10

То есть я могу прописать вместо десятки нужную мне формулу и ?????? profit?

Ответы>>807424

28 Июл, 15:50 #157 #807424

>>807420
> case 34 || 37
|| - это логический оператор, он преобразует свои операнды в 0 или 1 (false/true). Получается (1) || (1) = 1, т.е., в case 1:. И следующий case у тебя тоже превращается в case 1. Вот оно и ругается. Хочешь несколько значений - делай несколько case без break между ними:

case 34: case 37: // Можешь на отдельных строках, можешь так - похуй.
...
break;

> digits || digits / 10
То же самое. digits превращается в 1 (скорее всего), вторая часть выражения даже не пытается вычисляться.

Я бы сделал:
if ((digits / 10) == 4)
{
виза
}
else
{
switch (digits)
{
...
default:
инвалид
}
}
Все красиво и понятно.

>>807421
Да, ты можешь прописать формулу вместо десятки. Но это кривой, некрасивый код. printf просто обрезает строчку до num символов. Если num случайно окажется больше длины строчки, недостающие символы ниоткуда не возьмутся, и выведется меньше, чем num. Сделай через for, не выделывайся. А чтобы было красиво, оберни в функцию.

28 Июл, 15:50 #157 #807424

>>807420
> case 34 || 37
|| - это логический оператор, он преобразует свои операнды в 0 или 1 (false/true). Получается (1) || (1) = 1, т.е., в case 1:. И следующий case у тебя тоже превращается в case 1. Вот оно и ругается. Хочешь несколько значений - делай несколько case без break между ними:

case 34: case 37: // Можешь на отдельных строках, можешь так - похуй.
...
break;

> digits || digits / 10
То же самое. digits превращается в 1 (скорее всего), вторая часть выражения даже не пытается вычисляться.

Я бы сделал:
if ((digits / 10) == 4)
{
виза
}
else
{
switch (digits)
{
...
default:
инвалид
}
}
Все красиво и понятно.

>>807421
Да, ты можешь прописать формулу вместо десятки. Но это кривой, некрасивый код. printf просто обрезает строчку до num символов. Если num случайно окажется больше длины строчки, недостающие символы ниоткуда не возьмутся, и выведется меньше, чем num. Сделай через for, не выделывайся. А чтобы было красиво, оберни в функцию.

Показать весь текст
Ответы>>807426

28 Июл, 15:52 #158 #807426

>>807424
>Сделай через for, не выделывайся

Ну ващет через цикл и делаю, просто спросил.

28 Июл, 15:53 #159 #807427

>>807420
На ideone трудно было залить или хотяб разметить для приличия...

28 Июл, 17:14 #160 #807467

>>807418
>memset
лучше через memcpy, как хакир.

Ответы>>807478

28 Июл, 17:24 #161 #807478

>>807467
А что не так-то? memset заполняет указанным unsigned char указанный буфер. Мало того, оно даже объявлено в string.h. Что тебя так напрягает?

11 Кб, 367x146

28 Июл, 19:15 #162 #807553

Товарищи, пробегитесь пожалуйста по этому коду и скажите чому оно не хочет принимать от меня число.
https://gist.github.com/anonymous/b92d10a31cec0c601384964060b9b06a

Функция на 36 строке.

Ответы>>807593

28 Июл, 19:56 #163 #807593

>>807553
Все вводится, а вот в строке 20 у тебя ошибка, приводящая к бесконечному циклу.

Ответы>>807600

28 Июл, 20:01 #164 #807600

>>807593
Ее я уже заметил и исправил, а число таки не вводится. Пытался printf("%lld\n", num) вставить после вызова функции - ничего не происходит, значит проблема где-то в функции get_num.

Ответы>>807694>>807704

28 Июл, 20:22 #165 #807624

Программач, я ведь знаю тут собрана самая мозговитая прослойка двача. Мне нужна помощь в решении следующего алгоритма.
Задачка не из легких. Уже два дня потею, вот вот вроде выведу норм алгоритм,но нифига. Я уже и рекурсией, и мат. формулы искал.
Ближе к делу.

Необходимо подсчитать число разбиений (N) на слагаемые, для вводимого нами числа (Sum), при том, что у нас есть список доступных слагаемых (Arr).

Пример: мы вводим число 7, и задаем слагаемые - [1,2,5]. Из этих условий следует, что Sum = 7; Arr = [1,2,5], а количество разбиений N нам нужно вычислить:
1) {5,2};
2) {5,1,1};
3) {2,2,2,1};
4) {2,2,1,1,1};
5) {2,1,1,1,1,1};
6) {1,1,1,1,1,1,1};
В нашем случае N = 6;
Важный момент - слагаемые могут повторяться, но их последовательность не важна, то есть разбиения типа {5,2} и {2,5} тождественны между собой и должны учитываться как одно решение

Ребят, помогите плз. Упарывание всяких там формул Эйлера и т.д. не помогло в силу отсутствия решения для конкретно подобного случая

Ответы>>807945

28 Июл, 21:46 #166 #807694

>>807600
> ничего не происходит
Вставь fflush(stdout) после printf и/или exit(1). По-прежнему ничего не происходит?

28 Июл, 21:52 #167 #807704

>>807600
А, не заметил, что у тебя \n в scanf, выкинь его.

29 Июл, 01:09 #168 #807945

>>807624
Я не знаю, как ты гуглил, задача-то типовая. http://py-algorithm.blogspot.ru/2011/04/blog-post_20.html?m=1
На си сам перепишешь

29 Июл, 06:59 #169 #807992

>>801836 (OP)
Читаю Прату. При малейшей запинке на задачке начинаю беситься, гневаться на кота. Как же избежать такого неразумия

Ответы>>808038

sage 29 Июл, 09:50 #170 #808038

>>807992
Медитировать.

30 Июл, 18:56 #171 #809056

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

Ответы>>809064>>809076

30 Июл, 19:05 #172 #809064

>>809056
> Как при этом работает виртуальная память, за счет софта или железа?
За счёт железа. Гугли про MMU.

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

Может я и наврал чего.

Ответы>>809094>>809109

30 Июл, 22:30 #173 #809076

>>809056
гугли TLB

Ответы>>809109

30 Июл, 23:10 #174 #809094

>>809064
>Вроде бы L1 хранит по виртуальным адресам, ради скорости. А вот уже для кэшей следующих уровней происходит трансляция в физические адреса.
Да, это всё было про некоторые (многие?) модели x86-процессоров. Для других логика может в общем и такой быть, может и отличаться.

30 Июл, 23:32 #175 #809109

>>809064
>>809076
>When a virtual address needs to be translated into a physical address, the TLB is searched first. If a match is found (a TLB hit), the physical address is returned and memory access can continue. However, if there is no match (called a TLB miss), the handler will typically look up the address mapping in the page table to see whether a mapping exists (a page walk). If one exists, it is written back to the TLB (this must be done, as the hardware accesses memory through the TLB in a virtual memory system), and the faulting instruction is restarted (this may happen in parallel as well). This subsequent translation will find a TLB hit, and the memory access will continue.

А откуда процессор имеет доступ к page table? Это же просто структура данных в DRAM, так?

30 Июл, 23:38 #176 #809113

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

Ответы>>809116

30 Июл, 23:42 #177 #809116

>>809113
>на x86) страница с таблицей страниц сама находится в таблице страниц.
Это если ядро изволило её туда поместить. А так — никакого такого обязательного требования на x86 нет.

Ответы>>809118

30 Июл, 23:44 #178 #809118

>>809116
Да? Извини тогда. Все позабывал уже.

30 Июл, 23:46 #179 #809120

Спасибо, и еще вопрос, откуда вы это знаете? Что читать?

Ответы>>809123>>809125>>809146

30 Июл, 23:48 #180 #809123

>>809120
википедии для начала хватит

60 Кб, 500x375

30 Июл, 23:49 #181 #809125

>>809120
В идеале - Intel 64 and IA-32 Software Developers Manual. Ну или какого-нибудь Танненбаума, если тебе в целом интересно, а не только x86.

Ответы>>809301

31 Июл, 00:42 #182 #809146

>>809120
http://wiki.osdev.org/Paging
http://wiki.osdev.org/Memory_Management_Unit

31 Июл, 12:11 #183 #809289

Как определить массив функций?
Нужна функция, создающая другие функции, но, так как вложенные определения функций запрещены, остается только memcpy, верно? А что дальше?

Ответы>>809296>>809339

31 Июл, 12:20 #184 #809296

>>809289
>так как вложенные определения функций запрещен
Нет, не запрещены. Создавай себе массив с сигнатурой функции как типом и байтоёбствуй сколько влезет, какие проблемы?
>остается только memcpy, верно
Нет, неверно, за такое тебя система нахуй пошлёт, нужно сначала менять права доступа к памяти, а для этого запускать придётся из-под рута. Хотя если запускать кроме как у себя нигде не планируешь – наслаждайся еблей.

Ответы>>809315>>809340

31 Июл, 12:24 #185 #809301

>>809125
> Intel 64 and IA-32 Software Developers Manual.
Раньше можно было бесплатно заказать посылкой из США, но потом лавочку прикрыли.

Ответы>>809319

31 Июл, 12:41 #186 #809315

>>809296
>не запрещены
Так даже не интересно. В K&R кажется писали обратное. Спасибо.

Ответы>>809318

31 Июл, 12:45 #187 #809318

>>809315
да, запрещены, видимо, тот анон тебя не так понял

Ответы>>809322>>809329

31 Июл, 12:45 #188 #809319

>>809301
в электронном виде читать всяко удобнее

31 Июл, 12:48 #189 #809322

>>809318
https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
Nested functions are supported as an extension in GNU C

Ответы>>809337>>813750

31 Июл, 13:00 #190 #809329

>>809318
http://stackoverflow.com/questions/252748/how-can-i-use-an-array-of-function-pointers
Что там запрещено? Первая ссылка в гугле блять.

Ответы>>809337

31 Июл, 13:11 #191 #809337

>>809329
при чём тут массив функций? разговор шёл о вложенный функциях

>>809322
в стандарте нет энивей

Ответы>>809339

31 Июл, 13:12 #192 #809339

>>809337
Прочитай первоначальный вопрос
>>809289
>Как определить массив функций?

Ответы>>809340

31 Июл, 13:13 #193 #809340

>>809339
прочитай, что написано здесь >>809296
> >так как вложенные определения функций запрещен
> Нет, не запрещены.

31 Июл, 16:03 #194 #809471

Аноны,зацените мою первую программу,только начал вкатываться.
Можно её оптимизировать ?

https://ideone.com/DUgM0A

Ответы>>809519

31 Июл, 16:56 #195 #809519

>>809471
http://ideone.com/fYwjdD
не благодари

Ответы>>809521

31 Июл, 16:58 #196 #809521

>>809519
херово оптимизировал, вот, как надо
https://ideone.com/dfvbS9

Ответы>>809522

31 Июл, 17:00 #197 #809522

>>809521
Ты тоже схалтурил https://ideone.com/Ruq9OR

31 Июл, 17:38 #198 #809568

Решил изучать с нуля Си, можно будет потом перекатиться в Go ?

Ответы>>809572

31 Июл, 17:39 #199 #809572

>>809568
Я лично тебе запрещаю.

Ответы>>809581

31 Июл, 17:47 #200 #809581

>>809572
Ну пожалусто
У меня нет никакого желания клепать ебанные сайтики, в плюсы скатываться тоже, что остаётся ?

Ответы>>809586

31 Июл, 17:48 #201 #809586

>>809581
Так go как раз для сайтов и задумывался.

Ответы>>809598

31 Июл, 17:58 #202 #809598

>>809586
Упустил frontend

Ответы>>809612

31 Июл, 18:19 #203 #809612

>>809598
Не сильно много разницы, тот же сайт, просто морду вынесли отдельно.

31 Июл, 19:24 #204 #809666

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

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

Ответы>>809671

31 Июл, 19:33 #205 #809669

> как обрабатывать эксепшены
У нас нет эксепшенов. В некоторых случаях можно воспользоваться setjmp/longjmp для имитации исключений.

> глобальную переменную не стоит использовать
Не стоит. Но иногда имеет смысл таскать в модуль некий контекст, в котором будет флажок ошибки. Ну как в stdio ferror/feof.

> каждую функцию что ли проверять на возвращаемый эррор?
Да, именно это и нужно делать.

Ответы>>810304

31 Июл, 19:37 #206 #809671

>>809666
> каждую функцию что ли проверять на возвращаемый эррор?
Да ето так.

Ответы>>809674

31 Июл, 19:44 #207 #809674

>>809671
ну это жи будет месиво

Ответы>>809678

31 Июл, 19:50 #208 #809678

>>809674
Нужно просто привыкнуть. Почитай чужой код (например, исходники ядер винды/линукса/osx), не вникая в смысл, просто, чтобы увидеть и подхватить стиль.

Ответы>>809757

31 Июл, 21:49 #209 #809757

>>809678
>например, исходники ядер винды/osx
Ты чо

Ответы>>809761

31 Июл, 21:54 #210 #809761

>>809757
Исходники венды утекали, исходники ядра Mac OS открыты.

01 Авг, 01:14 #211 #809939

На Си технически невозможно сделать green threads в виде отдельной библиотеки, так?

Ответы>>809945>>809952>>810296

01 Авг, 01:18 #212 #809945

>>809939
https://www.gnu.org/software/pth/

01 Авг, 01:29 #213 #809952

>>809939
С чего же ты сделал такой гениальный вывод?

Ответы>>809955

01 Авг, 01:37 #214 #809955

>>809952
Мне сперва это показалось невозможным т.к. нужно копировать стек, IP и регистры, но теперь вспомнил про инлайн ассемблер. Хотя не разобрался пока с Pth, может и не за счет него.

01 Авг, 16:01 #215 #810296

>>809939
А setjmp/longjmp тогда что такое, наркоман?

01 Авг, 16:21 #216 #810304

>>809669
В арме экзепшены есть. Но они по сути как прерывания, и характер имеют - чисто железный. Неизвестная команда, недопустимый адрес, всякое такое.
Ебался с этим на RM9200.

Ответы>>810312

01 Авг, 16:43 #217 #810312

>>810304
Это не те исключения, про которые шла речь. Мы говорили об исключениях, которые представляют собой некий объект, который можно, прервав нормальное выполнение кода, программно передать в специальный блок на текущем или предыдущих уровнях вложенности. Т.е., goto на стероидах.

А те, исключения, о которых ты говоришь - аппаратные, есть не только в ARM, но и в других архитектурах тоже, конечно же. Но так как они жестко завязаны на платформу, в языке их нет - нет стандартных средств для отлова, обработки, восстановления и т. п. Предполагается, что исключение обработает ОС, и при необходимости проинформирует программу соответствующим signal или каким-то другим способом. Например, в винде это делается с помощью SEH/VEH и построенных на них __try/__catch. В каком-нибудь МК можно их и напрямую отлавливать, устанавливая обработчик прерывания, но язык Си к этому никакого отношения не имеет.

01 Авг, 17:15 #218 #810342

>>801836 (OP)
- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/

Скажите, а нужно ли сначала Хардвэй то Питон, как советует автор или сразу можно С?
Судя по ФПКу, то сразу - C.
Анон, подскажи.

Ответы>>810376>>810816

01 Авг, 17:55 #219 #810376

>>810342
На питоне многие вещи уже реализованы, многие проблемы решаются автоматически. Поэтому он проще. C - низкоуровневый язык, это значит, если освоишь его, будешь лучше разбираться как всё работает на уровне железа. Решать тебе.

Ответы>>811237

02 Авг, 03:24 #220 #810816

>>810342
>- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/
кек

Ответы>>810904

02 Авг, 04:09 #221 #810822

Котаны, нужно быстро вкатится в C/C++ под виндовз (Visual C++ Build Tools) без ебучей, пидерской Вижуал Студии, реквестирую годную лайтвейт IDE и дебаггер.

Ответы>>810868>>810966

02 Авг, 08:58 #222 #810868

>>810822
Cygwin, gcc, gdb, vim/emacs.
QtCreator, если ты девочка.

Ответы>>810966>>811177

02 Авг, 10:17 #223 #810904

>>810816
что не так?!

02 Авг, 11:34 #224 #810966

>>810822
Если без крестов, то Pelles C 10 МБ инсталлер, около 100 МБ установленная, считая индексы для хидеров - достаточно лайтвейт?. Source-level дебаггер в комплекте, а так x64dbg есть еще, если что.

>>810868
> Cygwin
Фуууу. Оно нужно для одной-единственной цели: собирать под Windows непереносимое говно из мира *nix. Если понадобился cygwin, то либо с софтом, либо с тобой что-то не так.

Ответы>>811177

02 Авг, 16:04 #225 #811177

>>810868
vim заебись, но там нужно плагинами обмазываца, тогда уж нотепад++ с vim плагином.
>>810966
А Пелс С даст Кодеблоку пасасать? А к Пелс Интеловский или ГЦЦ конпилятор можно прикрутить?

Ответы>>811200

02 Авг, 16:33 #226 #811200

>>811177
> А Пелс С даст Кодеблоку пасасать?
Не даст. Извини, неправильно тебя понял. Редактор там примитивный, хотя основные вещи умеет (подсказки, автодополнение и т. п.), компилятор свой, заменить нельзя. Если тебя интересует какой-то конкретный компилятор, а не просто вкатиться, тогда, действительно, лучше кодеблокс какой-нибудь.

Ответы>>811214

02 Авг, 16:59 #227 #811214

>>811200
>не просто вкатиться
Всмысле набижать на ОО проект, внести правки, сконпилить и отладить))) Конпилятор как Микрософт так и ГЦЦ.

02 Авг, 17:29 #228 #811237

>>810376
си высокоуровневый вообщето

Ответы>>811615

03 Авг, 00:00 #229 #811615

>>811237
Смотря с чем сравнивать. Вот ты сам с какого уровня?

03 Авг, 13:29 #230 #811928

Аноны, а вот эти специфичные для си switch , тернарный оператор, гоу ту, они часто используются? Есть ли какие-то плюсы или минусы их пользования, рекомендации?

Ответы>>811934

03 Авг, 13:39 #231 #811934

>>811928
Эти конструкции упрощают код. Ты можешь заменить switch и ?: на if, но читать это станет менее приятно.

> специфичные для си
> switch
В каждом первом языке, унаследовавшем синтаксис Си. В остальных языках тоже чаще всего есть. Нету в питоне, и это одна из причин, почему его синтаксис говно.

> тернарный оператор
Почти в каждом языке, унаследовавшем синтаксис Си. В других языках тоже часто есть, но записывается по-другому. Например, в питоне foo if expr else bar.

> гоу ту
В каждом втором языке, унаследовавшем синтаксис Си. Два обоснованных варианта использования: выход из двух и более вложенных циклов (break выходит только из одного) или переход на обработку ошибок. Зависит от стиля и практик, принятых в проекте. Некоторые принципиально не пользуются вообще.

> рекомендации
Тернарный оператор и гото по вкусу, switch вместо if (expr == 1) {} else if (expr == 2) {} else if (expr == 100500) {} else {} ну ты понел.

Ответы>>811937>>811989

03 Авг, 13:43 #232 #811937

>>811934
Понил

03 Авг, 14:19 #233 #811989

>>811934
> switch
> Нету в питоне, и это одна из причин, почему его синтаксис говно.
Спасибо Гвидону, что его там нет. Свич - это самая отвратительная отрыжка ранних дней структурного программирования, рудимент эпохи беспорядочных половых goto-связей. Один раз забыл написать break; - сиди лови непонятную бажину.

Pattern matching здорового человека:
let neg x =
match x with
| false -> true
| true -> false
;;

Pattern matching курильщика:
strcpy(to, from, count)
register char to, from;
register count;
{
register n = (count + 7) / 8;
if (!count) return;
switch (count % 8) {
case 0: do { to = from++;
case 7: to = from++;
case 6: to = from++;
case 5: to = from++;
case 4: to = from++;
case 3: to = from++;
case 2: to = from++;
case 1: to = from++;
} while (--n > 0);
}
}

03 Авг, 14:19 #233 #811989

>>811934
> switch
> Нету в питоне, и это одна из причин, почему его синтаксис говно.
Спасибо Гвидону, что его там нет. Свич - это самая отвратительная отрыжка ранних дней структурного программирования, рудимент эпохи беспорядочных половых goto-связей. Один раз забыл написать break; - сиди лови непонятную бажину.

Pattern matching здорового человека:
let neg x =
match x with
| false -> true
| true -> false
;;

Pattern matching курильщика:
strcpy(to, from, count)
register char to, from;
register count;
{
register n = (count + 7) / 8;
if (!count) return;
switch (count % 8) {
case 0: do { to = from++;
case 7: to = from++;
case 6: to = from++;
case 5: to = from++;
case 4: to = from++;
case 3: to = from++;
case 2: to = from++;
case 1: to = from++;
} while (--n > 0);
}
}

Показать весь текст
Ответы>>811994>>811999>>812008>>812012>>813769

03 Авг, 14:23 #234 #811994

>>811989
Звездочки макака проебала, но и так всем понятно, что второй пример - Duff device.

Ответы>>812010

03 Авг, 14:27 #235 #811999

>>811989
>здорового человека
>ml-подобная хуита
>здорового человека

Ответы>>812002

03 Авг, 14:28 #236 #812002

>>811999
Нашел до чего доебаться.

03 Авг, 14:32 #237 #812008

>>811989
>>Один раз забыл написать break; - сиди лови непонятную бажину.
Ну это пиздец. Изменил, поломал, проверь то, что изменил.

Ответы>>812018

03 Авг, 14:34 #238 #812010

>>811994
Ну да, синтаксис у switch в Си не лучший и даже для Си слишком низкоуровневый. Да, вариант без break был бы красивее, но тут уже, к сожалению, ничего не поделаешь.

> Спасибо Гвидону, что его там нет.
Могли бы нормальный сделать, не повторяя проблем Си. Но лучше уж сишный, чем никакого.

> Один раз забыл написать break; - сиди лови непонятную бажину.
Уже и не помню, когда в последний раз пропускал break. Если есть IDE, оно само втыкает, пока case пишешь. А если и нет - это просто стандартная ньюфажная ошибка уровня ==.

Ответы>>812028>>813758

03 Авг, 14:35 #239 #812012

>>811989
>Один раз забыл написать break; - сиди лови непонятную бажину.
Особенно учитывая что проваливание в свитче – по стандарту фича.

Ответы>>812019

03 Авг, 14:36 #240 #812018

>>812008
Чаще бывает так: написал двести строк нового кода, а оно не работает.

Ответы>>812021

03 Авг, 14:38 #241 #812019

>>812012
На которую обычно вылезает варнинг.

Ответы>>812021>>812024

03 Авг, 14:39 #242 #812021

>>812019
Из-за криворуких уебанов которые на это жалуются.
>>812018
Ну ты почитай про методики вроде TDD, защищёное программирование и прочую хуиту если у тебя возникают проблемы подобного плана.

Ответы>>812046

03 Авг, 14:41 #243 #812024

>>812019
Компилятор назови, чтобы я его избегал. Гцц и шланг с -Wall/-Wextra и -Weverything соответственно на такое не жалуются, насколько я помню.

Ответы>>812051

03 Авг, 14:44 #244 #812028

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

def neg(x):
choices = {True: False, False: True}
return choices[x]

Как вместо простого значения в дикт засунуть лямбду или функцию, сам догадаешься.

Ответы>>812034

03 Авг, 14:49 #245 #812034

>>812028
Да-да. Вот именно после словарей с лямбдами или огорода elif я и считаю отсутствие switch огромным недостатком питона. Понятно, что для маппинга значений switch не нужен. Он и в Си для маппинга не нужен. Он нужен, чтобы выполнять код.

Ответы>>812154

03 Авг, 14:56 #246 #812046

>>812021
> Ну ты почитай про методики вроде TDD, защищёное программирование и прочую хуиту если у тебя возникают проблемы подобного плана.
Да-да, еще больше костылей, для того, чтобы как-то мириться с костылями сорокалетней давности. Нахуя нужны удобные языки? Давай уж сразу на ассемблере все писать - а что, тдд и прочие бест практисес не дадут обосраться!

Ответы>>812055

03 Авг, 14:58 #247 #812051

>>812024
Кросс-компилю под арм на гцц. Ругаетсо.

03 Авг, 15:06 #248 #812055

>>812046
Если ты криворукий уебан который спотыкается даже на этом – тебе иначе и никак. Для таких как ты придумано.

Ответы>>812073

03 Авг, 15:37 #249 #812073

>>812055
Ясно.

03 Авг, 17:23 #250 #812154

>>812034
Я щетаю, что если у тебя кейсов меньше, чем 4-5, то в принципе похуй, чем их делать, свичами или ифами, и то, и другое примерно одинаково уродливо, а если больше, то это уже повод вынести логику каждого кейса в отдельный объект или функцию. Независимо, на каком языке ты это пишешь.

Ответы>>812158

03 Авг, 17:26 #251 #812157

Я стану байтослесарем и найду работу в свои 24-25.
Скриньте.

Ответы>>812162

03 Авг, 17:27 #252 #812158

>>812154
И каждый язык с таким подходом гарантировано сгенерирует таблицу прыжков с аналогичным перформансом как си?

Ответы>>812166

03 Авг, 17:30 #253 #812159

Зачем читать библию от Отцов, если сейчас уже другие стандарты? Жду ваших оправданий пожалуйста

Ответы>>812160

03 Авг, 17:32 #254 #812160

>>812159
А что надо читать?
Вот пацаны из cs50 сказали, что классика от отцом это годно. Твои оправдания?

Ответы>>812161>>812167

03 Авг, 17:33 #255 #812161

>>812160
Ну, пацаны может и сказали, А в рекоммендед ридингс КиР у них не обозначено. Только кочан какой-то.

Ответы>>812164

03 Авг, 17:35 #256 #812162

>>812157
Стану байтослесарем в свои 29, можешь скринить и вешать на стену

03 Авг, 17:38 #257 #812164

>>812161
Ну хорошо.
Так что читать-то надо по твоему мнению?

Ответы>>812180

03 Авг, 17:40 #258 #812166

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

Ответы>>812167>>813762

03 Авг, 17:45 #259 #812167

>>812160
> Зачем читать библию от Отцов
Затем, что основы никуда не делись. С тех пор появились новые фишечки, люди поняли, что не так со strcpy, но язык не слишком изменился со времен C89.

>>812166
> кладешь хуй на все паттерны и парадигмы, и ваяешь вместо кода лапшу
@
кэши процессора по пизде
@
из-за алиасинга куча лишних load/store
@
тебя обгоняет даже VB6

03 Авг, 18:11 #260 #812180

>>812164
Бамп, сука.

Ответы>>812662

04 Авг, 06:53 #261 #812662

>>812180
Вот тебе из той же щапки, свежее некуда, сука!http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

Ответы>>813112

53 Кб, 1366x660

04 Авг, 12:16 #262 #812813

Добрый день.
Ребята, что ему не нравится? Как решить проблему?

Ответы>>812819

04 Авг, 12:20 #263 #812819

>>812813
Фигурные скобки. Это тебе не пистон.

Ответы>>812830>>812836

04 Авг, 12:46 #264 #812830

>>812819
Не понял. А при чём здесь фигурные скобки? Если ему не нравится "While"?

51 Кб, 1366x660

04 Авг, 12:55 #265 #812836

>>812819
http://pastebin.ru/Zcdg4QDS
Добавил скобочки, теперь ему не нравится что в круглых скобочках

Ответы>>812840

04 Авг, 12:58 #266 #812840

>>812836
Откуда ему знать, что такое true?

Ответы>>812871

46 Кб, 1366x667

04 Авг, 13:37 #267 #812871

>>812840
Теперь понял, True и False Булевы выражения, т.е. 1 и 0. Но почему-то id50 не поддерживает буквенные формы. Интересно почему? Хотя в Визуал Басике все норм.

Ответы>>812875

04 Авг, 13:39 #268 #812875

>>812871
#include <stdbool.h>
Компилятору скажи, что у тебя C99 или C11.

Ответы>>812877>>812909

sage 04 Авг, 13:40 #269 #812877

>>812875
Лол, даже не заметил, что это в браузере.

Ответы>>812881

04 Авг, 13:42 #270 #812881

>>812877
этож cloud9 для cs50

Ответы>>812886

sage 04 Авг, 13:45 #271 #812886

>>812881
Уже увидел урл, но мне это ни о чем не говорит, кроме того, что это какой-то модный курс. Наверное, я слишком стар, чтобы учиться.

Ответы>>812887

04 Авг, 13:46 #272 #812887

>>812886
>Наверное, я слишком стар, чтобы учиться.
Не, тебе просто похер

04 Авг, 14:08 #273 #812903

Правильно ли я понял, что первым языком должен быть С?

Ньюфаг

Ответы>>812904>>812926

04 Авг, 14:14 #274 #812904

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

04 Авг, 14:22 #275 #812909

>>812875
Действительно. В начале статьи есть подпись: Введите "update50" - для обновления. Но про <stdbool.h> слова нет. При выполнении двух условий функции работают. Спасибо, за помощь!

04 Авг, 14:35 #276 #812926

>>812903

Начинать надо с начала. А т.е. с СИ. http://javarush.ru/cs50.html

Ответы>>813549

04 Авг, 17:49 #277 #813112

>>812662
Хуесос детектед.

Ответы>>813208

04 Авг, 19:01 #278 #813208

>>813112
Поясни.

Ответы>>813212

04 Авг, 19:05 #279 #813212

>>813208
Я так понял там пацан спросил с чего ему начинать, а ты его стандарт читать отправил.
Ты троль или пидор или тролепидор.

04 Авг, 23:05 #280 #813392

Есть теоретический вопрос. Вот такие две декларации функции:
void foo(const int ∗); // В параметрах указатель на сколько-то константных int.
void foo(const int ∗const); // В параметрах константный указатель на сколько-то константных int.

Эти декларации совместимы или нет? Компиляторы не ругаются, им все ок. А что стандарт говорит?

Ответы>>813548

05 Авг, 05:52 #281 #813548

>>813392
>Эти декларации совместимы или нет?
Да.
> А что стандарт говорит?
Вызывающему похуй на top-level const, когда он передаёт по значению.

Ответы>>814019

05 Авг, 06:20 #282 #813549

>>812926
Нахер эти лекции на русском не нужны, без section & shorts, и прочего что на инглише

05 Авг, 13:25 #283 #813717

http://ideone.com/GdR29l
Такс, почему приложение крашит? ( 0xC0000005)

Ответы>>813733>>813756

05 Авг, 13:51 #284 #813733

>>813717
Потому что ты долбоеб даже описание используемых функции не почитал.

Ответы>>813756

05 Авг, 14:19 #285 #813750

>>809322
хотелось бы в стандарт, так же приятней, чем делать static void func_()

05 Авг, 14:27 #286 #813756

>>813717
Тебе написали >>813733

05 Авг, 14:29 #287 #813758

>>812010
>Да, вариант без break был бы красивее, но тут уже, к сожалению, ничего не поделаешь.
какие же дауны тут сидят.

Ответы>>813777>>813778

05 Авг, 14:33 #288 #813762

>>812166
> которая отвратительно выглядит, неподдерживаема
просто съеби.

Ответы>>813778

05 Авг, 14:46 #289 #813769

>>811989
ну и чё ты высрал для сопоставление, даутёнок? сказать что хотел?

Ответы>>813778

05 Авг, 14:56 #290 #813777

>>813758
Ага, ты, например.

05 Авг, 14:58 #291 #813778

>>813758
>>813762
>>813769
Хотел сказать, что отцу твоему в рот кончал, агрессивный мелкобуквенный ребенок.

05 Авг, 15:43 #292 #813807

Посоветуйте годную онлаен ide для си и чтобы был онлаен дебагер c компилятором.

Ответы>>813808>>816527

05 Авг, 15:45 #293 #813808

>>813807
Зачем, когда есть CodeBlocks?

Ответы>>813809>>813810

05 Авг, 15:45 #294 #813809

>>813808
>CodeBlocks
Зачем, когда есть vim?

Ответы>>813810>>813814

05 Авг, 15:48 #295 #813810

>>813808
>>813809
Не хочу ставить гцц и среду, на си вряд ли буду писать что-то очень крупное.

Ответы>>813816

05 Авг, 15:57 #296 #813814

>>813809
В виме нету F9

Ответы>>813865

05 Авг, 15:57 #297 #813816

>>813810
Любая хуита из интернетов пойдет.

Ответы>>813817

05 Авг, 15:59 #298 #813817

>>813816
А онлайн дебагер где взять?

Ответы>>813833>>813849

05 Авг, 16:20 #299 #813833

>>813817
Зачем он вообще?

Ответы>>813924

05 Авг, 16:39 #300 #813849

>>813817
Ручка и блокнот их уже не устраивают

05 Авг, 16:47 #301 #813865

>>813814
Там можно настроить любые хоткеи какие твой анус пожелает.

05 Авг, 17:03 #302 #813888

Баш завезенный в десятку оче годно компилит гццшкой я щитаю
и вим там работает годна
я щитаю оче круто
заепись

Ответы>>813894>>813895

05 Авг, 17:08 #303 #813894

>>813888
Виндой наконец можно стало пользоваться.

86 Кб, 700x700

05 Авг, 17:09 #304 #813895

>>813888
gedit+плагины и консоль с гццшкой и мэйком я щитаю
оче круто
заепись

Ответы>>813898

05 Авг, 17:13 #305 #813898

>>813895
>плагины
Кокими пользуешься?

Ответы>>813915

05 Авг, 17:43 #306 #813915

>>813898
хайлайт скобок, синтаксиса и пробелов/табуляций. Для остального -- пердолинг с терминалом.

Ответы>>813954

05 Авг, 18:02 #307 #813924

>>813833
Чтобы дебажить, очевидно же

05 Авг, 18:45 #308 #813954

>>813915
хотя сейчас начинает доходить, что без толковой системы контроля версий разобраться с файлами бэкапов бывает очень непросто

05 Авг, 20:19 #309 #814019

>>813548
А каким местом они совместимы (где написано, что qualifiers отбрасываются при сравнении)? Вот я вижу в драфте C11 параграф 6.7.3, пункт 10 - сказано, что типы совместимы, если совпадают все type qualifiers, не совпадать может только их порядок. (Ну т.е., int ∗const restrict и int ∗restrict const - точно совместимы).

> Вызывающему похуй на top-level const
Ну это все понятно, я же сразу сказал, что вопрос теоретический.

Ответы>>814057

05 Авг, 20:55 #310 #814057

>>814019
If the expression that denotes the called function has a type that does include a prototype,
the arguments are implicitly converted, as if by assignment, to the types of the
corresponding parameters, taking the type of each parameter to be the unqualified version
of its declared type.

Ответы>>814072

05 Авг, 21:04 #311 #814072

>>814057
Это не то, это вызов. В разделе про присваивание тоже написано, что qualifiers дропаются, чтобы разрешить const int foo = 1; int bar = foo. И тут то же самое, чтобы разрешить int foo = 1; const int bar = 2; void func(const int a, int b); func(foo, bar); Если бы исходные типы не преобразовывались к типам аргументов, а из типов аргумнтов не дропались бы qualifiers, нельзя было бы вызвать функцию.

05 Авг, 21:32 #312 #814098

ну так чё, gnu pth или pthread или выпилиться, так как в гцц их не завезли (нахуй оно никому не нужно)?

05 Авг, 21:37 #313 #814101

Что лучше прата или отцы? Что читать?

Ответы>>814369

06 Авг, 01:53 #314 #814278

>>814243
>>814244
Сектант, пиздуй обратно в свой загон, и не беспокой си-господ своим присутствием.

06 Авг, 04:47 #315 #814332

>>814243
>>814244
Когда будут новые генту треды?

15 Кб, 979x512

06 Авг, 06:54 #316 #814346

Смотрите, у виндузятников наконец-то можно без пердолинга писать кириллицей в консолечке

Ответы>>814410>>814457

06 Авг, 09:20 #317 #814369

>>814101
бамп вопросу

39 Кб, 421x307

06 Авг, 10:50 #318 #814410

>>814346

06 Авг, 12:08 #319 #814457

>>814346
Ещё через десяток лет глядишь и можно будет раскрашивать текст в консоли без использования winapi лол.

Ответы>>814461>>814464

06 Авг, 12:15 #320 #814461

>>814457
Это и сейчас можно сделать, .net во все края

Ответы>>814467

8 Кб, 1227x590

06 Авг, 12:17 #321 #814464

>>814457

Ответы>>814467

06 Авг, 12:24 #322 #814467

>>814464
>использует баш и щитает што ета средства шинды))
>>814461
>повершелл
>300мб при старте

Ответы>>814469>>814481>>814482

06 Авг, 12:26 #323 #814469

>>814467
> щитает што ета средства шинды))
Это в каком месте тебе померещилось?

Ответы>>814475

06 Авг, 12:35 #324 #814475

>>814469
Ну так ты мой пост перечитай. Я явно не про башовый шелл говорил.

3 Кб, 664x50

06 Авг, 12:43 #325 #814481

>>814467
>300мб при старте
Смотри на пикрелейтед, маня, о каких 300мб ты говоришь
>powershell
можно и в обычной консоли сделать, без повершелла, маня

Ответы>>814490

06 Авг, 12:44 #326 #814482

>>814467
>щитает што ета средства шинды
Хотя нет, ты прав. Считаю средствами винды. И это правильно, т.к. Windows Services for Linux, которые занимаются, в том числе, псевдотерминалами и переводом escape-кодов в цвета — это подсистема в Windows.

А баш внутри запущен или там хуяш — это уже неважно.

Но ты ведь школьник и думаешь, что это сам GNU bash рендерит шрифты, в том числе меняя их цвет, лол.

Ответы>>814490

06 Авг, 12:59 #327 #814490

>>814481
>Смотри на пикрелейтед, маня, о каких 300мб ты говоришь
Дотнет тоже учёл?
>можно и в обычной консоли сделать, без повершелла, маня
ну и как же покрасить отдельный кусок текста без SetConsoleTextAttribute и прочего мусора?
>>814482
Только вот ты похоже читать и пытаться понять смысл даже не пробовал.

Ответы>>814510

06 Авг, 13:37 #328 #814510

>>814490
Nu i kak zhe ya dolzhen ponyat tvoy greentext?

Ответы>>814515

06 Авг, 13:43 #329 #814515

>>814510
>разработчикам шинды потребовалось 20 лет чтобы спиздить что-то более менее адекватное вместо дёрганья своими культяпками

Ответы>>814534

06 Авг, 14:22 #330 #814534

>>814515
откуда же они спиздили Windows Services for Linux???

Ответы>>814665

06 Авг, 14:32 #331 #814538

Почему так нельзя

int main(int argc, string argv[]) {
string str = argv[];
...

И как можно

Ответы>>814544>>814617

06 Авг, 14:44 #332 #814544

>>814538
>string str
Это разве так можно же?

Ответы>>814546>>814589

06 Авг, 14:46 #333 #814546

>>814544
>#include <string.h>
Можно.

gcc ругается
>error: expected expression before ']' token
Может я что-то про arrays недопонял?

Ответы>>814596

06 Авг, 15:37 #334 #814589

>>814544
Оказывается нельзя. Хм... Как же до этого все работало в других программах?

06 Авг, 15:45 #335 #814596

>>814546
делай вот так:

#include <string.h>

int main(int argc, strcpy) {}

Ответы>>814617

06 Авг, 16:12 #336 #814617

>>814596
что делай вот так? вы тут двое совсем ёбнулись? это массив указателей, и причем первый, это указатель на строчку пути до исполняемого файла (может быть \0).

>>814538
> int main(int argc, string argv[]) {
нахуя ты его объявляешь как string? что это вообще такое, вы в тот тред вообще попали?

Ответы>>814629

06 Авг, 16:26 #337 #814629

>>814617
Это все cs50, у них там своя библиотека есть и они обзывают char* так, потому что якобы легче.

Ответы>>814635

06 Авг, 16:30 #338 #814635

>>814629
У cs50 есть курсы по си?

Ответы>>814640>>814642

06 Авг, 16:32 #339 #814640

>>814635
С подключением.

Ответы>>814648

06 Авг, 16:33 #340 #814642

>>814635
Только введение в компьютер обоссаенс. Си + пхп хтмл цсс

Ответы>>814648

06 Авг, 16:36 #341 #814648

>>814640
>>814642
Я думал у них питон вместо си.
А курсы годные или книги лучше?

Ответы>>814649>>814651>>814653

06 Авг, 16:41 #342 #814649

>>814648
Не знаю годные или нет, но мне пока очень нравиться, хотя я и не фанат MOOC.

06 Авг, 16:42 #343 #814651

>>814648
Это в мит питон вместо схемы. Ну нормальные курсы, я вот сейчас началсикп не осилил пытаюсь. Как заявляется, это единственный вводный курс, на котором тебя заставят на сишке структуры данных пилить. Что касается книг-они подробнее. Курс не ставит себе целью научить сишке, а только программировать вообще

06 Авг, 16:43 #344 #814653

>>814648
Вот посмотри это http://cdn.cs50.net/2016/x/references/syllabus/syllabus.html

06 Авг, 16:59 #345 #814665

>>814534
>Linux
Ты сам себе ответил. Если Магомед не идёт к горе – гора идёт к Магомеду.

Ответы>>814680

06 Авг, 17:30 #346 #814680

>>814665
Запилили совместимый API == спиздили???

Ответы>>814683

06 Авг, 17:33 #347 #814683

>>814680
Спиздили всю подсистему. Я понимаю что тебе больна, но от этого факт остаётся фактом – они сами не смогли даже нормальные средства вывода в консоль написать за столько-то лет.

Ответы>>814690

06 Авг, 17:39 #348 #814690

>>814683
>Спиздили всю подсистему.
Т.е. WSL разработал кто-то другой, а в MS спизили? Чего только не узнаешь на дваче.

> Я понимаю что тебе больна
Больна только тебе, школьник. Я пользуюсь линуксом уже лет 8, лет 6 из них чисто им. Только я, в отличие от тебя, не красноглазый фанатик.

> они сами не смогли даже нормальные средства вывода в консоль написать за столько-то лет.
Драйвер для консоли, который понимал escape-коды для ANSI-терминалов был ещё под DOS, когда никаким linux и не пахло.

Ответы>>814716

06 Авг, 18:18 #349 #814716

>>814690
>Драйвер для консоли, который понимал escape-коды для ANSI-терминалов был ещё под DOS, когда никаким linux и не пахло
И? Это отрицает тот факт, что мне чтобы разукрасить слово в консоли под шиндой нужно сделать как минимум сначала вызвать GetStdHandle, потом помешать битмаски руками, потом как минимум 2 раза вызывать SetConsoleTextAttribute чтобы просто разукрасить ебаное слово?

Да – они спиздили чужой апи, если тебе так угодно – потому что их апи представляет из себя кучу безидейного говна.

Ответы>>814726>>814888

06 Авг, 18:35 #350 #814726

>>814716
> спиздили
> апи
Прекрати, мне уже хреново от твоего бреда.

Ответы>>814740

06 Авг, 18:51 #351 #814740

>>814726
Окей, давай заменим спиздили на скопипастили – арм же нельзя спиздили.

Ответы>>814742

06 Авг, 18:55 #352 #814742

>>814740
Хорошо, хорошо. Линакс рулит, винда маздай сакс. Билл -- гей, тсс!

06 Авг, 21:36 #353 #814888

>>814716
> Да – они спиздили чужой апи, если тебе так угодно
ANSI-последовательности придумали не в Linux. Они там просто поддерживаются из-за совместимости с эмулятором терминалов, древних, как говно мамонта (уже почти 40 лет не могут закопать!). У Microsoft во времена DOS тоже был драйвер ANSI.SYS, но он был настолько нахуй никому не нужен, что в Windows NT его перестали поддерживать (точнее, в системе он валялся как минимум до Vista, но исключительно для совместимости с DOS-приложениями).

> их апи представляет из себя кучу безидейного говна.
Это ANSI-последовательности представляют собой кучу протухшего говна, которая создает проблем больше, чем решает. Вот как выглядит типичный раскрашенный вывод в терминал в линуксе:
if (isatty(1)) printf("с цветами"); else printf("без цветов");
Что будет, если типичный говнокодер при рефакторинге поменяет одну ветку и забудет поменять другую? Что будет, если убрать isatty?
А теперь посмотрим, как выглядит типичный раскрашенный вывод в терминал у нормальных людей (вне зависимости от языка и ОС):
colorize(Color_Gray, Color_Black); printf("Нехай colorize() сам решает, как на данной платформе раскрасить что-либо, и нужно ли это");
Какой подход похож на используемый в Windows API?

Ответы>>814902>>815699>>815742>>816078

06 Авг, 21:59 #354 #814902

>>814888
А что будет если завтра все люди на земле вместе одновременно пукнут?
На что будет походить сломанная пополам земля, как думаешь? Мне кажется таки на винапи – как минимум по запашку.

06 Авг, 22:43 #355 #814918

Что есть годного на русском по сишке для вкатывания?
Не говно мамонта плиз

Ответы>>814928

06 Авг, 22:56 #356 #814928

>>814918
>не говно мамонта
>сишка
/0

Ответы>>814932

06 Авг, 23:00 #357 #814932

>>814928
Тут ты прав конечно, да. Ну ладно, придется рвать жопу с материалами на английском, хуле.

07 Авг, 05:23 #358 #815024

Нуфак в тхреде. Есть пару вопросов.
1. Правда ли, что на Сишке легче писать, чем на плюсах?
2. Понимаю что тред не по asm, но будут лабы по AVR студии на asm по ардуино, есть ли аналоги для линухи?

Ответы>>815070>>815080>>815082>>815154

07 Авг, 09:33 #359 #815070

>>815024
1) Смотря что сравнивать, но в основном да – сишка нааамного меньше синтаксически нагружена;
2) Судя по гуглом их компиляторы есть и для линукса, а иде вполне себе запускается под ввайном. Если не осилил пердолинг с ним – всегда можно накатить виртуалку.

07 Авг, 09:52 #360 #815080

>>815024
Ставь AVR-gcc, binutills,libc, В качестве IDE рекомендую code blocks.

Студия не нужна!

Ответы>>815402>>827668

07 Авг, 09:53 #361 #815082

>>815024
Не только писать, но и читать!

Кресты говно.

Ответы>>815153

07 Авг, 11:31 #362 #815153

>>815082
А вот и любитель простыней из проверок на null и error code.

07 Авг, 11:32 #363 #815154

>>815024
>1. Правда ли, что на Сишке легче писать, чем на плюсах?
Скорее нет, чем да.

Ответы>>815167

07 Авг, 11:46 #364 #815167

>>815154
В чём же на крестах может быть легче писать? конечно хороший плюсовый код лучше хорошего сишного, но вот написать такой куда сложнее.

Ответы>>815190

07 Авг, 12:13 #365 #815190

>>815167
Ну там умные указатели, RAII, вот это вот всё.

Ответы>>815208

07 Авг, 12:28 #366 #815208

>>815190
А ещё там 9000 способов выстрелить себе в ногу, умные указатели порождают проблемы с циклическими ссылками, RAII работает по стандарту "как реализовали, так реализовали, нихуя не гарантирую" (поведение деструкторов например) и куча всего прочего.

Сишка тупо лёгкая как палка, и на ней прострелить себе ногу без желания сложнее.

Ответы>>815212

07 Авг, 12:32 #367 #815212

>>815208
>А ещё там 9000 способов выстрелить себе в ногу
Например?
>умные указатели порождают проблемы с циклическими ссылками
Обожаю высосанные из пальца недостатки. Да, порождают. Но какой процент кода с использованием умных указателей организует циклические ссылки в структурах данных? 0.01% в лучшем случае.
> RAII работает по стандарту "как реализовали, так реализовали, нихуя не гарантирую" (поведение деструкторов например)
Можно подробнее?
> Сишка тупо лёгкая
Бывает, что это нужно и тогда её используют.

Ответы>>815249

07 Авг, 13:16 #368 #815249

>>815212
>Например?
cppquiz.org
>Можно подробнее?
Как исключения с raii сочетаются например.
>Обожаю высосанные из пальца недостатки.
Так в плюсах всегда все так – сначала из пальца высасывают векторы с булами и кладут на них хуй, потом признают что не смогли реализовать хэшмэп, потом почти признают недавно введение асинки некорректными, и вместо того чтобы поступить как с хэшмэпом собираются в катиться ещё пачку костылей. Ну это все конечно проблемы из пальца высосанные, ничего страшного.
>Бывает, что это нужно и тогда её используют.
А ещё чаще бывает что проекты на плюсах отказываются от половины фишек языка ради того чтоб не утонуть.

Ответы>>815355>>815365>>815389

07 Авг, 14:49 #369 #815355

>>815249
>Как исключения с raii сочетаются например.
Отлично, а что?

>Так в плюсах всегда все так – сначала из пальца высасывают векторы с булами
Тут не поспоришь. Комитет за всех решил, что компактность важнее скорости доступа. Это, конечно, неправильно.

> почти признают недавно введение асинки некорректными
Лол. Твой ник?

> бывает что проекты на плюсах отказываются от половины фишек языка
Только из-за старой code base, которую не хотят приспосабливать в новым фишкам.

07 Авг, 14:59 #370 #815365

>>815249
>cppquiz.org
Ответил на 9 из 10, на все 70 отвечать неохота.

Я достаточно задрочил плюсы?

Ответы>>815389

07 Авг, 15:17 #371 #815389

>>815249
>cppquiz.org
>>815365
Кстати, меньше всего трудностей вызывают вопросы с красной Difficulty, лол. Зелёные так же просты.

А вот на жёлтые чаще всего отвечаю со второй попытки. Иногда после подсказки.

07 Авг, 15:44 #372 #815402

>>815080
ну у нас именно asm будет, а не сишка.

07 Авг, 22:05 #373 #815699

>>814888
>colorize(Color_Gray, Color_Black); printf("Нехай colorize() сам решает, как на данной платформе раскрасить что-либо, и нужно ли это");
Так-так-так-так. И как же он решит, что раскрашивать, а что — нет? Мне в гойлову залезет и оттуда считает мои мысли?

07 Авг, 22:52 #374 #815742

>>814888
> Вот как выглядит типичный раскрашенный вывод в терминал в линуксе:
>if (isatty(1)) printf("с цветами"); else printf("без цветов");
>Что будет, если типичный говнокодер при рефакторинге поменяет одну ветку и забудет поменять другую? Что будет, если убрать isatty?

Он так только в твоём манямире выглядит. И проблемы, которые ты перечислил, существуют там же.

Ответы>>815752

sage 07 Авг, 23:02 #375 #815752

>>815742
←[2J

08 Авг, 15:43 #376 #816076

Each non-empty thread list is ordered, contains a head as one end of its order, and a tail as the other.

08 Авг, 15:46 #377 #816078

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

> if (isatty(1)) printf("с цветами"); else printf("без цветов");
> Что будет, если типичный говнокодер при рефакторинге поменяет одну > ветку и забудет поменять другую? Что будет, если убрать isatty?
а тут вообще чёт проигрунькал.

Ответы>>816086

08 Авг, 15:52 #378 #816086

>>816078
>> Что будет, если типичный говнокодер
Говнокодер не может сделать так, чтобы в коде в printf писать везде с цветами, но при выводе не на tty управляющих кодов не было, но виноват ему почему-то линукс. В общем, типичный виндокодер, не умеющий в проектирование.

Рассказать ему, как надо, или не стоит метать бисер перед свиньёй?

08 Авг, 23:16 #379 #816334

уже который день читаю спецификацию pthread, Process Scheduling. это просто ад какой-то, нихуя вообще не понятно. а такие предложения меня вообще добивают нахуй:
> An application should not rely only on the use of SCHED_RR to ensure application progress among multiple threads if the application includes threads using the SCHED_FIFO policy at the same or higher priority levels or SCHED_RR threads at a higher priority level.

кто-нибудь в этом разбирается?

Ответы>>816435

09 Авг, 07:50 #380 #816435

>>816334
хуле непонятного? тебе говорится что sched fifo
треды могут жрать весь цпу сколько хотят а твой
sched rr в это время будет посасывать писос

Ответы>>816524

09 Авг, 13:03 #381 #816524

>>816435
и где же это там такое написано?

Ответы>>816666

09 Авг, 13:22 #382 #816527

>>813807
QtCreator

Ответы>>816529

09 Авг, 13:24 #383 #816529

>>816527
Он не онлайн, так что не знаю. Можешь Dev-C++ навернуть, ставится быстро, настройки не требует, gcc в комплекте.

09 Авг, 14:02 #384 #816556

Коротенькая и простая программа (всего 19 строк), берет строку как аргумент и выводит ее горизонтально, потом вертикально. Почему-то она не работает. Наверное потому что там указатели (которые я еще не проходил).
При компиляции gcc ошибок и ворнингов не выдает, однако сама программа говорит
>segmentation fault
Посмотрите, пожалуйста, и скажите где я дурак и как перестать им быть.

https://gist.github.com/anonymous/a1a33c96d07c513479071c04654f55b3

Ответы>>816564>>816565>>816566>>816594

09 Авг, 14:16 #385 #816564

>>816556
word[1]

Ответы>>816567

09 Авг, 14:16 #386 #816565

>>816556
Гугли argc argv. Че ты как этот.

1781 Кб, 3264x2448

09 Авг, 14:17 #387 #816566

>>816556
Нет сил копировать ссылки.

Ответы>>816587

09 Авг, 14:17 #388 #816567

>>816564
> strlen( word [ 1 ] )
> word [ 1 ] [ i ]

09 Авг, 15:01 #389 #816587

>>816566
> printf("%c"

Ответы>>816650

09 Авг, 15:07 #390 #816594

>>816556
http://pastebin.com/5wRxUBKy

Ответы>>816610

09 Авг, 15:40 #391 #816610

>>816594
> size_t
значение знаешь?

Ответы>>816629

09 Авг, 15:45 #392 #816613

Программисты, подскажите. Вот есть в картинка в ARGB.
Как её максимально быстро перевести в RGBA, альфа-канал на 255?

Очевидный вариант:

1. Выделил буфер 4 байта.
2. Скопировал туда 4 байта картинки, сдвинул влево на 1 байт, поксорил на 0xFF.
3. Скопировал буфер обратно.

Повторить для каждых четырех байт картинки.

Можно ли быстрее, не используя intel-специфичные инструкции и ассемблер?

Ответы>>816644

09 Авг, 16:02 #393 #816629

>>816610
Знаю.
http://en.cppreference.com/w/c/types/size_t:
> size_t is commonly used for array indexing and loop counting.

Ответы>>816657

09 Авг, 16:14 #394 #816644

>>816613
https://godbolt.org/g/6CFRja
Спизжено с http://stackoverflow.com/a/776523

09 Авг, 16:17 #395 #816650

>>816587
Имеешь в виду, что я вывожу слово по одному знаку? Ну так было у автора, я только argv подправил. Да и всякое форматирование между буквами можно добавить в случае чего.

09 Авг, 16:27 #396 #816657

>>816629
>cpp
чего?
> size_t is commonly used for array indexing and loop counting.
нет. и по ссылке этого нет.

Ответы>>816659

09 Авг, 16:30 #397 #816659

>>816657
>чего
Хуй через плечо, азаза.
> нет
Пидора ответ.
> и по ссылке этого нет.
Бросай в глаза долбиться.

Ответы>>816663

09 Авг, 16:40 #398 #816663

>>816659
ясн

09 Авг, 16:46 #399 #816666

>>816524
>should not rely on....
вот тута. правда еще про приоритеты упоминается.
весь цпу може выжрать sched fifo такого же
или большего приоритета или sched rr большего
приоритета

Ответы>>816936

09 Авг, 18:34 #400 #816707

Увидел в коде такое:
void foo(const char str)

Т.е. функция принимает поинтер ту поинтер ту чар. Зачем так делается?

Ответы>>816715>>816734

09 Авг, 18:44 #401 #816715

>>816707
Двумерный массив, массив строк, указатель на указатель, почему нет?

09 Авг, 19:10 #402 #816734

>>816707
Если в функции надо присвоить указателю значение (именно указателю, не данным, на которые он указывает), то по-другому никак.

Ответы>>817377

09 Авг, 19:44 #403 #816756

>>816753
>В жизни не программировал на С

И не начинай, пожалуйста.

где тренды по дженте?

sage 09 Авг, 19:45 #404 #816758

>>816753
Говнокод. В пул-реквесте тоже говнокод. -funroll-loops без необходимости, да еще и глобально для всех модулей - зашквар. unsigned short без необходимости экономить место - тормоза и зашквар. Отсутствие пробелов вокруг операторов - дальше не читал, фтопку.

49 Кб, 550x413

09 Авг, 19:57 #405 #816765

>>816753
Дииииииииима! :3

09 Авг, 19:58 #406 #816768

>>816753
Говно.

09 Авг, 20:09 #407 #816778

>>816769
> тип данных типа Байт 256 значений
#include <stdint.h>
uint8_t
> чому тормоза
Но у нас в сишечке есть такая штука, как integer promotions, и при выполнении арифметических операций uint8_t преобразуются к int, а при присваивании обратно в uint8_t обрезаются. Иногда (на x86, или когда компилятору хватает ума обойтись без преобразований) это ни на что не влияет, но в других случаях (на других архитектурах, где нет доступа к 8-битным частям регистров, а иногда и на x86 тоже) из-за этих преобразований возникают по нескольку лишних (по сравнению с int/unsigned int) инструкций. То же и с short. Поэтому реальные посоны используют uint_fast8_t/uint_fast16_t, которые на том же x86 - синонимы unsigned int.

09 Авг, 23:59 #408 #816936

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

> цпу
> вот тута
переведи полностью.

Ответы>>819276

10 Авг, 00:29 #409 #816947

и вообще, что значат приоритеты сам не допёр, ведь есть ещё nice. хотя тут отрезают сходу: Calling the nice() function has no effect on the priority of processes or threads with policy SCHED_FIFO or SCHED_RR. The effect on processes or threads with other scheduling policies is implementation-defined.
но не понятно что с SCHED_OTHER... ведь This structure shall include at least the following member: int sched_priority

10 Авг, 17:04 #410 #817261

Ананасы, посоветуйте хорошую легковесную либу, с помощью которой можно генерить всякую хуйню в JSON-формате. Желательно, чтобы минимально использовались mallocи/free в идеале - вообще без них, но маловероятно, что такая либа была кем-то написана, ибо из-за фрагментации памяти железо уже начинает падать.

Ответы>>817361

10 Авг, 19:37 #411 #817361

>>817261
Сам напиши. Если данные полностью готовы до вывода, сам вывод получается простой: тебе, по сути, нужен только putchar, который умеет кодировать спецсимволы и стек того, что требуется закрыть (массивы, хэши). Делов-то на сто строк, особенно если pretty print не делать.

Ответы>>817366

10 Авг, 19:41 #412 #817363

Аноны, а есть какая нибудь уютненькая конфа с++ программистов в телеграме?

10 Авг, 19:43 #413 #817366

>>817361
Вот если не будет альтернативы - сам напишу. JSON-парсер вот под свои требования нашел.

10 Авг, 20:11 #414 #817377

>>816734
Спасибо тебе антоша. Благодаря твоему совету я сделал ТЗ и возможно меня возьмут на работу и я съеду от мамки.

Ответы>>817380>>817404

10 Авг, 20:18 #415 #817380

>>817377
Отпишись, если возьмут.

10 Авг, 20:47 #416 #817404

>>817377
Это куда такие ТЗ??

11 Авг, 11:47 #417 #817705

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

Ответы>>817749

11 Авг, 12:45 #418 #817749

>>817705
Есть задачи, где невозможно угадать, сколько памяти тебе понадобится. И как тут поступать?

Ответы>>817849

11 Авг, 14:39 #419 #817849

>>817749
От задачи зависит. В некоторых случаях можно тупо задать большой статический буфер, в некоторых - обрабатывать данные частями.

Ответы>>817876

11 Авг, 15:33 #420 #817876

>>817849
Сейчас пилю проект на двух платформах - хМега и процессор на арме с линупсом. И если в хмеге мне аллокация вообще недоступна, то на линупсе без неё я сосну вообще.

Ответы>>817883

11 Авг, 15:44 #421 #817883

>>817876
А я вот соснул с фрагментацией динамической памяти на не-линукс платформе из-за того, что изначально хуйню пилили на линупсе не задумываясь о хоть какой-нибудь детерминированности что в общем-то простительно для нереалтаймовых систем с большими объемами ОЗУ
Теперь нужно передалать всё это говно, в итоге должно получиться что-то типа 5-метрового бинарника, который потребляет ~50кб ОЗУ, лол.

Ответы>>817889

11 Авг, 15:52 #422 #817889

>>817883
Да тут проще все переписать, чем подгонять текущую логику под статическую память, я думаю.

Ответы>>817890

11 Авг, 15:54 #423 #817890

>>817889
Проще сказать, чем сделать.

11 Авг, 21:55 #424 #818111

Господа указатели, может кто насоветовать приличную либу под C способную читать и писать такой мерзкий формат файлов как Excel (.xls и более новый .xlsx, с которым вообще гемор) ?

Ответы>>818132>>818187>>818232

11 Авг, 22:22 #425 #818132

>>818111
Нахера на Си то это лепить?

Ответы>>818183

12 Авг, 00:09 #426 #818183

>>818132
Why not?

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

12 Авг, 00:18 #427 #818187

>>818111
У ёкселя есть сом-апи, через неё и фигачь.

Ответы>>818192>>818213

12 Авг, 00:29 #428 #818192

>>818187
>com
>c

Ответы>>818196

12 Авг, 00:40 #429 #818196

>>818192
Тебе еще многое предстоит узнать в этом мире.
cominterface->lpVtbl->Method(cominterface, foo, bar, baz);

12 Авг, 00:56 #430 #818206

Анон, почему sizeof структуры

struct LDR_DATA_INFO
{
int nFileSize;
char lpFileName[15];
};

даже с #pragma pack(0) дает 20, а не 4 + 15 = 19?

Ответы>>818211

12 Авг, 01:15 #431 #818211

>>818206
pack(0) не дефолтовая ли? Используй pack(1) (#include <pshpack1.h> в шинде).

12 Авг, 01:21 #432 #818213

>>818187
В анус твой сом. Это во-первых требует установленного самого экселя, что уже не вариант, а во-вторых если б я хотел возни с этим лайном то уже сделал бы.

Я пробовал другой изврат с мелкософтскими компонентами - установку драйвера эксель (около 20мб, доступен для загрузки на этом их сайте бесплатно) и чтение эксель-файлов через него (он типа представляет таблицы в виде базы данных).
Но это реально дикий ультраизврат, учитывая какой извращенный SQL-синтаксис там + файлы так можно только прочесть, а создать поди вряд ли.

Короче нужна именно чистая независимая либа, а не какой-то сом анальный и прочее из мира C#-быдлокодеров. Или конвертер с экселя в CSV, но таких годных я тож не нашел.
Пакет опеноффиса может впринципе работать с этими таблицами, но там исходников сука на 300мб и проще таки убиться чем выделить требуемый код с этого пиршества обезьян

Ответы>>818232>>818722

12 da 12 Авг, 01:26 #433 #818214

ee

12 Авг, 02:28 #434 #818232

>>818111
>>818213
>способную читать и писать такой мерзкий формат файлов как Excel
тебе зачем? если поебаться с ячейками, подумай о переводе в другой формат который понимает Excel - xml, cvs, ods.
з.ы.
я просто послал нахуй этот микрософт и перевел все в odt.

Ответы>>818237

12 Авг, 03:03 #435 #818237

>>818232
Занимаюсь "работой за еду" (ну т.е. фрилансом. таки на C и еще одном ъ-языке поудобнее, тоже без ООП и всякого говна) чтобы у мамки на шее не сидеть. Точнее, чтобы набомжевать себе $600 на новую пекарню, ибо недавно полетело барахло и сижу сейчас на прежнем древнем ПК 2004 года выпуска, лол.

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

Ответы>>818246

12 Авг, 05:10 #436 #818246

>>818237
Я тебя нихуя не понял, но ты там держись.

12 Авг, 20:42 #437 #818659

Почему иногда пишут char var[n], a иногда char var[n]?

Ответы>>818661

12 Авг, 20:42 #438 #818661

>>818659
Короче звездочку лучше прилеплять к типу или имени переменной?

Ответы>>818666>>818668>>818711

12 Авг, 20:53 #439 #818666

>>818661
it depends.
Следуй принятому code style.

Ответы>>818670

12 Авг, 20:56 #440 #818668

>>818661
>>805539

Ответы>>818673

12 Авг, 20:57 #441 #818670

>>818666
Спасибо, пошел читать coding standard

12 Авг, 20:59 #442 #818673

>>818668
Хм, что значит "объявление отражает использование"

Ответы>>818679

12 Авг, 21:05 #443 #818679

>>818673
Ну есть у тебя int ∗foo, и ты хочешь прочитать свой int по этому указателю. Что ты будешь делать? ∗foo (не ∗ foo ведь?). То же и с массивами, если у тебя есть foo[2], то и использовать ты будешь foo[n]. Декларации в сишечке стремятся отражать то, что предполагается с переменной делать.

Ответы>>818684

12 Авг, 21:15 #444 #818684

>>818679
Более менее понял, только сегодня с указателями познакомился.

12 Авг, 22:01 #445 #818711

>>818661
Обычно в сях принято к имени. Но это "обычно".

12 Авг, 22:27 #446 #818722

>>818213
А какие проблемы установить эксель? Кроме офиса никто с офисными документами не работает по опеределению, т.к. формат проприетарный. Это называется vendor lock.

13 Авг, 13:27 #447 #818928

Хочц перекатиться с делфи на VS
Кокие подводные камни?

Ответы>>818937>>818942

13 Авг, 13:45 #448 #818937

>>818928
Так VS - это всего лишь IDE. Там много языков и технологий

Ответы>>818940

13 Авг, 13:49 #449 #818940

>>818937
У меня легаси на делфи 7 и апдейтить не хочу.

Перспективно ли в шарп?

Ответы>>818944>>818949

13 Авг, 14:00 #450 #818942

>>818939
Так с делфи-то перекатился уже, >>818928 ?

13 Авг, 14:08 #451 #818944

>>818940
Нет, шарп и джава теперь тоже легаси. Нужно что-то другое

Ответы>>818947

13 Авг, 14:15 #452 #818947

>>818944
Мне нужно что-то практичное на следующие 20 лет. Потом я умру.

МС запилил win10 и под raspberry. Запилит и под прочие модные одноплатники. Мне не мода нужна, а простота лепить гуй, графику в окошке, играть с модными OpenCV & Co

Ответы>>820196

13 Авг, 14:17 #453 #818949

>>818940
я другой анон. С моей прогой на делфи каждый день работают люди с улицы, калибруя девайсы по 10к$ каждый.

Годныня - смертный грех.

13 Авг, 20:19 #454 #819218

>>801836 (OP)
Хай!
Кто нибудь сталкивался с написанием бекенда на с? Знаю что такие проекты есть, но они не освещаются обычно..

Ответы>>819223

13 Авг, 20:44 #455 #819223

>>819218
Конкретнее спрашивай, бэкэнд тоже не един.

Ответы>>819229

13 Авг, 20:53 #456 #819229

>>819223
сайт запилить на си думаю, какие наработки в этой области есть?

Ответы>>819247

13 Авг, 20:56 #457 #819230

https://matt.sh/howto-c
Ето все правда?

Ответы>>819235>>819279>>819328

13 Авг, 21:08 #458 #819235

>>819230
Автор, скажем так, не очень разбирается, но честно запостил в начало статьи ссылку на how-to-c-response, где поясняют за все его всктезисы. Стоит почитать.

13 Авг, 21:23 #459 #819247

>>819229
https://kore.io/
Ну первая же строчку в гугле, сука.

13 Авг, 21:57 #460 #819276

>>816936
ну я так и думал.

13 Авг, 22:00 #461 #819279

>>819230
> C allows static initialization of auto-allocated
пролистал так, это чё прикол такой? ох лол.

Ответы>>819286

13 Авг, 22:02 #462 #819286

>>819279
Ну традиционная реализация вот этого { 0 } - memcpy из скрытой статической переменной. Это если тебе название не понравилось.

Ответы>>819291

13 Авг, 22:06 #463 #819291

>>819286
какое название? инициализация через {} поэлементна. не говоря уже про то, что глобальные по умолчанию - 0.

Ответы>>819295

13 Авг, 22:09 #464 #819295

>>819291
> инициализация через {} поэлементна
Скомпиль что-то вроде struct { int a, b, c; } foo = { 1, 2 }; Маленькие структуры/массивы компилятор инициализирует поэлементно, но для сколько-нибудь большие заполнит memcpy (или memset, если инициализатор { 0 }).

> глобальные по умолчанию - 0.
Автор про автоматические говорит, а не про глобальные.

13 Авг, 22:10 #465 #819298

Ради интереса глянул попристальнее в софтвар цент убунты. Это же пиздец, столько программ, каждую кто-то написал блять, на любую хуету. то и моитвирует и немного огорчает. Алсо, а как в такой софтвар центр свою поделку пропихнуть? Я понимаю, что мои консольные приложения там нахуй никому не упали, просто интересно

Ответы>>819323

13 Авг, 22:15 #466 #819306

> Маленькие структуры/массивы компилятор инициализирует поэлементно
охуенное определение.

> но для сколько-нибудь большие заполнит memcpy (или memset, если инициализатор { 0 }).
но и сравнивать нужно с memzero

> , а не про глобальные.

struct thing localThing = {0}; - глобальная.

Ответы>>819311

13 Авг, 22:18 #467 #819310

а вообще, надо бы в стандарте глянуть, про статик инициализацию.

13 Авг, 22:25 #468 #819311

>>819306
> охуенное определение
Норм определение. Зависит от компилятора и флагов, очевидно же.

> struct thing localThing = {0}; - глобальная.
Ну то есть auto-allocated в заголовке и local в имени ты предпочел не заметить? Понятно, что имеется в виду локальная.

Ответы>>819314

13 Авг, 22:28 #469 #819314

>>819311
> Зависит от компилятора и флагов, очевидно же.
да ну это вообще пиздец тогда. если нет в стандарте - значит нет.

> Ну то есть auto-allocated в заголовке и local
будешь дурачком перекидываться? в первом примере он показывает глобальную и её бессмысленную инициализацию нулями в функции, во втором - без функции. и ты хочешь сказать, всё это время это было локально? функции локально не объявляются.

Ответы>>819317

13 Авг, 22:38 #470 #819317

>>819314
> если нет в стандарте - значит нет.
Ты про что вообще? Про то, что вместо отсутствующих в списке инициализации инициализаторов подразумеваются нули? Так это есть в стандарте, это нормально. Наблюдаемое поведение: написал { 1 } - все остальные элементы стали 0, а первый - 1; написал { 0 } - все стали 0. А я говорил о том, как это реализуется компилятором.

> будешь дурачком перекидываться?
Дурачком прикидываешься ты. Тебе показали сниппет, а не цельную функцию: локальную переменную и функцию, которой такие переменные инициализируют нулями. Две разных сущности. Это понятно любому человеку, способному абстрактно мыслить. Ты еще спроси, где это автор memset взял, ведь хедер не подключен!

13 Авг, 22:46 #471 #819321

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

Ответы>>819324

13 Авг, 22:47 #472 #819322

> Дурачком прикидываешься ты.
ты просто отбитый. пытаешься ГОВОРИТЬ ЗА АВТОРА, что он НА САМОМ ДЕЛЕ хотел сказать. а, ведъ тебе в голову не приходит мысли, что local в имени, имеется веду локальная в транслейшин юнит... короче нахуй иди.

Ответы>>819326

13 Авг, 22:49 #473 #819323

>>819298
Может у гугла для начала спросишь?

13 Авг, 22:52 #474 #819324

>>819321
Можно учить параллельно. Да и вообще, асм особо учить не нужно. Для x86 достаточно запомнить имена (и назначение) регистров (включая регистр флагов), разобраться со стеком, эффективной адресацией (effective address). Потом будешь просто смотреть в мануале, что делают конкретные инструкции.

Ответы>>819327>>819333

sage 13 Авг, 22:54 #475 #819326

>>819322
> ГОВОРИТЬ ЗА АВТОРА
Блять, автор тебе в заголовке написал: речь идет об автоматических переменных. Все. Глобальные переменные автоматическими не могут быть по определению, что ты тут устроил вообще?

Ответы>>819329

13 Авг, 22:55 #476 #819327

>>819324
ну да, по суте немного про то как это работает, стек, флажки, и тупо справочник по инструкциям, например с сайта intel. жаль что поиск по pdf голимый какой-то... или у меня такой ридер...

Ответы>>819331

13 Авг, 22:56 #477 #819328

>>819230
> If you find yourself typing char or int or short or long or unsigned into new code, you're doing it wrong.
Писал явно поехавший.

13 Авг, 22:56 #478 #819329

>>819326
struct thing {
uint64_t index;
uint32_t counter;
};
struct thing localThing;
void initThing(void) {
memset(&localThing, 0, sizeof(localThing));
}

заебись локальные переменные да?

13 Авг, 22:59 #479 #819331

>>819327
Суматра норм по интеловским мануалам ищет. Алсо, в мануалах оглавление есть.

13 Авг, 23:01 #480 #819333

>>819324
Окей. Значит, возьму какую нибудь книжку по асм для дурачков, пробегусь по ней. Запомню регистры, память, стеки и прочее. Тхэнкс а лот

13 Авг, 23:07 #481 #819334

неплохую статейку про posix пролистал:
http://citforum.ru/operating_systems/articles/posix.shtml

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

Ответы>>819336>>819338

13 Авг, 23:14 #482 #819336

>>819334
Чёт он темнит.

13 Авг, 23:21 #483 #819338

>>819334
> Как следует из названия, POSIX (Portable Operating System Interface)
Всегда считал, что там ещё есть "for uniX" в конце. Открыл http://www.opengroup.org/austin/papers/posix_faq.html
Q0. What is POSIX? What is POSIX.1?
POSIX is a registered trademark of the IEEE.

POSIX is an acronym for Portable Operating System Interface.

Вот и верь после этого русским википидорам, которые пишут "for uniX" в конце.

Ответы>>819339>>819488

13 Авг, 23:23 #484 #819339

>>819338
Чтобы начать верить русским википидорам, нужно самому стать таковым

Ответы>>819442

14 Авг, 07:34 #485 #819442

>>819339
тебе никто не обязан писать правильно, не нравится - измени сам. Я!?

14 Авг, 10:39 #486 #819488

>>819338
в любом случае остаётся непонятным, нахуя там X

Ответы>>819615

14 Авг, 14:20 #487 #819615

>>819488
Для благозвучия.

Вполне возможно, что там было в первой версии или до стандартизации "for uniX". Ведь POSIX это наследник SUS (Singe Unix Specification)

Ответы>>819835

14 Авг, 17:40 #488 #819762

лучше расшифруйте unix.

в вообще, из за этих x я раньше дико путался, подумать только, linux-unix-posix... а ещё gnu, который не unix. господи, да я и сейчас всю картину не вижу...

14 Авг, 18:53 #489 #819835

>>819615
> POSIX это наследник SUS
Впрочем, тут я напиздел.

Короче, похуй, кто там кого ебал. Главное, что "for unix" сейчас нет.

14 Авг, 20:20 #490 #819890

Аноны, как вы ползаете по большому проджекту? ОпенГрок, ГНУ Глобал, греп?

Ответы>>819906

14 Авг, 20:36 #491 #819906

>>819890
ack-grep

14 Авг, 23:24 #492 #820038

Оффтоп, для тех, кто проходит(ил) cs50, вы нашли, что за чувак из проблем сета, где надо восстанавливать картинку?

Ответы>>820127

15 Авг, 07:18 #493 #820127

>>820038
Как по мне это либо дэвид, либо рикролл. Скорее рикролл.

15 Авг, 07:30 #494 #820128

Пейсаны, что именно в 2016 году вы пишете на сях? Не сарказм и не подъеб, просто не владею информацией

Ответы>>820151>>820192>>820703>>820721

15 Авг, 09:20 #495 #820151

>>820128
Whole universe

15 Авг, 10:50 #496 #820192

>>820128
Хуйню всякую для ИНТЕРНЕТОФСИНГС.

15 Авг, 10:50 #497 #820196

>>818947
Ну тогда тебе Delphi, C#, C++ Builder или Qt - в самый раз, но вот через 20 лет никто не знает какая технология будет нужна для гуестроения. Вот например джава продержалась около 20 лет и умерла. Питон - умирает, но еще не окончательно

15 Авг, 11:11 #498 #820203

Хочу запилить свой пдф ридер под линухи, тобы читать книжки по программированию для младшекласников. Подъемна ли задача для нуфага?

Ответы>>820214>>820215

15 Авг, 11:29 #499 #820214

>>820203
Лучше помогай улучшать имеющиеся.

Ответы>>820220

15 Авг, 11:31 #500 #820215

>>820203
>Подъемна ли задача для нуфага
Да, но зачем?

Ответы>>820220

15 Авг, 11:35 #501 #820220

>>820215
>Да, но зачем?
Ну как, чтобы опыт получить в разработке программок.
>>820214
Это да, в опенсурс вкатиться я уже думал. Только я представил как коммит делаю, и мне стало стыдно почему-то.
Да и в целом я хотел бы разобраться с пдф форматом, а в особенности с его уязвимостями и как их лучше закрыть а потом как это лучше взломать, чтобы еще лучше закрыть.

А еще я думал запилить музпроигрыватель консольным, но такой тоже уже есть

Ответы>>820221

15 Авг, 11:38 #502 #820221

>>820220
>Ну как, чтобы опыт получить в разработке программок.
Выбери что-нибудь попроще, на пдфчиталку слишком много времени уйдет, а толку будет мало.

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

Ответы>>820230

15 Авг, 11:48 #503 #820230

>>820221
Хорошо, поищу чего попроще. Я б еще конечно с radare поковырялся, но там, чую, нужно столько всего знать

Ответы>>820247

15 Авг, 12:13 #504 #820247

>>820230
Решать задачи через программки с консольным интерфейсом весело и полезно на всех этапах обучения, просто задачки надо подбирать по-сложнее. На кой тебе читалки? Поверить в свои силы?напиши имиджборду на сях,лол

Ответы>>820251

15 Авг, 12:24 #505 #820251

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

Ответы>>820259

15 Авг, 12:40 #506 #820259

>>820251
>в стандартной читалке нет человеческих закладок
В okular есть

Ответы>>820264

15 Авг, 12:46 #507 #820262

Анон, существует ли в природе TLS-либа, которая не использует динамическую память и может вместить на мк с ~128кбайт озу?

15 Авг, 12:47 #508 #820264

>>820259
в гткашном evince(дефолтный в lxde) тоже

IDE FOR C 15 Авг, 15:18 #509 #820364

Хочу вкатиться в си, какую IDE поставить?

Ответы>>820366>>820375

15 Авг, 15:19 #510 #820366

>>820364
emacs/vim либо Qt Creator/Eclipse. Всё зависит от личных предпочтений.

Ответы>>820375>>820376

15 Авг, 15:31 #511 #820375

>>820366
>>820364
Удивительно, как часто тут задаются подобные вопросы, и с каким хладнокровием на них продолжают серьёзно отвечать.

15 Авг, 15:32 #512 #820376

>>820366
Что-то не слишком тяжелое, только чтобы была подсветка синтаксиса и auto-completition

Ответы>>820382

15 Авг, 15:39 #513 #820382

>>820376
Ну тогда vim с несколькими плагинами - твой выбор. Eclipse хорош, но уж слишком жирный и тормозной, Qt Creator иногда практически нереально настроить под какой-то специфический проект (Но если ты делаешь что-то уровня лаба2, то это - твой выбор). Ну а emacs ты не сможешь выбрать, ибо только сам emacs может выбрать тебя.

Ответы>>820511

15 Авг, 18:14 #514 #820511

>>820382
>emacs
да не, нормально, просто вкатываться нужно сразу, потом сложнее. зато плюсов море, и вот мне уже не нужен файловый менеджер, терминал... правда, я всё ещё, не умею в лисп. но как-то накорябал свою подсветку. стандартная не тащит, там подсветка имён структура и любых типов - короче, что-то такое...

ПЕРЕКАТ # OP 15 Авг, 21:38 #515 #820661

>>820659 (OP)
>>820659 (OP)
>>820659 (OP)

15 Авг, 22:34 #516 #820703

>>820128
лаба1, лаба2

15 Авг, 23:01 #517 #820721

>>820128
Драйверы. Все embeded поделки.

19 Авг, 20:53 #518 #823404

Пытаюсь написать интерпретатор/терминал/оболочку (не знаю как назвать) для парочки команд в микроконтроллер, чтобы через последовательный порт можно было заставлять его что-то делать прямым текстом (командами а-ля баш). Пока пишу под ПК на линуксе.
Вопрос следующий: как перехватить стрелочки, чтобы не выводился мусор типа "^[[D", а каретка перемещалась по вводимой строке? Пробовал getchar() и scanf() с одинаковым результатом, но я понятия не имею как предотвратить вывод этого мусора. Остальное я представляю себе как реализовать. Обязательный момент - это использование только функций из страндартной библиотеки.
И, кстати, вводимую строку пишу в массив символов - это нормально так делать или стоит переехать на указатели?

26 Авг, 13:08 #519 #827668

>>815080
>Студия не нужна!
Чем она хуже?
Что скажешь про Bascom-AVR?

Ответы>>827669

26 Авг, 13:09 #520 #827669

>>827668
Вряд ли этот тред кто-то читает. Мы перекатились >>820659 (OP) в новый.

26 Авг, 21:01 #521 #828170

>>821402 (OP)
Вот объясните мне, нахуя нужны в линуксе статические библиотеки? В каких слуаях вообще они используются, если приемущества только у динаических? В инете толком про них не пишут.
Возможно нубский вопрос. Сегодня начал красноглазить, можете прописчать обряд посвящения.

10 Кб, 269x187

С# Visual Studio 2015 05 Сен, 21:29 #522 #836210

Анон, спасии!! как убрать этот конфуз?
c#:
using SimpleWifi; //нормас
using SimpleWifi.Win32; подчеркивает Win32
работаю в VS 2015, у кого-нибудь было что-то подобное?

Ответы>>836212

05 Сен, 21:31 #523 #836212

>>836210
Что это здесь делает? Ну видимо нет Win32 в SimleWifi. Мышку-то наведи, оно тебе само расскажет.

Ответы>>836215

05 Сен, 21:35 #524 #836215

>>836212
дорогой мой, ЕСТЬ!

Тред утонул или удален.
Это копия, сохраненная 6 сентября 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion