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

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!

Check this out!


Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 510 | 37 | 142
Назад Вниз Каталог Обновить

C Programming Language #17 Аноним # OP  01/02/17 Срд 20:49:43  924123  
+UbHDk1JTjTga41[...].png (78Кб, 792x1023)
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Шапка: http://piratepad.net/bJ1SdmkZyu
Аноним 01/02/17 Срд 21:15:14  924148
>>924080
Ты жоподум
Аноним 01/02/17 Срд 22:48:58  924230
Где инклудите: в h или в c? Какие подводные камни?
Аноним 01/02/17 Срд 23:01:51  924240
>>924230
В идеале стоит стремиться в тому, чтобы .h сам разбирался со своими зависимостями, не вынуждая угадывать, в каком порядке нужно подключать хедеры. А остальные хедеры, конечно, нужно подключать в .c, по мере необходимости. Если много файлов с однотипными зависимостями - например, подсистема какая-нибудь, можно собрать хедер для подсистемы. Но это уже вкусовщина.
Аноним 01/02/17 Срд 23:33:51  924266
Сап, аноны. У меня IP-адрес хранится в структуры как 4-байтовое целое. Какой функцией его можно преобразовать в формат, подходящий для создания соединения с этим адресом?
Аноним 01/02/17 Срд 23:49:54  924277
>>924266
Ты чтоль структуру в строку с точками не можешь отформатировать? Ебать ты
Аноним 01/02/17 Срд 23:58:39  924289
>>924277
Так может, без велосипеда можно обойтись виндовыми функциями. В структуре sockaddr_in в каком формате хранится IP? Может, просто загнать туда и все?
Аноним 02/02/17 Чтв 00:00:26  924293
о. тред сходу начинается с хуесоса. как встретишь так и проведёшь.
Аноним 02/02/17 Чтв 00:05:11  924300
>>924266
inet_ntoa, но адрес должен быть в big endian (если нет - htonl сначала).
Аноним 02/02/17 Чтв 00:06:32  924301
>>924289
Не дочитал вопрос. Вот так:
sockaddr_in sa;
sa.sin_addr.S_addr = htonl(адрес);
Аноним 02/02/17 Чтв 09:51:08  924486
Даже сишники перекатили тред, а плюсогоспода не в состоянии.
Аноним 02/02/17 Чтв 10:01:23  924499
>>924486
Мне влом просто
мимо оп плюсотреда
Аноним 02/02/17 Чтв 11:58:12  924574
Подскажите ньюфагу какой-нибудь мисра чекер.
Аноним 02/02/17 Чтв 14:00:53  924653
Подскажите какой-нибудь ВЕСЁЛЫЙ байтоёбский учебник. Не обязательно си. пусть там будет про ассемблер, про ос, про архитектуру компьютера и про си. Чтобы там были все аспекты низкоуровневости.
Аноним 02/02/17 Чтв 14:10:45  924654
>>924653
Очевидный Таненбаум очевиден.
Аноним 02/02/17 Чтв 14:12:11  924655
m91-TSeJzCc.jpg (88Кб, 565x800)
>>924653
А. Таненбаум, архитектура компьютера.
Если тебе от него «скучно» — пiздуй на завод профессия не для тебя.
Аноним 02/02/17 Чтв 14:14:17  924657
>>924654
Хотел про него в посте упомянуть, но подумал и так понятно. Он не весёлый. Не обязательно такой подробный учебник. Пусть там просто будет байтоёбство и код. Чтобы можно было самому с ним поиграться.

>>924655
Сам пиздуй. Раскомандовался тут.
Аноним 02/02/17 Чтв 14:22:13  924658
>>924657
— Норот, пасскажытти учебник на 7-струнной гитаре, шоб весело было, с цыганнами, с мэдвэддямы...
— Андрей Сихра, «Самоучитель для 7-струнной гитары, которую я только что изобрёлъ», самиздат 1895 г.
— Хотел про него в посте упомянуть, но подумал и так понятно. Он не весёлый. Не обязательно такой подробный учебник. Пусть там просто будет байтоёбство и код. Хочю как «Ласковый май» на сцене гнусавить с гитаркой. Чтобы можно было самому с ней поиграться.
Аноним 02/02/17 Чтв 14:23:36  924659
>>924658
Ой всё
Аноним 02/02/17 Чтв 14:34:09  924662
>>924658
Как человек, окончивший музыкалку, авторитетно заявляю, что самоучители - говно, а тот, кто провел такую аналогию - пидорас. Преподавать тоже надо уметь.
Аноним 02/02/17 Чтв 14:37:25  924663
>>924662
Как кун с 4ёхлетним декретным отпуском в музыкалке заявляю, что музыкалка - говно.
Аноним 02/02/17 Чтв 22:37:52  925026
>>924653
thinking in forth
Аноним 02/02/17 Чтв 23:17:59  925063
>>925026
Прочитал 20 страниц и пролистал по диагонали. Похоже байтоёбство есть и учебник весёлый. Хотя это скорее ненормальное программирование чем байтоёбство. Про ос не нашёл. Есть моар? Люблю когда есть выбор.
Аноним 02/02/17 Чтв 23:40:47  925073
>>925063
почитай криса.
Аноним 03/02/17 Птн 00:23:57  925112
>>925073
Касперского?
Аноним 03/02/17 Птн 02:04:11  925163
>>925112
Эванса
Аноним 03/02/17 Птн 09:02:36  925219
>>925063
> ненормальное программирование
Схуяли? На форте как и 20 лет назад софт пишется, бабло мутится. Хотя по этому
>Похоже байтоёбство есть и учебник весёлый
Я понял, что ты обычный стремящийся, для которого байтоёбство это битовые структуры считать и в 2кб памяти уместится.
Аноним 03/02/17 Птн 10:42:44  925257
http://ru.stackoverflow.com/a/199013
Доставьте тоже самое, но на си, пожалуйста. Весь гугл забит крестами, да чтож это такое.
Аноним 03/02/17 Птн 10:58:34  925260
>>925163
Не гуглится же.
Другой анон.
Аноним 03/02/17 Птн 11:09:06  925266
>>924653
c the hard wai
Аноним 03/02/17 Птн 20:44:35  925719
Уважаемые сибляди, дайте совет.

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

Написать мусор достаточно просто, но нужно жизнеспособное решение. Я ещё совсем неопытный сиблядок, поэтому пригодная архитектура в голове у меня не сложилась. Можно использовать всякие syslog'и и logrotate'ы, однако, как я понял, эти ребята не поддерживают анализ содержимого лога для удаления неактуальных записей.

Аноним 03/02/17 Птн 21:29:08  925792
>>925719
СУБД. архитектура не нужна.
Аноним 03/02/17 Птн 21:31:52  925799
>>925792
Какая СУБД? Какое это вообще имеет отношение? Это не интерпрайз. Достаточно писать в файлы.
Аноним 03/02/17 Птн 21:44:18  925814
>>925799
Окей, изобретай каменное колесо, ебись с консистентностью, атомарностью, решай проблемы, давно решенные создателями бд и логдвижков.
Аноним 03/02/17 Птн 21:49:37  925825
>>925799
>Достаточно писать в файлы.
Ага, потом копировать в новый ибо начальные строки уже устарели, тем более еще и сканить/парсить на приоритет, знакомся с SQLite ну или юзай логирование ОС.
Аноним 03/02/17 Птн 22:35:29  925880
Пишешь в файл. Под каждый приоритет свой файл. Каждая запись должна начинаться с таймстампа. Если нужно вывести весь лог то открываешь все файлы и по очереди достаешь записи в соответствие с таймспампами. Если нужно удалить записи с определенным приоритетом просто удаляешь файл.
СУБД проще вариант, но насколько я знаю они не очень-то любят удаление записей, по факту место освобождается не сразу и с дополнительной еблей, разного рода OPTIMIZE TABLE и подобная хуйня с перезаписью базы. Хотя если удалять не часто то врядли особо проблемы будут.
Аноним 04/02/17 Суб 15:31:41  926305
>>924123 (OP)
> https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard
годно, однако, чтобы выправить говнокод

Какая буржуйская норма описывает требования к ПО, ответственное за "safety". Ну, там мониторить что-либо и надёжно вырубить, если трабла
Аноним 05/02/17 Вск 00:37:04  926742
>>924123 (OP)
Тут есть кто-нибудь, кто игры на плюсах пишет? (OpenGL, Unity)? А то собираюсь игрулю писать, а крестотреда нет.
Аноним 05/02/17 Вск 00:40:48  926744
>>926742
OpenGL-тред и прочие игрули в /gd/.
Аноним 05/02/17 Вск 18:14:33  927176
14840215880640.png (113Кб, 400x234)
Что-то я не врубаюсь, Си не может в вычитание большего из меньшего? Вместо отрицательного резалта, выдает рандомный наборм цифр.
Аноним 05/02/17 Вск 18:17:36  927178
>>927176
Нет не может. Отрицательных чисел не существует - это выдумки жидовских математиков. Православные языки таким не занимаются.
Аноним 05/02/17 Вск 18:27:53  927183
>>927178
Понятно что отрицательные числа есть, но конкретно из операции вычитания я их не могу получить.
Аноним 05/02/17 Вск 18:28:49  927185
>>927176
unsigned int объяви переменную дурачок
Аноним 05/02/17 Вск 18:38:39  927193
1325795061502.jpg (5Кб, 160x121)
>>927185
> Вместо отрицательного резалта, выдает рандомный наборм цифр
> unsigned int объяви переменную
Аноним 05/02/17 Вск 18:43:51  927198
14776927465650.png (459Кб, 604x485)
>>927185
unsigned int a;
unsigned int b;

scanf("%d", &a); // При условии что b больше a
scanf("%d", &b);

printf("%u", a - b);

Хуй, а не отрицательное значение
???
Аноним 05/02/17 Вск 19:50:27  927231
Кто писал для гном, насколько это гемморой? Интересует последняя версия.
Аноним 05/02/17 Вск 19:59:28  927238
>>927231
Вот они пейсали:
http://www.opennet.ru/opennews/art.shtml?num=45914
Рассмотрев все за и против оптимальным признан путь миграции рабочего стола Budgie на Qt. По мнению разработчиков, переход на Qt положительно отразится на производительности, позволит реализовать новые возможности и расширить графические эффекты. При этом в основной кодовой базе планируется использовать только средства разработки на C++ и отказаться от применения языка Vala. В Budgie также не будет применяться QML и библиотеки KDE. Подобное ограничение не распространяется на сторонние виджеты, авторы которых вольны применять QML. Переход на Qt не означает обеспечение совместимости с KDE Plasma и проект продолжит ориентацию на запуск приложений GNOME, обеспечив их бесшовную интеграцию в окружение на базе Qt.
Аноним 05/02/17 Вск 21:32:27  927300
>>927198
Смешались в кучу пони, люди. При сложении и вычитании unsigned int, представленных n битами сишечка выдает результат по модулю 2^n. Ну и, конечно, при вычитании unsigned чисел, если не было integer promotions, signed у результата взяться неоткуда.
Аноним 07/02/17 Втр 00:08:02  927975
как сделать простенький UI для программы?

там поле заполняемое из спровочника, второе поле с числом и один флаг
Аноним 07/02/17 Втр 01:02:59  927986
>>927975
да
Аноним 07/02/17 Втр 08:01:29  928031
>>927198
А что такое UNSIGNED у переменных означает ты, типа, не знаешь, уёбок тупой?
Аноним 07/02/17 Втр 09:49:12  928058
539775651.png (150Кб, 1118x734)
Схоронил.
Аноним 07/02/17 Втр 10:14:04  928065
>>928031
мамку ебал
Аноним 07/02/17 Втр 16:17:39  928238
perceptronscheme.jpg (10Кб, 352x167)
Сап, анон. Помоги перцептрон с одним входным-выходным нейроном или с одним выходным и двумя входными написать на сишке. У меня просто мозга уже под неё деформировался. И долбанные нейросети никак понять не могу на других языках. То ли я дурак то ли лыжи не едут. Может найдётся анон, который серьёзно тащит в нейросетях и сможет на пальцах всё объяснить тупоголовому. Ну, или написать код по пикрелейтед. Обучать её не нужно. Мне главное - понять принцип построения нейросетей и того как нейроны принимают инфу, и обрабатывают, и где хранят. Хотя, если всё же на примере будет нагляднее то можно и с каким-нибудь примером обучения. habrahabr.ru/post/143129/
Аноним 07/02/17 Втр 16:19:12  928239
>>928238
забыл добавить, что это ссылка на статью на хабре, в которой вроде объясняется "на пальцах" но язык какой-то странный и ужасный используется
Аноним 07/02/17 Втр 19:59:06  928330
как отпарсить код на сишке, чтобы получить список имён всех переменных?
Аноним 07/02/17 Втр 20:17:36  928340
>>928330
уже не актуально.
Аноним 07/02/17 Втр 20:32:30  928345
>>924123 (OP)
Какие сейчас перспективы у С-программиста на рыночке? Или без крестов или шарпа нехуй делать?
Аноним 07/02/17 Втр 21:11:21  928360
>>928345
Оборонка разве что. И там C++.
Аноним 07/02/17 Втр 21:42:13  928386
>>928360
А спутники вроде на чисто С написаны.
Аноним 07/02/17 Втр 21:50:36  928395
>>928386
Ты зарплаты смотрел или спутники?
Аноним 07/02/17 Втр 21:55:49  928397
>>928345
Цэ - это эмбед, жОсткое байтоёбства с оупенсорц. Контроллеры и натягивание юбута с линухом на всё.

Как понимаешь, перспективы не для хипстеров.
Для Си - надо родититься в свитере.
Паяльник-то в руках дрежал?
Аноним 07/02/17 Втр 21:57:30  928399
>>928397
Я только хуй и мышку держал.
Аноним 07/02/17 Втр 22:02:06  928404
>>928399
Продолжайте держать хуй и программируйте мышкой.
Мы вам перезвоним.
Аноним 07/02/17 Втр 22:03:25  928406
>>928404
А сколько времени хуй держать? Пока не перезвоните?
Аноним 07/02/17 Втр 22:40:31  928422
>>928397
Интересно послушать о поделиях с паяльником. Процессоры паял?
З 08/02/17 Срд 06:39:15  928504
Screenshot20170[...].png (1310Кб, 1080x1920)
Помогите найти ошибки
Аноним 08/02/17 Срд 06:48:02  928505
>>928504
Ошибка! Это тред по сишке, а на пике - кресты.
Аноним 08/02/17 Срд 06:50:08  928507
>>928504
нашел, не благодари
Аноним 08/02/17 Срд 07:11:03  928510
>>928505
Сукаааааа
Толсто
Это не кресты, а сишка обычная
Аноним 08/02/17 Срд 08:13:38  928520
>>928404
юморно. ставлю структ.
Аноним 08/02/17 Срд 08:42:04  928522
Анон, вот решил помацать ваши Си. Какой IDE, под линуксами, юзать лучше?
P.s. Есть CLion, норм?
Аноним 08/02/17 Срд 09:00:00  928527
>>928522
Vim
Аноним 08/02/17 Срд 09:43:44  928538
>>928510
> new
> delete
Кретин ебаный.
Аноним 08/02/17 Срд 10:20:50  928551
>>928522

Норм для начинающего мацальщика.
Аноним 08/02/17 Срд 11:39:29  928585
>>928527
Окай,спасибо,гляну
>>928551
А что юзают не начинающе, а вполне себе продолжающие, на линуксах?
Аноним 08/02/17 Срд 15:10:26  928727
>>928404
кТО МЫ? КТО МЫ-ТО? Я ОДИН ЗДЕСЬ НАХУЙ!
Аноним 08/02/17 Срд 15:11:47  928729
cmake.exe -G "MinGW Makefiles" src
-- The C compiler identification is unknown
-- The CXX compiler identification is GNU 5.1.0
-- Check for working C compiler: C:/FPC/2.6.4/bin/i386-win32/gcc.exe
-- Check for working C compiler: C:/FPC/2.6.4/bin/i386-win32/gcc.exe -- broken


gcc
gcc: No input files


Как эта тупая пизда может не видеть GCC если он прописан в PATH? и за каким хуем лезть в пацкаль?
Аноним 08/02/17 Срд 15:17:06  928733
>>928397
Чё линух-то сразу? RTOSы для кого придуманы? Да и вообще ОС не всегда нужна, от задач зависит.
Аноним 08/02/17 Срд 16:39:49  928790
>>928397
>Для Си - надо родититься в свитере.
Бляя
мимо в Си-вкатывальщик-воннаби-смуззихлёб
Аноним 08/02/17 Срд 17:52:15  928858
вы тёлку зажимали хоть раз?)
Аноним 08/02/17 Срд 18:02:40  928874
14796912131381.jpg (95Кб, 580x625)
>>928858
Ну давай, расскажи нам как пикапить телок на джаве
Аноним 08/02/17 Срд 18:05:33  928881
>>928858
Ну когда автобус резко затормозил, а я стоял, не держась за поручни, я полетел в тянку и прижал ее к задней стене автобуса. Ну я покраснел и сказал "извините пожалуйста". Тянка была примерно моего возраста.
Аноним 08/02/17 Срд 18:18:43  928906
>>928881
Не пизди, ты никогда не погромировал на божественном Си.
Аноним 08/02/17 Срд 18:20:42  928908
>>928906
Программировал. Учился по книге из оппикчи.
Аноним 08/02/17 Срд 21:28:15  929071
>>928585
>А что юзают не начинающе, а вполне себе продолжающие, на линуксах?
>>928527
Аноним 08/02/17 Срд 21:29:29  929074
>>928858
нет ((
Dmitry 08/02/17 Срд 22:32:34  929107
Аноны оцените мою функцию что превращает строку в int.
int str2int(char str[]){
int val=0;
for(int i=0;str!='\0';++i,val=10){
switch (str){
case '0':
val
=10;
break;
case '1':
val+=1;
break;
case '2':
val+=2;
break;
case '3':
val+=3;
break;
case '4':
val+=4;
break;
case '5':
val+=5;
break;
case '6':
val+=6;
break;
case '7':
val+=7;
break;
case '8':
val+=8;
break;
case '9':
val+=9;
break;
}
}
return (str[0]=='-') ? -val/10 : val/10;
}

Написал до того как нашел функцию в стандартной библиотеке, однако когда посмотрел код там у них одни макросы и хуй пойми что еще, и концы идут непонятно куда (GNU).
Как оно по нормальному реализуется то?
Аноним 08/02/17 Срд 22:36:38  929109
>>929107
дристанул с велосипеда.
Dmitry 08/02/17 Срд 22:36:42  929110
Поясните за ptreads, или где за него норм поясняют?
Почему многопоточность до сих не входит в стандарт языка?
Правда ли что на С код может быть более тормозной чем на плюсах? Я вот сталкивался с тем что пхп высирает тысячи строк в консоль в мгновение ока, а все остальное включая сишку и ноду делает это секунд 10.
Dmitry 08/02/17 Срд 22:38:02  929112
>>929109
Ну а теперь поясни как по людски делать.
Аноним 08/02/17 Срд 23:01:44  929124
>>929107
слышал про ASCII?
Аноним 08/02/17 Срд 23:03:46  929127
>>929110
>Правда ли что на С код может быть более тормозной чем на плюсах? Я вот сталкивался с тем что пхп высирает тысячи строк в консоль в мгновение ока, а все остальное включая сишку и ноду делает это секунд 10.
Без конкретных примеров это всё просто сотрясание воздуха. На любом языке код может быть более тормозным, чем на другом языке.
Аноним 08/02/17 Срд 23:23:24  929143
>>928522
>Какой IDE, под линуксами, юзать лучше?
emacs
Аноним 08/02/17 Срд 23:31:13  929151
RMSSHB.jpg (64Кб, 800x600)
>>929143
Спасибо.
Аноним 08/02/17 Срд 23:57:48  929172
>>929110
>Поясните за ptreads, или где за него норм поясняют?
Ричард Стивенс, книги про Unix, любые.
>Почему многопоточность до сих не входит в стандарт языка?
В других ОС другие функции, на микроконтроллерах вообще всё не так.
В том числе стандарт MISRA C велит всё делать в один поток, и так далее...
Аноним 08/02/17 Срд 23:58:41  929174
>>929110
>пхп высирает тысячи строк в консоль в мгновение ока
Он кеширует вывод.
>а все остальное включая сишку и ноду делает это секунд 10.
А они нет.

И ещё у него строки с заданной длиной, т.е. функция присоединения строки к строке быстро работает.
Аноним 09/02/17 Чтв 00:03:51  929179
airplane-robert[...].jpg (305Кб, 1920x1080)
Анон, этот пример ломает мне мозг.
Почему разрешается менять размер массива? Как можно вызвать LA[5], если декларированная длина - 5 элементов?

#include <stdio.h>
main() {
int LA[] = {1,3,5,7,8};
int k = 3, n = 5;
int i, j;

printf("The original array elements are :\n");

for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA);
}

j = k;

while( j < n) {
LA[j-1] = LA[j];
j = j + 1;
}

n = n -1;

printf("The array elements after deletion :\n");

for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA);
}
}
Аноним 09/02/17 Чтв 00:13:26  929184
>>929179
Добро пожаловать в клуб.
Аноним 09/02/17 Чтв 00:19:53  929189
>>929110
> Почему многопоточность до сих не входит в стандарт языка?
Потому что уже 6 лет как входит.

>>929174
> А они нет.
В Си по умолчанию есть кэширование stdout. Возможно, стоит узнать о setvbuf и указать буфер побольше?

>>929179
Менять размер массива нельзя. В коде просто вводится САМООГРАНИЧЕНИЕ на количество элементов в массиве. В памяти по-прежнему лежит 5 интов, но последний цикл читает только до n, который равен 4.

> Как можно вызвать LA[5]
Никак, при n = 5 тело первого цикла уже не выполняется, т.к., n < 5 ложно. То же и при n = 4 во втором цикле.
Аноним 09/02/17 Чтв 00:20:58  929190
>>929189
> т.к., n < 5 ложно
i < n (т.е., i < 5)
Аноним 09/02/17 Чтв 00:23:08  929193
480full-red-hea[...].jpg (18Кб, 480x270)
>>929179
>>929189
>>929184
Блядь, не тот пример скопипастил, вот это имелось ввиду:

#include <stdio.h>

main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;

printf("The original array elements are :\n");

for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA);
}

n = n + 1;

while( j >= k) {
LA[j+1] = LA[j];
j = j - 1;
}

LA[k] = item;

printf("The array elements after insertion :\n");

for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA);
}
}
Аноним 09/02/17 Чтв 00:25:12  929195
image.png (5Кб, 303x335)
>>929193
Вот вывод:
Аноним 09/02/17 Чтв 00:34:03  929205
>>929179
> Анон, этот пример ломает мне мозг
А что, если я скажу тебе что массив это ЕБАНЫЙ МАКРОС?
http://ideone.com/YFLDAa
Аноним 09/02/17 Чтв 00:34:31  929206
>>929193
Закопай это. И автора примера рядом закопай, потому что так делать нельзя, ты пидарасишь стек.
Аноним 09/02/17 Чтв 00:35:29  929209
>>929193
>printf("LA[%d] = %d \n", i, LA);
Шта? Как это может вывести значение элемента массива, когда здесь должно быть выведено значение указателя LA?
Аноним 09/02/17 Чтв 00:35:34  929210
>>929124
А ты слышал о UTF-8?
Аноним 09/02/17 Чтв 00:36:04  929211
>>929209
У макаки спроси.
Аноним 09/02/17 Чтв 00:36:06  929212
>>929143
Nano, a лучше божественный sandy.
Аноним 09/02/17 Чтв 00:36:07  929213
>>929210
да
Аноним 09/02/17 Чтв 00:39:15  929215
>>929210
Первые 128 символов UTF-8 скопированы из ASCII. Мало того, эти символы не встречаются в continuation bytes UTF-8, поэтому при парсинге чисел знать про UTF-8 совершенно незачем.
Аноним 09/02/17 Чтв 00:45:18  929223
>>929215
>128
127
Алсо, для индексации символов приходится перебирать всю строку с начала. Как это сделать более лучше? Есть либы, где строка индексируется блоками, чтобы хоть не с начала перебирать?
Dmitry 09/02/17 Чтв 00:47:21  929226
>>929215
Спс, я посмотрел как это делается, там -'\0' делается, ну не такая хуйня как свитч по крайней мере.
Туго в сишке без ассинхронного выполнения, Iterators, Generators, Promises,callback functions, Destructuring, Coercing, strings, вот когда все это завезут сишка вернет былую величь.
Хорошо хоть в FB и OOP кое-как можно.
Dmitry 09/02/17 Чтв 00:48:08  929228
>>929223
Указатель итерируй.
Аноним 09/02/17 Чтв 00:51:42  929231
>>929226
Асинхронность в сишке запилили очень давно. Либа State Threads, например.
Dmitry 09/02/17 Чтв 01:01:18  929238
>>929231
А вообще имеет ли смысл использовать асинхронность вместо многопоточности, при условии что ОС может в многопоточность?
Как оно в железе происходит, если я на кнопку должен нажать процессор ждет сигнала или все время проверяет в каком состоянии кнопка?
Аноним 09/02/17 Чтв 01:04:32  929241
>>929238
Имеет, если программируешь прокси/лоад-баланцырь. В остальных случаях значимость сильно преувеличена, поскольку ботлнек как правило в других местах.
Аноним 09/02/17 Чтв 01:06:40  929242
>>929223
>127
128

>>929238
ракая яичек тебе, кстати.
Аноним 09/02/17 Чтв 01:15:14  929247
>>929238
>асинхронность вместо многопоточности
Это не взаимозаменяемые понятия?
Аноним 09/02/17 Чтв 01:21:44  929251
>>929247
Ну, тут целых три понятия на самом деле:
1) потоки, поддерживаемые API ОС типа posix threads
2) искусственные потоки, которые типа быстрее и легче, но на самом деле только в очень частных случаях
3) ну и асинхронность, собственно. Асинхронность в сях есть изначально, поскольку это не вопрос языка даже.
Аноним 09/02/17 Чтв 01:26:24  929254
>>929251
асинхронность это же просто общее понятие, которое обозначает недетерминированное выполнение кода, под которое попадают и треды, и параллельные процессы
Dmitry 09/02/17 Чтв 01:30:52  929257
>>929254
Я под асинхронностью имел в виду асинхронность при том что поток один.
Вот например у меня кусок кода который выполняется 4 секунды, после этого я вызываю асинхронную функцию которой передаю строку и цифру, вот все выполнилось но програма не закрылась и на 5 секунду выводит строку.
Аноним 09/02/17 Чтв 01:31:19  929260
>>929254
Вообще да, но есть асинхронность с коллбэками/сигналами, а есть асинхронность с потоками - это уже другое. Отдельного термина для асинхронности без потоков вроде нет. То есть асинхронность бывает разная.
Аноним 09/02/17 Чтв 01:31:51  929262
>>929223
128. С 0 по 127 включительно.

> Есть либы, где строка индексируется блоками
Нужен произвольный доступ - не усложняй себе жизнь, декодируй до char32_t. По необходимости потом обратно закодируешь.
Аноним 09/02/17 Чтв 01:33:07  929264
>>929257
В сях это можно и очень давно. Так давно, что все уже об этом забыли, тем более, что действительно нужно это бывает в очень частных случаях.
Dmitry 09/02/17 Чтв 01:34:24  929265
>>929264
А в ECMAScript так и живут.
Аноним 09/02/17 Чтв 01:37:42  929267
>>929264
>Так давно, что все уже об этом забыли
так напомни
Аноним 09/02/17 Чтв 01:42:14  929269
>>929267
NSPR, ST, Apple там что-то сделал тоже.
Аноним 09/02/17 Чтв 01:43:58  929271
Умиляет этот шизик-вниманиеблядь из /s. Прикатывается сюда раз в три месяца, засирает тред нескончаемым потоком кретинских вопросов и не менее кретинских умозаключений, закономерно получает залуп на воротник и укатывается обратно, до следующего раза.
Dmitry 09/02/17 Чтв 01:47:26  929272
>>929269
Мне сказали почитать книжку про программирование для POSIX/UNIX/GNU посоветуйте годноты?
Я пока не собираюсь професионально на сях писать, но хочу сделать себе удобный примитивный оконный менеджер для Wayland, и починить некоторые кривые продукты sic sandy. А еще собираюсь после жаваскрипта и вебасм взятся за Goпарашу, а там С-шные вставки могут понадобится.
Dmitry 09/02/17 Чтв 01:48:00  929273
>>929271
Василий это ты?
Аноним 09/02/17 Чтв 01:48:42  929274
>>929272
linux system programming
Аноним 09/02/17 Чтв 01:49:30  929275
>>929272
Ричард Стивенс, «Программирование UNIX».
Аноним 09/02/17 Чтв 03:59:46  929313
blob (928Кб, 800x733)
>>929206
Да как это вообще может быть?! Почему нет ошибки "Array index error - max exceeded" или что-то подобное?!
Почему он залезает в стек? В книжках и в гугле везде написано, что если инициализация массива такова:
int LA[] = {1,3,5,7,8};
то создается массив размером только с количество элементов в скобочках.
Что за пиздец?
Аноним 09/02/17 Чтв 04:34:23  929318
>>929313
> Почему нет ошибки "Array index error - max exceeded" или что-то подобное?!
Потому что это Си. Границы контролируешь ты сам. Или не контролируешь, но если вдруг вылезешь за границы, может произойти что угодно. На самом деле, в gcc/clang есть -fsanitize=address для ловли подобных багов, но лучше изначально стараться их не допускать.

> Почему он залезает в стек?
Это не он, это ты залезаешь в стек.

> создается массив размером только с количество элементов в скобочках
Да, создается массив фиксированного размера. Хочешь динамически расширяемый - тебе дали malloc/realloc из stdlib.h, городи что хочешь.
Аноним 09/02/17 Чтв 04:46:49  929320
>>929318
То есть это от компилятора зависит?
Аноним 09/02/17 Чтв 07:49:56  929340
Screenshot20170[...].png (160Кб, 1080x1920)
>>929273
Что, простите? Я вас не слышу.
Аноним 09/02/17 Чтв 08:04:21  929341
>>929320
Нет. Опция, про которую я говорю - отладочная. Она жрет память как не в себя, да и вообще в целом тормозит. Если хочешь, чтобы за тебя что-то контролировали, выбери какой-нибудь другой язык. Си хорош как раз тем, что не лезет к тебе со своими ценными мнениями, а просто делает, что сказано. Даже если сказано что-то странное.
Аноним 09/02/17 Чтв 08:32:03  929343
>>929071
Но зачем мне текстовы рндактор, если я спрашиваю немного о другом?
Я так понимаю вариантов больше нет.
Спасибо тебе, агон:3
Dmitry 09/02/17 Чтв 09:01:13  929347
>>929343
GNU Make, Cmake (Коляска), любой текстовый редактор, GCC/Clang
Аноним 09/02/17 Чтв 09:17:40  929350
>>929341
> Си хорош как раз тем, что не лезет к тебе со своими ценными мнениями, а просто делает, что сказано. Даже если сказано что-то странное.
> хорош
Но ведь именно поэтому в любой программе на си миллионы дыр, которые приходится фиксить десятилетиями.
Аноним 09/02/17 Чтв 09:21:15  929351
>>929350
Ну вот PHP сам управляет памятью и контролирует границы массивов, но почему-то у нас полный веб дырявых скриптов. А все потому, что проблема не только в инструменте, а в людях.
Аноним 09/02/17 Чтв 09:26:53  929353
>>929351
В похапе не переполнения, а скл-запросы строками и тому подобная дичь. То есть он такое же говно но по другой причине.
Dmitry 09/02/17 Чтв 14:22:45  929438
>>929353
Сишка пережила пехопе. И переживет все остальное. Это отличный портабельный язык, простой без этих ваших хуе-мое.
Правда настораживает что многое на плюсы переписали, говорят что проэкты говнистее стали, хотя я хз.
Аноним 09/02/17 Чтв 15:34:20  929488
>>928505
А нельзя в сишке какой-нибудь конструктор или деструктор запилить? Или деобъявитель переменных, который память изпод-них обнуляет?
Аноним 09/02/17 Чтв 15:42:49  929494
>>929488
$ man malloc(), free, calloc,recalloc.
Дальше сам разберешься.

Вопрос почему в сишке нельзя возвратить функцию из функции которая возвращает функцию? Или передавать функцие функцию при вызове(ой, может быть это можно).
И какого хера такое пытаются использовать вообще в жс и в хацкеле насколько знаю?
Аноним 09/02/17 Чтв 15:50:29  929501
>>929488
>деструктор запилить? Или деобъявитель переменных, который память изпод-них обнуляет?
http://echorand.me/site/notes/articles/c_cleanup/cleanup_attribute_c.html
Аноним 09/02/17 Чтв 15:56:10  929508
>>929494
В Сишке можно возвратить функцию из функции, которая взвращяет другую функцию, хотя для этого придётся со структурами покарпеть. И вроде такая хуерга называется ООП с огромным количеством родительских и дочерьних классов. А когда весь код написан по сути одними функциями, которые иногда абсолютно магическим образом работают, то такой стиль программированния называется функциональным. Сюда нужно для этого хоскеллистов подвезти, чтобы они за функциональщину раскидали.
Аноним 09/02/17 Чтв 16:03:12  929510
>>929494
Передавай и возвращай указатели на функции, кто тебе мешает.
Аноним 09/02/17 Чтв 16:05:52  929512
>>929508
бладжд, забыл добавить, что из всех функций, сколько бы ты их рекурсивно не вызывал main никогда рекурсивно не вызывается, иначе пиздос памяти и стеку.
Dmitry 09/02/17 Чтв 16:20:07  929525
>>929508
Функциональный стиль прост - один ввод - один вывод, функция не должна нихера делать, только возвращать значение, функция должна иметь только один аргумент чтобы лекго принимать результат другой функции.
Получается очень элегантный и минималистичный код, это продуктивно, легко дебажить, тяжело скатить код в говно. Но минус такого подхода что функции состоят из других функций а те еще из одних, в джава скрипте для каждой функции создается свой scope, execution context, в общем переменные и все все, и памяти жрет больше и работает дольше, ибо надо вызывать кучу других функций, в сишке хоть оверхед не так велик, но в императивном стиле более производительно пишется, хоть приходится повторять одно и тоже много раз в коде.
Аноним 09/02/17 Чтв 16:27:02  929528
>>929525
В итоге как люди бежали от спагетти кода с кучей "goto" так к функциональщине и прибежали. Всё-таки "компек" это не абстрактная машина а вполне себе рабочий аппарат, который что-то где-то да хранит и иногда всё-таки нужно в рукопашку контроллить данные и не пускать их на функциональный самотёк.
Аноним 09/02/17 Чтв 16:27:25  929529
>>929350
>>929341

Но ведь невозможно написать проект на несколько сотен тысяч строк, и не допустить такую маленькую ошибку! Это же дебажный ад, неужели ворнинг какой-нибудь не придумали, 2017 же на дворе.
Аноним 09/02/17 Чтв 16:38:25  929538
>>929525
Вы прослушали изложение функционального программирования в изложении JS-довена.
>>929528
Ещё один "эксперт".
Аноним 09/02/17 Чтв 16:38:49  929541
>>929538
> изложение в представлении
Dmitry 09/02/17 Чтв 16:42:38  929545
>>929529
Ворнингов хватает еще в компиляторе, их надо убирать полностью, есть еще и линтеры для сей насколько знаю, но опеншорш только один в генту репе нашел. Есть GDB и еще куча инструментов для отладки и дебажки, с - простой язык, в нем легко находятся косяки.
>>929528
готу уже не юзабелен, есть же циклы, свитчи, хотя в некоторых случаях может пригодится, но обычно природа задачи такова что не нужно прыгать на произвольную строку.
Функциональное решение по крайней мере может быть лучше чем OOP, а если не юзать функции внутри функций то и с производительностью особо не соснешь. FP это еще куда не шло, но OOP с инкапсуляцией и наследованиями,this и прочей фигней куда прожорливее, и часто костыльнее функционального кода.
Аноним 09/02/17 Чтв 17:27:31  929585
>>929545
>линтеры для сей насколько знаю, но опеншорш только один в генту репе нашел
Я настолько нихуя не понял в этой фразе, что даже внезапно проиграл.
Аноним 09/02/17 Чтв 17:30:47  929588
>>929545
>Ворнингов хватает еще в компиляторе
Ну, обсуждение и началось с примера, где вызов элемента массива залезает за свою границу в стек, а компилятору - похуй. Потому что, типа, "если программист так сказал - значит надо!", в то время как ясно что это очевидная ошибка.
Аноним 09/02/17 Чтв 17:33:27  929592
>>929205
>А что, если я скажу тебе что массив это ЕБАНЫЙ МАКРОС?
Пруф неси, маня.
Аноним 09/02/17 Чтв 17:34:51  929595
>>929585
видать линтеры это какие-то багоуловители, которые фиксят предупреждения компилятора (ворнинги). Есть они для Си в закрытых исходниках. А в открытых исходниках были найдены в дистрибьютиве линукс Генту в одном их репозиториев. Но для отладки (дебагирования) используетя инстурмент GDB, который автоматически встроен в линукс-дистрибьютивы.
Аноним 09/02/17 Чтв 17:36:54  929601
>>929585
> Ebal_Ee_Ruka.h
Аноним 09/02/17 Чтв 21:41:31  929743
>>929313
> Да как это вообще может быть?! Почему нет ошибки "Array index error - max exceeded" или что-то подобное?!
Потому что массива на самом деле нет, есть только указатель. А все эти квадратные скобочки, индексы - просто сахар.
Аноним 09/02/17 Чтв 21:43:50  929744
>>929343
> Но зачем мне текстовы рндактор, если я спрашиваю немного о другом?
так уточни, что тебе нужно
Аноним 09/02/17 Чтв 21:46:26  929751
>>929585
не обращай внимание, скоро ты перестанешь вообще его понимать и он растворится между постами.
Аноним 09/02/17 Чтв 21:53:50  929760
ладно, давайте вернёмся к старому доброму. как быть с байтами в структуре, которые дополняются до кратности к выравниванию, конкретно в конце структуры. я правильно понимаю что их значение не определено и компилятор сделает код которые не будет изменять эти байты? читать то наверное будет. короче, напомните раздел в стандарте, хотелось бы нормально про компоновку и выравнивание прочесть, например ещё, с какой стороны будут добавлены байты выравнивания - это же определено? хуйцов да?
Аноним 09/02/17 Чтв 21:56:03  929762
>>929743
Массивы существуют, имеют тип "array of чего-то там". Для обращений через имя массива вполне реально отслеживать границы с минимальными усилиями со стороны компилятора. Такое даже запиливают периодически в разных компиляторах. Другое дело, что это нахуй никому не нужно. Для контроля границ можно написать явный код или перекатиться на Java/C#.
Аноним 09/02/17 Чтв 22:36:39  929794
>>929760
> с какой стороны будут добавлены байты выравнивания
к границе слова, епт
Аноним 09/02/17 Чтв 22:41:47  929804
>>929794
гениально ёпта. а если внутри этих байтов-выравнивания поместить байт-значение, куда его распидорасит?
Аноним 09/02/17 Чтв 22:43:53  929811
>>929760
> я правильно понимаю что их значение не определено
Да, значение не определено и может меняться при присваивании значений структуре или членам структуры.

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

Так все и делают: ищется член структуры с максимальным "натуральным" (требуемым) выравниванием, это выравнивание используют, как выравнивание самой структуры; пишется первый член структуры; втыкается выравнивание под следующий член, пишется следующий член, и т. д., пока члены структуры не кончатся; в конце втыкается выравнивание размера самой структуры. Если с помощью прагм или атрибутов выравнивание ограничено (типа pack(1)), то компилятор втыкает выравнивание не больше указанного. Есть еще alignas/alignof в C11, он меняет "натуральное" выравнивание типа на указанное.

В стандарте это все разбросано, читай 6.2 и 6.7 (C11) целиком.
Аноним 10/02/17 Птн 03:06:09  929972
warning.PNG (49Кб, 1442x337)
Вопрос про студию. Пикрилейтед.
Как мне сделать фильтрацию ворнингов, чтобы показывались только файлы из моего проекта/солюшена и не показывались ворнинги на файлы из стандартной библиотеки и прочего кала?
Аноним 10/02/17 Птн 05:05:43  929982
>>929972
Ты можешь отключать варнинги через прагму до инклуда и включать обратно после. Других идей нет.
https://msdn.microsoft.com/ru-ru/library/2c8f766e.aspx
Аноним 10/02/17 Птн 07:10:46  929991
>>929760
tproger.ru/translations/art-of-structure-packing/
Тут чутка расписано.
зануда-кун 10/02/17 Птн 08:06:01  929999
Сап, анон. Пишет вкатывающийся линуксоид. Вроде тредом чутка промахнулся, но си на линуксе неслабо подвязана, так как в своё время одно писалось для другого и наоборот. И знаешь, что? У меня пиздец как горит от того, что все сокращения утилит в линухе хуй пойми как названы. Как я, блять, (нубас в английском) должен догадаться нахуй, что ls - это лист данной директории? Как я блять должен сразу же догадаться, что cd - это "change directory"? Как я блять, должен догадаться, что ln - это "линк" для ссылок? Особенно пиздец горит, когда си-кодеры, да и вообще все кодеры точно также называют свои переменные. Как я, нахуй, по двум буквам должен, блять, догадаться, что значит данная команда или утилита? Для мен ls недавно ассоциировалось с low skill`ом. Как мне понимать эту ёбанную семантику команд?
Аноним 10/02/17 Птн 08:09:08  930000
>>929999
Вот у верстальщиков теги неплохо расписаны, понятно, хотя теги src и img тоже иногда будоражат моё воображение и заставляют представлять какие-угодно слова кроме image и source.
Аноним 10/02/17 Птн 10:42:28  930054
>>929999
cd, mkdir - тоже что и в окнах. 2 курс технаря.
Аноним 10/02/17 Птн 10:56:57  930065
>>929999
>Как мне понимать эту ёбанную семантику команд?
Почитай posix. Как ты linux используешь, не понимая базы?
Аноним 10/02/17 Птн 10:57:22  930066
>>929999
Учить их.
Аноним 10/02/17 Птн 11:58:11  930086
Аноны, что почитать?
Прочел(пролистал) первую книгу из шапеи и понял, что 80% всего я и так знаю/использовал. Есть какая книга где все расписано более углубленно, больше всяких фич показано и т.д.?
Аноним 10/02/17 Птн 12:14:37  930094
>>930086
Попробуй http://c-faq.com/
Аноним 10/02/17 Птн 13:17:24  930115
>>930086
Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition"
Аноним 10/02/17 Птн 14:40:55  930151
>>930094
Эта доброта на русском есть?

мимо
Аноним 10/02/17 Птн 15:50:32  930187
14496551580872.png (85Кб, 552x552)
анон выручай. я полный down
задача на "счастливый билет"

void main()
{
int i, j, a, cnt=0;
unsigned int k, a[10], b, n;
printf("\nVvedite znachenie k=");
scanf("%d", &k);

while (k!=0)
{
a[cnt]=k%10;
k=k/10;
cnt++;
printf("a[%d]=%d", cnt, k);
}
пишу любое число и надо чтобы записал каждый разряд отдельно и посчитал длинну начального числа
a[0]=...
a[1]=... и т.д. как это правильно записать? и у меня выдает ошибку "error: conflicting types for a"
поясните как написать правильно или алгоритм решения.
Аноним 10/02/17 Птн 15:58:51  930189
>>930151
Сомневаюсь.
Аноним 10/02/17 Птн 16:11:06  930200
>>929313
Если ты немного еще RTFM K&R, то увидишь, что arr - это сахарок. На самом деле доступ к элементам массива осуществляется через указатель на начало массива плюс смещение. Например:
int arr = ptr_to_arr + i*sizeof(int).
Как видишь, даже если у тебя массив из двух элементов, ты можешь получить доступ хоть к arr[9000].

>>929529
>Но ведь невозможно написать проект на несколько сотен тысяч строк, и не допустить такую маленькую ошибку! Это же дебажный ад
Естественно, невозможно. 99% кода на сишечке - баг на баге сидит. Если ты залезешь в чужую область памяти и крашнешь что-то - считай что повезло, хуже когда происходят трудноуловимые изменения. На С стоит писать оптимизацию каких-то нагруженных участков, для больших проектов есть свои инструменты.
Аноним 10/02/17 Птн 16:35:21  930219
>>930200
> int arr = ptr_to_arr + i*sizeof(int).
Во-первых, ты забыл разыменовать. Во-вторых, не надо никаких sizeof(int) помноженных на величину смещения. Как-то так: http://ideone.com/J7TTQj
Аноним 10/02/17 Птн 16:46:56  930222
>>930219
>int
>main(void)
Это сейчас так модно писать?
Аноним 10/02/17 Птн 16:51:08  930225
>>930219
Пиздец, это тоже работает:
>int arr[] = { 2, 8, 2 };
>printf("%i\n", (arr + 500));

И это:
>int arr[] = { 2, 8, 2 };
>printf("%i\n",
(arr - 100));

Как вообще организовать правильный безопасный доступ к элементам массива? Через гиту и зиту?
Аноним 10/02/17 Птн 16:57:02  930230
>>930222
так предписывает С88 стандарт писать. Современные-то компиляторы могут и без войда просто пустые скобки, как например все "скиллованные" обожают писать.
Аноним 10/02/17 Птн 16:58:45  930232
>>930225
>Си
>безопасный
Аноним 10/02/17 Птн 17:13:59  930240
>>930230
>Современные-то компиляторы
ОЛДФАГ ДОХУЯ?
Аноним 10/02/17 Птн 17:14:26  930241
40243.jpg (64Кб, 529x647)
>>930232
Аноним 10/02/17 Птн 17:19:35  930242
>>930187
3: int i,j a, cnt=0
4: unsigned int k, a[10],b,n
> у тебя а массив или просто переменная? Убери все переменные, которые в коде не используешь.
Аноним 10/02/17 Птн 17:24:32  930245
>>930240
Да не. Я просто помню, что когда искал мануалы по си в инете (вот не надо меня камнями закидывать только). Наткнулся на ман какого-то ебанутого додика, который хуй пойми как писал. А потом я полез в гугл про стандарты читать и, оказывается, что тот додик писал на 88 стандарте, после ахуевания я ещё вдобавок узнал, что у GCC есть опция -std=c99 или в любом другом стандарте конпелить.
Аноним 10/02/17 Птн 17:31:05  930251
>>930245
> Современные-то компиляторы могут и без войда просто пустые скобки
Современные как раз не могут. В современных стандартах сказано, что void для функций без аргументов обязателен, а использующие старый синтаксис официально объявлены пидорами. С пустыми скобками пишут в крестах.
Аноним 10/02/17 Птн 17:33:53  930252
>>930222
энтер неспецом прожал, не было никогда что ли?
Аноним 10/02/17 Птн 17:37:28  930255
>>930251
Я так иногда на GCC делал, когда меня мой парень в это время в жоп драл. Ну, он же вроде часто обновляется и в новых обновах это ведь не выпилили. Я про другие толком не слышал. Разве что вот подумываю какой-нибудь интерпритатор запилить. Есть годнота на примете?
Аноним 10/02/17 Птн 17:47:41  930260
>>930251
А многие компиляторы для сей могут плюсы конпелить? Почему-то везде плюсы ассоциируются с няшной.
Аноним 10/02/17 Птн 18:05:42  930266
>>930252
А красиво же получилось!
Аноним 10/02/17 Птн 18:30:52  930281
>>930222
переносом строки имя функции отделяют от типа, чтобы можно было проще грепать, где функция определена
Аноним 10/02/17 Птн 18:31:52  930284
>>930225
>Как вообще организовать правильный безопасный доступ к элементам массива?
Тебе сначала нужно придумать эти массивы, т.к. в C их нету.
Аноним 10/02/17 Птн 20:05:02  930338
Вот такой пиздос всё ещё чистый Ц или уже кресты?

struct bulletObject{
int id;
float r, g, b;
bool hit;
btRigidBody body;
bulletObject(btRigidBody
b, int i, float r0, float g0, float b0) : body(b), id(i), r(r0), g(g0), b(b0), hit(false) {}
};


Аноним 10/02/17 Птн 20:11:56  930342
>>930338
Кресты. В С ':' используется только в тернарном операторе.
Аноним 10/02/17 Птн 20:43:15  930363
>>930342
Спасибо!
В этом тхреаде преведствуются вопросы по крестам? У меня их много, ибо только вкатываюсь
Их собственный тред мёртв.
Аноним 10/02/17 Птн 20:59:53  930371
>>930363
>В этом тхреаде преведствуются вопросы по крестам?
нет
>Их собственный тред мёртв.
какая ирония, если вспомнить, как часто хоронили си
Аноним 10/02/17 Птн 21:21:35  930378
>>929529
>Это же дебажный ад, неужели ворнинг какой-нибудь не придумали, 2017 же на дворе.
Придумали миллион языков без прямого доступа к памяти, например.
Аноним 10/02/17 Птн 21:26:16  930381
>>929438
> портабельный язык
Сколько там размер int?
Аноним 10/02/17 Птн 21:28:16  930382
>>930381
Если нужен фиксированный размер, есть (u)int(N)_t. А если фиксировать размер int, окажется, что на 8-битном контроллере компилится не код, а говно, и на 64-битном процессоре не код, а говно. А уж что скомпилится на 24-битном DSP, так и сказать страшно.
Аноним 10/02/17 Птн 21:35:30  930385
>>930382
Но ведь там и так компилится говно, баги переполнения гроб кладбище на ровном месте, везде приходится расставлять костыли под миллион платформ. Поэтому во всех современных языках фиксированные размеры.
Аноним 10/02/17 Птн 21:50:30  930398
Как отказаться от глобальных переменных на неск.модулей и связанными с ними extern?
Не тралю ниразу, просто припекло
Аноним 10/02/17 Птн 21:59:32  930404
>>930284
Ну ок, а дальше что?
Как С-бояре элеминируют ошибки доступа куда не надо?
Какую-то оберточную функцию надо прикручивать, а в ней уже проверки границ? Подкинь таких если они есть.
Не хочу велосипеды писать.
Аноним 10/02/17 Птн 22:05:35  930409
>>930404
просто пиши тесты.
Аноним 10/02/17 Птн 22:09:44  930411
>>930398
Прежде чем отказываться, обоснуй причины. То, что так сказал дядя из умной книжки - не причина.

>>930404
> Как С-бояре элеминируют ошибки доступа куда не надо?
Помнят о том, что не нужно лезть, куда не надо. Какие блять оберточные функции? Нахуй тебе си, если ты в индексах ошибаешься? В си еще undefined behavior есть, его много, и он страшный. И его не проверишь в большистве случаев, надо знать и писать правильно. Поэтому иди ка ты и пиши на Java, там за тебя все проверят и попку подотрут.
Аноним 10/02/17 Птн 22:10:04  930412
>>930404
>Как С-бояре элеминируют ошибки доступа куда не надо?
Пишут код, который этого не делает.
Аноним 10/02/17 Птн 22:13:05  930416
>>930411
Ебучий ассемблер без задач.
Аноним 10/02/17 Птн 22:23:14  930425
>>930412
Такого кода на си не существует.
Аноним 10/02/17 Птн 22:29:15  930428
>>930404
Нашел где спрашивать блядь, на сосаче.

>Many programming languages, such as C, never perform automatic bounds checking to raise speed. However, this leaves many off-by-one errors and buffer overflows uncaught. Many programmers believe these languages sacrifice too much for rapid execution.[who?] In his 1980 Turing Award lecture, C. A. R. Hoare described his experience in the design of ALGOL 60, a language that included bounds checking, saying:

"A consequence of this principle is that every occurrence of every subscript of every subscripted variable was on every occasion checked at run time against both the upper and the lower declared bounds of the array. Many years later we asked our customers whether they wished us to provide an option to switch off these checks in the interest of efficiency on production runs. Unanimously, they urged us not to—they already knew how frequently subscript errors occur on production runs where failure to detect them could be disastrous. I note with fear and horror that even in 1980, language designers and users have not learned this lesson. In any respectable branch of engineering, failure to observe such elementary precautions would have long been against the law."

Кароч.
Функции проверки границ в С нет, из-за желания повысить скорость выполнения. Если тебе эта скорость критична - готовься к пиздецу с тестировкой/сопровождением.
Если тебе на скорость похуй в разумных пределах - пиши на языке, который создавался после эпохи ферритовых накопителей.
Аноним 10/02/17 Птн 22:33:30  930430
>>930425
>Такого кода на си не существует.
откуда это могут знать мамкины кулхацкиры на сосаче?
Аноним 10/02/17 Птн 22:34:43  930432
>>930371
ЭТО ПЕРЕМОГА
Аноним 10/02/17 Птн 22:49:20  930441
>>930430
Доброе утро, даже в таких огромных проектах, как пердоликс, которые пишут самые профессиональные байтоёбы, латают дыры по 30 лет подряд.
Аноним 10/02/17 Птн 22:53:55  930448
>>930441
Доброе утро, даже в таких огромных проектах, как виндовс, которые пишут самые профессиональные ооп-шники, латают дыры по 30 лет подряд.

в пердулекс, между прочем, пишут все кому не лень, это же швабодный софт
Аноним 10/02/17 Птн 22:53:57  930449
>>930428
Но ведь память и так имеет скорость 30гб/сек, что ей будет от лишней проверки?
Аноним 10/02/17 Птн 22:54:35  930450
>>930449
а кэши?
Аноним 10/02/17 Птн 22:55:38  930453
>>930448
А что, виндовс написан на джяве? К чему ты это вскукарекнул?
Аноним 10/02/17 Птн 22:56:51  930454
>>930453
виндвос написан на крестах в большей мере, чем на си, если я не ошибаюсь
Аноним 10/02/17 Птн 22:56:54  930455
>>930453
на с++, где как-бы можно прикрутить любые проверки.
Аноним 10/02/17 Птн 22:59:12  930462
>>930449
Дело не в памяти, дело в проце - бранчи сбрасывают конвейер. К тому же, проверкой можно решить проблему с массивами, а проблема с валидацией указателей (при сохранении гибкости этих указателей) решается гораздо сложнее и дороже.

>>930454
В винде ядро на Си, интерфейс (Explorer-ы всякие) на крестах.
Аноним 10/02/17 Птн 23:00:48  930465
>>930449
такты жи процессора на это уходить будут энивей
Аноним 10/02/17 Птн 23:01:06  930467
>>930454
Вся низкоуровневая ебанина на си, к тому же кресты это такой же кусок говна, только с классами.

>>930455
А ещё можно невозбранно отстрелить себе обе ноги, так как указателей и массивов никто не отменял.
Аноним 10/02/17 Птн 23:03:51  930469
>>930467
да я не спорю, прост во попенсорсе по определению больше будет багов - это норма.

кстати, что насчёт тех слитых исходников винды, можно такое найти на торрентах, или там ничего интересного?
Аноним 10/02/17 Птн 23:06:53  930474
>>930450
А что, размер не влезет в мегабайтный кэш?

>>930465
Скажи честно, ты когда-нибудь видел программу, где боттлнеком является один лишний такт проверки, а не IO и не йоба тяжёлые вычисления?
Аноним 10/02/17 Птн 23:09:01  930477
>>930200
> arr - это сахарок.
Напиши тогда, во что раскрывается объявление массива, если это "сахарок".
Аноним 10/02/17 Птн 23:09:17  930478
>>930469
Я скачивал какие-то исходники некрошинды, но так и не нашёл им применения.
Аноним 10/02/17 Птн 23:11:41  930480
>>930474
опять начинается эта хуйня. заебись так рассуждать попивая сок у себя на x86-64 .
Аноним 10/02/17 Птн 23:17:42  930489
>>930225
>Как вообще организовать правильный безопасный доступ к элементам массива?
Просто не вылазь за границы и всё.
Аноним 10/02/17 Птн 23:18:42  930491
>>930222
>>int
>>main(void)
>Это сейчас так модно писать?
Всегда модно было.
Аноним 10/02/17 Птн 23:19:36  930493
>>930480
В каждом телефончике уже по 8 ядер и 4 гига, и джява крутится. К чему этот кукарек про скорость в 2017?
Аноним 10/02/17 Птн 23:19:42  930494
>>930381
>Сколько там размер int?
Ровно sizeof(int)
Аноним 10/02/17 Птн 23:21:05  930496
>>930489
вообще, какая-то надуманная проблема. после того как я начал ставить assert'ы на каждый входящий в функцию аргумент, давно уже не помню таких ошибок.

>>930493
ясн.
Аноним 10/02/17 Птн 23:24:22  930501
>>930496
> начал ставить assert'ы на каждый входящий в функцию аргумент
Пизда скорости теперь, проверки же любой Xeon на лопатки кладут.
Аноним 10/02/17 Птн 23:25:04  930502
>>930501
assert-ы удаляются при определении NDEBUG
Аноним 10/02/17 Птн 23:26:15  930503
>>930502
ну и зачем ты ему сказал? дал бы ему ещё потралировать).
Аноним 10/02/17 Птн 23:29:26  930509
С libldap кто-то работал?
Аноним 10/02/17 Птн 23:29:44  930510
>>930502
Защищённый дебаг и дырявый продакшон, охуенно придумал.
Аноним 10/02/17 Птн 23:45:08  930530
>>930342
>В С ':' используется только в тернарном операторе.
А как же битовые поля в структурах? На самом деле я ни разу не видел, чтобы их кто-то использовал.
Аноним 10/02/17 Птн 23:50:45  930532
>>930510
поддвачну, однако
Аноним 10/02/17 Птн 23:54:07  930536
>>930530
>битовые поля
в хедерах для микроконтролёров, ибо имеет смысл
Аноним 11/02/17 Суб 01:31:53  930615
>>930474
>Скажи честно, ты когда-нибудь видел программу, где боттлнеком является один лишний такт проверки, а не IO и не йоба тяжёлые вычисления?

Что за коммент из 2017?
Мы живем духом СТАРОЙ ШКОЛЫ!! С88!!
Аноним 11/02/17 Суб 01:46:48  930628
>>930615
А лишний регистр не жалко? Их не так много у x86.
Аноним 11/02/17 Суб 01:53:53  930636
Ебанаты сраные, сперва напишите что-то типа postgresql на своей сраной гошечке или расте, а потом кукарекайте про проверки индексов в массиве, ок? Пока вы даже gui нормально не смогли запилить. И с дженериками обосрались, хотя промежуточный вариант без фанатизма не лишним был бы.
Аноним 11/02/17 Суб 02:35:03  930657
>>930260
Ни один не может, так как в сей инклюды иначе называются чем у сегодняшних плюсов, а вот старый код на плюсах можно собрать, если не юзать там ни одного костыля с плюсов.
Вообще плюсы это мэм, забудь за это говно, сишка пережила пацкаль, фортран, раст, ада, плюсы тоже скоро в небытие уйдут, сколько можно говно вилкой чистить.
Dmitry 11/02/17 Суб 02:36:01  930659
>>930636
Гуи все и так на сишечке написаны, что сказать хотел то?
Аноним 11/02/17 Суб 02:52:12  930666
>>930474
>Скажи честно, ты когда-нибудь видел программу, где боттлнеком является один лишний такт проверки
Да, называется ядро ОС. Представь себе, если в какой-нибудь популярный syscall надобавлять кучу проверок, как твоя система разом залагает.
Аноним 11/02/17 Суб 02:52:51  930667
>>930477
В глаза долбишься? >>930219
Аноним 11/02/17 Суб 03:03:01  930672
>>930477
>объявление массива
Сорян, это я долблюсь в глаза. Пропустил, что ты про объявления спрашиваешь.

>>930667-кун
Аноним 11/02/17 Суб 03:04:50  930674
>>930530
Я в ядре Linux их наблюдал и даже в w3m.
Аноним 11/02/17 Суб 10:33:28  930720
>>930657
Блять, вот честно, я не знаю как люди говно умудряются обеими руками наворачивать, серьёзно. Если существуют на свете русские рэперы, то и существуют плюсы для таких же людей. Есть люди, которым ты часами можешь объяснять, что то, что они делают хуйня полнейшая, дак они тебя пошлют и ебанатом назовут. С крестописаками такая же ситуация, вроде бы.
Аноним 11/02/17 Суб 10:51:09  930727
>>930636
Cassandra вообще на джяве
Аноним 11/02/17 Суб 12:14:55  930757
ZycNEZCS2ZA.jpg (64Кб, 618x486)
Ритчи дал им инструмент, чтобы в обход сегфоултов можно было из одного кода вторгаться в другой, а они ругаются, плюются и пытаются это "обезопасить". Даже мамкины кулхацеры уже не те нынче. А раньше вот трава зеленее была.
>>929313
Аноним 11/02/17 Суб 12:21:36  930761
>>930636
>с дженериками
void* не осилил?
Аноним 11/02/17 Суб 12:48:25  930765
>>930432
В треде украинские погромисты! Всем в АТО!
Аноним 11/02/17 Суб 12:49:58  930768
>>930363
>В этом тхреаде преведствуются вопросы по крестам?
В гугле приветствуются. Вообще 99% ответов на вопросы по крестам можно узнать из стандарта.
Аноним 11/02/17 Суб 13:57:30  930817
>>930768
>можно узнать из стандарта
книжки читать я и сам умею
Аноним 11/02/17 Суб 14:20:24  930835
>>930817
Тогда видосики смотри
Аноним 11/02/17 Суб 14:37:29  930848
Первый день вкатываюсь в программирование, нид хелп:

int d;
for (d = 0; getchar() != EOF; d++);
printf ("%d\n", d);

Должно выкатиться число букв, но не выкатывается ничего. Если вывод захуярить в цикл, то это говно будет вместе со мной считать буквы как ебанутое, 0 1 2 3 4 5 6 7 картошку ем блядь. Почему так?
Аноним 11/02/17 Суб 14:39:31  930851
>>930848
d неопределено при выходе из цикла. Во всех ЯП.
Аноним 11/02/17 Суб 14:43:39  930854
Снимок.PNG (5Кб, 541x197)
>>930851
Пример из книжки пытается меня наебать?
Аноним 11/02/17 Суб 14:48:26  930859
>>930854
пример охуенен уже самим double nc для лупа , где ловят байтики
Аноним 11/02/17 Суб 14:53:57  930867
>>930851
Ты несёшь хуйню.
>>930848
Как ты запускаешь программу? Просто в консоли или перенаправлением stdin из файла?
Аноним 11/02/17 Суб 14:55:29  930868
>>930867
>Ты несёшь хуйню.
согласен.

для EOF Ctrl+Z и ENTER

у меня работает
Аноним 11/02/17 Суб 14:59:24  930875
>>930854
Что за наркоман такое писал?

#include <stdio.h>

void main()
{
    int c, charCount;
    charCount = 0;
    c = getchar();
    while (c != EOF && c != '\n')
    {
        charCount++;
        c = getchar();
    }
    printf("Char count: %d\n", charCount);
}
Аноним 11/02/17 Суб 15:04:43  930879
>>930854
после ввода буковок жми на enter
Аноним 11/02/17 Суб 15:12:17  930888
>>930867
Я поставил кодлайт, через неё и запускаю, все остальные хэллоуворлды работали нормально
Аноним 11/02/17 Суб 15:13:02  930889
>>930879
...и ничего не выводится
Аноним 11/02/17 Суб 15:15:35  930891
>>930889
как ты вводишь EOF?
на шиндовс надо Ctrl+Z
на пердоликсе, вроде, Ctrl+D
Аноним 11/02/17 Суб 15:18:50  930893
>>930891
А никак, в этой книжке такого не было, надо другую найти, пожалуй
Аноним 11/02/17 Суб 15:20:03  930894
>>930893
то есть как "никак"?
Ты из цикла выйдешь лишь получив EOF
Аноним 11/02/17 Суб 15:27:08  930896
>>930893
1. вводишь буквы, потом enter
2. жмёшь Ctrl+Z (Ctrl+D на пердоликсе) и опять enter
3. PROFIT
Аноним 11/02/17 Суб 15:28:20  930897
Кому-нибудь нужна эта годнота?
Аноним 11/02/17 Суб 15:28:38  930898
>>930879
ENTER выдает символ '\n', нужно делать проверку еще и на него, а не только на EOF.
Аноним 11/02/17 Суб 15:31:33  930900
>>930898
ты попробовал? нет
я попробовал и на моём шиндовс без enter из цикла не выйти
И мне пофиг, почему это так
Аноним 11/02/17 Суб 15:32:08  930902
Как на си реализуется обработка пакетов низкоуровневых протоколов в зависимости от типа пакета? Пишут длинные портянки со switch-case или каким-то образом портируют паттерн Statemachine на си?
Аноним 11/02/17 Суб 15:33:47  930903
>>930894
Всё, что я знаю о программировании, было подчерпнуто мной из уроков информатики в восьмом - девятом классах и из двадцати страниц этой книги. И там ничего не было сказано про вот эту всю хурму, про комбинацию первый раз слышу
Аноним 11/02/17 Суб 15:34:39  930905
>>930896
Буду знать, спасибо
Аноним 11/02/17 Суб 15:34:50  930906
>>930900
Используй этот код: >>930875
И выходи из цикла при нажатии ENTER
Аноним 11/02/17 Суб 15:34:57  930907
>>930902
>типа пакета
уходи наркоман
Аноним 11/02/17 Суб 15:35:54  930910
>>930903
Скорее всего код откуда-нибудь из UNIX.
Аноним 11/02/17 Суб 15:38:52  930911
>>930907
Пакеты по-разному обрабатываются в зависимости от значения одного поля структуры.
Аноним 11/02/17 Суб 15:39:16  930912
>>930906
я заменил EOF на '.'

но выход только по enter
вот такая хрень с getchar под шиндовс
Аноним 11/02/17 Суб 15:40:03  930915
>>930902
на то и низкоуровневость, чтобы ипацца с байтами
Аноним 11/02/17 Суб 18:05:07  931045
>>930912
> вот такая хрень с getchar под шиндовс
stdin по умолчанию line-buffered, и не только под шиндовс. Т.е., ОС ждет ввода целой строки (т.е., до Enter или EOF) и только потом отдает сишной либе данные, и только после этого сишная либа может вернуть тебе эти данные посимвольно или как-либо еще.
Аноним 11/02/17 Суб 21:05:56  931206
>>931045
>до Enter или EOF
в случае моего шиндовс потребовался enter и после EOF (Ctrl+Z)
Аноним 11/02/17 Суб 21:11:12  931210
gally.jpg (8Кб, 159x264)
Есть клиент, который работает с UDP-сокетами. При запуске он перебирает список серверов для начальной загрузки своего списка пиров и запрашивает с каждого сервера список. Я не совсем понимаю, как выйти из функции bootstrap, которая этим занимается. В этой функции есть цикл по всем серверам. На каждой итерации выполняется PULL-запрос к серверу. Как реализовать получение UDP-пакетов с данными пиров так, чтобы после того, как пакеты в сокете кончатся, произошел переход к следующей итерации или выход из функции? Пока что функция recvfrom блокирует главный поток.
Аноним 11/02/17 Суб 21:22:28  931221
>>931210
>Пока что функция recvfrom блокирует главный поток.
google -> non-blocking sockets
Аноним 11/02/17 Суб 22:16:25  931248
>>931221
Начал читать, но все равно не понимаю, как мне выйти из функции или отправить запрос другому серверу, когда сервер закончил передавать данные. Сообщение WSAEWOULDBLOCK передается, когда в сокете нет данных, и как следствие, возникла бы блокировка. Что это дает в моем случае? Этих данных могло не быть из-за задержки, например.
Аноним 11/02/17 Суб 22:29:30  931253
>>931248
Я кодил под делфи, но функция стандартная от шиндовс: WSAAsyncSelect
переадресовывает мессаги в окно, хендлер которого дашь (даже фейковое через AllocateHWnd)

При UDP, как я понимаю, отсутствует понятие соединения. Образно говоря, ты плюёшься пакетами и в общем случае BROADCAST на 255.255.255.255 все присутствующие получат пакет в горло и при желании ответят на него.

В моем случае у меня была примочка на друине в датчиками. Я не хотел заморачиваться с определением ее айпишника, который в моей локалке всякий раз мог бы быть другим и примочек могло быть несколько. Я броадкастил из компа на 255.255.255.255 и примочка отзывалась, выдавая свой айпишник. Слала мне данные как пулемёт секунды 2-3, после чего сливалась. Решением было подкидывать ей через broadcast пустые мессаги раз в секунду.
Аноним 11/02/17 Суб 22:36:19  931255
>>931248
вот как-то так.
На Ц однописьково
http://pastebin.com/8DGjrXpX
Аноним 11/02/17 Суб 23:02:14  931273
>>931255
Короче говоря, у меня сейчас вот такой код: https://paste.ofcode.org/hSsawEu4Jrnm3BbWL8sa6c

Я нашел такой же убогий код в интернете, и у его автора цикл тоже вешался. Можно ли получить все данные с сервера, не подвесить приложение и обойтись без уродливых костылей?
Аноним 11/02/17 Суб 23:06:39  931277
>>931273
WSAAsyncSelect сделает сокет прозрачным, неблокирующим
Аноним 11/02/17 Суб 23:08:06  931278
Я тут поразмышляю, хз, есть ли тут еще аноны, которые копались в гномостеке. Можете скипнуть, если лень читать.

Когда хотелось запилить туду лист на gtk3+c (еще в 2013 году), делал себе комманд лайн тулзу, которая бы генерила классы из шаблона. Но из-за работы забил что-то вообще на все. Сейчас вот посмотрел репозиторий - у них появилась действительно фичастая для этого софтина. Но я на убунте сижу, все никак не могу арч накатить чтобы нормально подключится к разработке, ибо оно требует свежих gtk/gdk.

Ковырял вот еще осенью keepassx, который на куте, чтобы попробовать запилить ему морду на gtk. Но как оказалось, там все внутри связанность высокую имеет и пришлось бы полностью софтину перепиливать на gtkmm.

Чем бы таким заняться можно было, пока руки чешуться написать чего-нибудь гуишного?
Аноним 11/02/17 Суб 23:19:58  931282
>>931248
> как мне выйти из функции или отправить запрос другому серверу, когда сервер закончил передавать данные
С UDP ты не можешь узнать, когда сервер закончил передавать данные, если протокол не предусматривает оповещения об этом (или, например, количество пиров не передается заранее). Если у тебя так, выходи по таймауту.
Аноним 12/02/17 Вск 07:15:20  931383
Есть одна typedef структура в которой дохуища элементов. Когда я создаю этот тип, то разумеется во всех элементах мусор, а это очень плохо. В сишке есть простой способ инициализировать эти элементы? Писать отдельную функцию для этого? Как-то жирное на каждую структуру функцию выделять.
Аноним 12/02/17 Вск 08:25:55  931392
>>931383
memset всё с нули, например
конструкторы для структур появились в Ц++
Аноним 12/02/17 Вск 09:30:02  931411
>>931383
struct foo = { 0 };
Инициализирует нулем первый элемент (какой бы он ни был), забивает нулями все остальные. По сути тот же memset.
Ну или инициализируй сразу нормально:
struct foo = { .a = 1, .b = 2.0f, .c = "hello" };
Или сделай все же функцию для инициализации, скажи, что она inline (хотя даже если не скажешь, компиляторы мелкие функции весьма неплохо с -O3 -flto инлайнят).
Аноним 12/02/17 Вск 11:13:48  931443
>>931383
>Как-то жирное на каждую структуру функцию выделять
велком ту ооп
Аноним 12/02/17 Вск 13:22:10  931525
>>931278
Install Gentoo. Arch if laptop. Fedora Rawhide if you too stupid to install Arch.
Аноним 12/02/17 Вск 13:47:24  931535
>>931282
>Если у тебя так, выходи по таймауту
Пойдет ли такое использование таймаутов, или можно сделать лучше?

https://ideone.com/hiiXzL
Аноним 12/02/17 Вск 14:42:21  931547
>>931535
IMHO застрянешь в лупе на recvfrom
Аноним 12/02/17 Вск 15:06:19  931555
>>931525
почему для лэптопа арч?
Аноним 12/02/17 Вск 15:27:21  931575
Пробую одну библиотеку а там дефайны пиздец длинные. Выглядят они примерно так: OCHE_DLINNY_DEFINE_NAME.
Я бы хотел сократить до: ODD_NAME. Делаю: #define ODD OCHE_DLINNY_DEFINE и после этого пишу ODD_NAME, но нихуя не работает. ЧЯДНТ?
Аноним 12/02/17 Вск 15:30:42  931576
>>931575
>но нихуя не работает
Неплохой лог. Но бабка Ванга улетела в Тайланд.
Аноним 12/02/17 Вск 15:38:44  931586
>>931576
Ну блядь, грит что ODD_NAME ундекляред, фёрст юз ин зыс функшин понимаешь ли, что тут ещё сказать.
Аноним 12/02/17 Вск 15:38:55  931587
Посоны, вопрос по крестам, но т.к они не хотят пилить перекот - спрошу тут:
Что происходит если 2 длл-ки экспортят одинаковый символ? Или например когда у нас в exe файле уже такой символ есть, но при загрузке и в длл-ке есть. Какой из двух будет вызываться после рантайм линковки?
Аноним 12/02/17 Вск 15:39:41  931588
Есть ли смысл пилить нативное приложение с гуи под винду на си?
Или лучше выбрать реализацию на другом яп?
Аноним 12/02/17 Вск 16:10:41  931608
>>931588
есть qt, всякие nucle для богов
Аноним 12/02/17 Вск 16:11:10  931609
>>931575
Препроцессор работает на отдельных токенах (словах), а не произвольных подстроках, иначе бы, например #define place LOL заменял replaced_items на reLOLd_items и ты бы соснул с проглотом (впрочем, ты и так соснул).
Тебе нужна макро-функция:
#define RASKUKOZHIT(x) OCHE_DLINNY_PREFIX_##x
cat Dmitry 12/02/17 Вск 16:53:30  931643
Что бы вы сказали если бы программа которая выводит содержимое файла в консоль занимала 700 строк?
Готовая программа конечно 55кб весит, но мне кажется что 700 строк это дохуя для такой простой программы.
Она бы могла зависеть всего от одной либы и вмещатся в 20 строк.
Аноним 12/02/17 Вск 17:03:32  931656
>>931643
зависит же от размера файла
Аноним 12/02/17 Вск 17:15:34  931660
>>931643
>Что бы вы сказали если бы программа которая выводит содержимое файла в консоль занимала 700 строк?
Я бы сказал, покажи исходники этой программы. Только потом можно разговаривать.
Dmitry 12/02/17 Вск 17:58:27  931693
>>931660
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/cat.c
GNU cat же
Аноним 12/02/17 Вск 18:20:13  931720
>>931693
как будто помимо GNU больше не существует реализаций cat...
https://github.com/freebsd/freebsd/blob/master/bin/cat/cat.c
Аноним 12/02/17 Вск 18:20:24  931721
>>931693
А где 700? Поудаляй комментарии с форматированием, останется строк 200.
Аноним 12/02/17 Вск 18:20:54  931722
>>931643
>мне кажется что 700 строк это дохуя для такой простой программы
ну так перепиши с меньшим количеством строк и сделай пул реквест, кто тебе мешает
Аноним 12/02/17 Вск 18:24:20  931725
>>931609
Блядь, и как я сам не додумался.
Аноним 12/02/17 Вск 18:28:41  931728
>>930897
Ну кидай, чо.
Аноним 12/02/17 Вск 18:42:02  931741
Сап сисач. Visual Studio 2015 (свежеустановленная) не смогла найти stdio.h, нашла только после указания полного пути к нему. Теперь не может найти correct.h и еще пару файлов из кода stdio.h. Как настроить?
Аноним 12/02/17 Вск 18:44:00  931743
>>931741
>Как настроить?
Накатить Арч/Генту.
Аноним 12/02/17 Вск 18:57:07  931752
>>931741
> компилять на виндах
Удваиваю арч/генту. Да хоть дебилиан.
Аноним 12/02/17 Вск 18:57:29  931755
>>931752
>>931743
Но лучше конечно же генту.
Аноним 12/02/17 Вск 19:09:48  931760
>>931728
http://rgho.st/8zGjrDMNT
Аноним 12/02/17 Вск 19:32:17  931767
>>931743
а без этого?
Dmitry 12/02/17 Вск 19:35:32  931769
>>931760
На англ кидай, здесь же не только аутисты сидят.
Dmitry 12/02/17 Вск 19:37:46  931771
>>931741
Да, ребята все правильно сказали, установи операционную ситему, там все из коробки работает при том что весит система 8 гб, а арч и того меньше. И для этого даже графическая оболочка не надо, в фреймбуфере работать можно.
Аноним 12/02/17 Вск 19:38:33  931773
>>931769
На языке людей не нашел
Аноним 12/02/17 Вск 19:39:34  931775
>>931767
ХЗ, у меня начиная с шестой студии никогда таких проблем не было, поковыряй тут https://msdn.microsoft.com/ru-ru/library/ee855621.aspx, макросы подстановки ($) проверь в свойствах проекта и в шинде посмотри переменные окружения командой set,
у меня там пара таких прописана:
VS140COMNTOOLS=C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\
VSSDK140Install=C:\Program Files\Microsoft Visual Studio 14.0\VSSDK\
Dmitry 12/02/17 Вск 19:40:19  931778
>>931773
Why not use human's language right here?
Аноним 12/02/17 Вск 19:40:25  931779
>>931587
возьми и проверь. скорей всего кто первый дал того и вымя.
Аноним 12/02/17 Вск 19:41:06  931780
>>931779
и да, к языку C или C++ это не имеет отношения.
Dmitry 12/02/17 Вск 19:41:30  931781
>>931775
>perdolk-perdolk
Oh God, spermovor never changes.
Аноним 12/02/17 Вск 19:43:06  931783
>>931781
Не понимаю твой собачий.
Dmitry 12/02/17 Вск 19:46:54  931786
>>931783
Зачем пердолится с виндой? Ни справки ни компилятора, нихуя нет, еще и тормозит, файловых ситем не завезли, оконных менеджеров не завезли, пакетный менеджер не завезли, нихуя не работает, 64битность без 32битного говна не завезли.
Установил бы федору раз спермач до глубины жопы, и работал бы по людски.
Но лучше арч и тайловый оконный менеджер на выбор.
Аноним 12/02/17 Вск 19:48:37  931788
>>931741
Надо было ставить VS 2017 RC, тем более в начале марта будет релиз
Аноним 12/02/17 Вск 19:50:18  931790
>>931786
Если бы не ноутбук с гибридной графикой, то давно бы сидел на прыщах. А так, к сожалению, приходиться быть спермачем.
Аноним 12/02/17 Вск 19:51:56  931792
господи, да съебите вы нахуй в /s

и обгладывайте там щёки димки-гребненосца.
Dmitry 12/02/17 Вск 19:55:35  931797
>>931790
Есть же Bamblbee и еще что-то там.
Хотя брать ноут с гибридной графикой тупизм, встройка интола идеальна.
Аноним 12/02/17 Вск 19:57:23  931801
>>931786
А, в этом плане. Но я не программист - мне много не надо, пару программ скомпилить раз в год, никогда пердолинга не было со студией, просто почему-то у анона сломано, я подсказал что где поковырять и как у меня, а так конечно слышал, что на линухах удобнее всё это.
Аноним 12/02/17 Вск 20:11:44  931815
>>931797
Бамблби уже 2 года не развивается, а других альтернатив нет. Встройка интола сейчас идеальна, а вот 4 года назад, ее все еще считали говном.
Поэтому и взял ноут с HD4000 и GT 730M, хотя сейчас понимаю, что это было большой ошибкой.
Аноним 12/02/17 Вск 20:16:25  931822
>>931760
Спасибо.
Аноним 12/02/17 Вск 20:50:00  931860
>>931778
ALLO! VAS PLOHO SLISHNO! PSHPSHPSHPSHPSHPSH
Аноним 12/02/17 Вск 20:56:36  931864
>>931815
> других альтернатив нет
nvidia-prime
Аноним 12/02/17 Вск 20:56:59  931865
>>931790
Выключи дискретку и сиди на прыщах.
Аноним 12/02/17 Вск 21:00:18  931868
>>931535
> Пойдет ли такое использование таймаутов
Ну да, как-то так.

>>931587
> вопрос по крестам
В крестах то же самое, что и в Си, разве что символы по умолчанию манглятся, а не просто декорируются. Ну и COMDATA еще. Других различий на уровне линковки нет.

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

>>931588
Чисто под винду - имеет смысл, если проект долговременный и качественный. Нативного look-and-feel нет ни в одной либе, кроме... нативных. В том же кутэ нет фирменной патентованной примочки Microsoft с диагональным перемещением мыши во вложенных меню, поэтому меню в Qt крайне хуевые. Если кроссплатформенность на первом месте (а такое бывает гораздо чаще), то проще всего взять C++/Qt для GUI, а либы писать на Си.

>>931741
> Как настроить?
В студии должно все само настроиться (ты C++ support вообще поставил?). Для командной строки есть целая куча всяких vcvarsall.bat.
Dmitry 12/02/17 Вск 22:08:06  931916
>>931588
Имеет смысл конечно, но юзай winapi или какой там у нее родной гуй.
Аноним 12/02/17 Вск 23:57:58  931991
Просто интересно. Почему я могу декларировать переменные после case: только с учётом, что переменная будет находится в скобках? Т.е. case: { int i; }. Без скобок не соберётся. Может проблема в другом? Не хочу скобки ставить, портит читаемость.
Аноним 13/02/17 Пнд 00:04:41  931995
>>931991
вдруг поймал себя на мысли, что до сих пор объявлял переменные только в самом начале функции
Аноним 13/02/17 Пнд 00:07:13  931996
>>931995
Я тоже, это правильно, но сейчас ситуация вынуждает нахуячить определение переменных в зависимости от результата свитча.
Важная тема Аноним 13/02/17 Пнд 00:09:15  931998
В последнее время постоянно сталкиваюсь с мнением, что в Си - всё очень хуёво и непродуманно.
1. Что не так с указателями?
2. Что не так с while (p++ = q++) ; на хабре жалуются
3. Что не так с препроцессором?

Меня, например напрягают совершенно другие вещи:
-из коробки нет размерных типов inb4:stdint.h
-бедная стандартная беблиотека. Не могу понять, почему до сих пор не добавили безопасные функции для работы со строками?
-почему не добавили битовые поля и упакованные структуры в стандарт?
-ну и да, неопределённое поведение в точках следования, аля i++ + ++i почему не определить в стандарте как это должно работать?
Аноним 13/02/17 Пнд 00:12:30  932000
>>931991
Блядь, да потому, что область видимости переменной и определяется {} за скобочками переменной уже не существует.

А так получается, ты создал в стеке переменную, только если попал в условие, а ниже свитча ты будешь её использовать всега?
Ты ебанутый?
Аноним 13/02/17 Пнд 00:17:02  932002
>>931998
иди почитай, мудак. это компост-тред, говноед на говноеде.

пойди хабрик почитай, как нужно переменные называть правильно.
Аноним 13/02/17 Пнд 00:17:23  932003
>>931991
Особенность (баг) грамматики: после меток (а case - по сути метки) ожидается statement, а не declarator. Это пережиток прошлых времен, когда декларации разрешались только в начале блока.

>>931998
> Что не так с указателями?
Все так, просто с современным подходом "хуяк-хуяк и выпустили из универа" программисты получаются тупые и допускают ошибки.

> Что не так с while (p++ = q++) ;
Все так, но чтобы понять это, нужно понимать указатели, но см. пункт 1.

> Что не так с препроцессором?
Он совершеннейшее, остойнейшее говно. Чтобы осознать это, попробуй... ну нупример реализовать макрос DEBUG, который будет принимать любое количество аргументов и вызывать функцию printf, автоматически добавляя перед сообщением файл, строку и имя функции, а после - перевод строки. Удачи.

> из коробки нет размерных типов inb4:stdint.h
Редко нужны (для структур только), легко сделать самому, есть в stdint, иди нахуй.

> почему до сих пор не добавили безопасные функции для работы со строками
Тебе с какими? Вот есть сишные, есть паскалевые, есть комбинированные. Единственная правильная придирка - нет нормального strcpy.

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

> упакованные структуры в стандарт?
Когда твой микроконтроллер не сможет прочитать невыровненный дворд - поймешь.

В той статье на хабре все правильно пишут. Си говно, юникс говно, но альтернатив-то нет!
Аноним 13/02/17 Пнд 00:21:19  932005
>>932000
> А так получается, ты создал в стеке переменную, только если попал в условие, а ниже свитча ты будешь её использовать всега?
Объяснение не катит. Наслаждайся:
switch (1) {
int foo = 100;
case 1:
foo = 1;
default:
printf("foo is %i\n", foo);
}
Потом убери присваивание в case 1 и насладись повторно.
Аноним 13/02/17 Пнд 00:28:09  932008
IMG3757.JPG (68Кб, 900x525)
>>924655
Эндрю Таненбаум
>А. Таненбаум
Аноним 13/02/17 Пнд 00:30:23  932010
>>932003
>Особенность (баг) грамматики: после меток (а case - по сути метки) ожидается statement, а не declarator. Это пережиток прошлых времен, когда декларации разрешались только в начале блока.
Неверное объяснение.
Аноним 13/02/17 Пнд 00:31:15  932011
>>932010
Тащи верное. Не забудь объяснить разницу между
case 1: int i;
и
case 2:; int j;
Аноним 13/02/17 Пнд 00:37:56  932013
>>932003
>>Он совершеннейшее, остойнейшее говно. Чтобы осознать это, попробуй... ну нупример реализовать макрос DEBUG, который будет принимать любое количество аргументов и вызывать функцию printf, автоматически добавляя перед сообщением файл, строку и имя функции, а после - перевод строки. Удачи.

Та не поверишь, есть у меня такой! Лол, но только до 10 аргументов. Бля, ну а в каком языке посмотреть лучше?

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

Про размеры типов.
Нужны блядь, просто ВИЗДЕ! Любой бинарный проктокол, любой микроконтроллер - все блядь, без них не уйдёшь. И что предлагаешь в каждый хеадер хуячить stdint? Заебца просто.

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

>Когда твой микроконтроллер не сможет прочитать невыровненный дворд - поймешь.

Блядь, меня ебёт как он будет это читать? Пускай читает в два регистра по пол слова и комбинирует в третьем! Это блядь работа компилятора обернуть всю эту хуету в понятный и удобный вид. 95% мк работают с последовательными интерфейсами, сетью сетвыми протокалами, там блять ВСЁ выравнено!
Аноним 13/02/17 Пнд 00:46:39  932017
>>932005
Ты блять упоротый?
>я могу декларировать переменные после case:
В твоём случе деклараци есть, а вто все инструкции между switch и case - никогда не выполнятся - нет условия. Можешь поэксперемнтировать с goto. Ебаный недоносок.
Аноним 13/02/17 Пнд 00:53:47  932019
>>932013
> Лол, но только до 10 аргументов.
Да, я тоже умею абузить препроцессор. О том и речь.

> strlen() с ограничением по максимальной длине
Либо строка заканчивается нулем, либо это не сишная строка.

> Любой бинарный проктокол, любой микроконтроллер
Endianess, alignment requirements, trap representations (молчу про способ хранения отрицательных int, тут вроде у всех согласие). Если ты читаешь структуры копированием байтиков поверх структуры - у тебя проблема, просто ты о ней еще не знаешь. Ну или ты о ней знаешь, но привязан к конкретной архитектуре и протоколу, и тогда проблема у тех, кто придет после тебя.

> И что предлагаешь в каждый хеадер хуячить stdint
Я еще и stdbool подключаю. Или объединяю часто нужные вещи (assert, atomics еще) в один хедер. Ты же подключаешь stdlib, когда тебе нужен malloc(), почему бы тебе не подключить stdint, если ты хочешь потерять в производительности, использовав типы фиксированного размера (или выиграть, использовав (u)int_fast(N)_t)?

> Блядь, меня ебёт как он будет это читать?
Язык проектировался как раз для тех, кого ебет производительность, и кто согласен в обмен на это вникать в детали. Не хочешь вникать - бери высокоуровневый язык. Алсо, да, именно побайтово всякие ARM и читают невыровненные структуры. Открываешь дизасм функции, а там портянка из килобайтов LDRB. Сэкономили, епта.
Аноним 13/02/17 Пнд 00:59:37  932022
>>932003
>ну нупример реализовать макрос DEBUG, который будет принимать любое количество аргументов и вызывать функцию printf, автоматически добавляя перед сообщением файл, строку и имя функции, а после - перевод строки. Удачи.
Не понимаю, в чём проблема...
#define dprintf(fmt, ...) fprintf(stderr, "%s:%d:%s: " fmt "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__)
Аноним 13/02/17 Пнд 01:00:16  932023
>>932022
dprintf("ты обосрался");
Аноним 13/02/17 Пнд 01:01:06  932024
>>932022
Хотя ок, обосрался я, не заметил, что ты GCC-шное расширение используешь. В языке этого нет.
Аноним 13/02/17 Пнд 01:04:15  932025
>>932024
даже не представляю зачем вы пытаетесь из с сделать с++.
Аноним 13/02/17 Пнд 01:08:47  932026
>>932019
>Либо строка заканчивается нулем, либо это не сишная строка.
Либо это сишная 10байтовая строка в которую влетело 11 байт от юзера.
Я же и спрашиваю о БЕЗОПАСНЫХ функциях.

>эндианс, выравнивание
Извини не понял аргумента.

>stdint
В 99% ты подключаешь stdlib не в хеадере. А базовые типы нужны всегда.Это просто маразм что их нет из коробки.

>Язык проектировался
И? От того, что некая разновидность ARM на некоем быдло-компиляторе лопатит портянки из ldr - бинарные протоклы перестануть использовать упакованные уструктуры?
Аноним 13/02/17 Пнд 01:08:51  932027
>>932024
>В языке этого нет.
Искусственная придирка.
Аноним 13/02/17 Пнд 01:11:20  932029
>>932026
>А базовые типы нужны всегда.
gcc -include stdint.h и успокойся
Аноним 13/02/17 Пнд 01:31:46  932033
>>932024
>В языке этого нет.
Щито?

>Variable-argument macros were introduced in 1999 in the ISO/IEC 9899:1999 (C99) revision of the C language standard, and in 2011 in ISO/IEC 14882:2011 (C++11) revision of the C++ language standard.[1]

Из gcc мана:

>The C standard mandates that the only place the identifier __VA_ARGS__ can appear is in the replacement list of a variadic macro. It may not be used as a macro name, macro argument name, or within a different type of macro. It may also be forbidden in open text; the standard is ambiguous. We recommend you avoid using it except for its defined purpose.

>Variadic macros became a standard part of the C language with C99. GNU CPP previously supported them with a named variable argument (‘args...’, not ‘...’ and __VA_ARGS__), which is still supported for backward compatibility.
Аноним 13/02/17 Пнд 01:37:52  932036
>>932033
Я про ##__VA_ARGS__
Аноним 13/02/17 Пнд 01:49:02  932043
>>932026
> строка в которую влетело 11 байт от юзера
В сишную строку не может "влететь" 11 байт, когда ожидалось 10. Либо они влезли в буфер, либо тебя уже хакнули. А вот при копировании строк, конечно, хочется strcpy с лимитом, и ее всегда приходится реализовывать вручную.

> эндианс, выравнивание
> Извини не понял аргумента.
Смотри, протоколы и файловые форматы бывают разные. Например, в сетевых протоколах с незапамятных времен принято использовать big-endian, а значит, как бы ты не упирался, а тебе придется читать одно поле структуры за другим и свопать байты (желательно автоматически), и это приводит тебя ко всяким stream_read_uint16, и тебе становится абсолютно похуй на выравнивание структур. А еще при копировании байтов поверх структур ты можешь ненароком прочитать float, а FPU иногда может выдать тебе exception, а пользователь будет возмущаться, мол, как это, почему у него холодильник с вайфаем завис.

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

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

>>932027
> Искусственная придирка.
Это был искусственный пример. Но есть подобный реальный: мне нужно было два раза проитерироваться макросом по __VA_ARGS__, а это в общем случае невозможно, и даже для ограниченного числа аргументов нужна препроцессорная магию поэтому я просто написал очередной внешний кодогенератор. Препроцессор сосет практически на каждой нетривиальной задаче.

Алсо, мне всегда очень нравятся разговоры линуксоидов про Microsoft и вендорлок, но когда разговор заходит про расширения GCC, так им сразу становится похуй, и они жрут и нахваливают. Хуй с ним, это расширение еще норм, оно рано или поздно появится в стандарте, но ведь есть упоротые, которые используют чуть ли не все, что им дает GCC.

>>932033
В языке нет игнорирования trailing comma c помощью магического ##.
Аноним 13/02/17 Пнд 01:52:35  932047
>>932043
>А вот при копировании строк, конечно, хочется strcpy с лимитом, и ее всегда приходится реализовывать вручную.
strncpy в твой TurboC for DOS 5.22 не завезли ещё?
Аноним 13/02/17 Пнд 01:56:07  932048
>>932047
Завезли. Только strncpy: 1) не терминирует строку нулем, если она не влезла в буфер, 2) забивает нулями весь остаток буфера, если строка таки оказалась меньше буфера. Получаем уязвимость и тормоза одновременно.
Аноним 13/02/17 Пнд 01:58:54  932049
>>932048
snprintf
Аноним 13/02/17 Пнд 01:58:57  932050
>>932048
3) вместо ясной сигнализации о том, что строка не влезла и обрезана (что может привести к еще одной уязвимости), strncpy возвращает бесполезный указатель на буфер.
Аноним 13/02/17 Пнд 02:06:44  932055
>>932049
Да, именно на ней обычно и городят свои strlcpy. Нормальное решение, если забыть о том, что snprintf может вернуть -1 на кривой строке у пользователя с кривой локалью, и еще о том, что у Microsoft есть свой, особенный _snprintf, который нихуя не терминирует строку нулем, если она не влезла. Некоторые альтернативно одаренные личности делают #define snprintf _snprintf где-нибудь в хедере, что приводит к веселым последствиям.
Аноним 13/02/17 Пнд 02:27:27  932059
>>924123 (OP)
Запутался в теме с указателями. Пытаюсь разобраться с битами и адресами. Вот например есть тип int, для него выделяется 4 байта (32 бита), есть переменная со значением например 35. В двоичной системе это 100011, и вот эти куда эти биты записываются? Нихуя не понимаю, запутался уже. Также прошу объяснить как вообще выделяется память для указателей (в двоичном виде же?).
Аноним 13/02/17 Пнд 02:37:03  932061
14566607363400.jpg (88Кб, 466x604)
14568208146170.jpg (59Кб, 451x604)
>>932059
Аноним 13/02/17 Пнд 02:37:46  932062
14575635516962.jpg (6Кб, 224x215)
14578027166430.png (802Кб, 980x893)
>>932059
Аноним 13/02/17 Пнд 02:59:56  932066
>>932059
>куда эти биты записываются
Либо в область стека, один из регистров. Посмотри в гугле: Эндрю Таненбаум, «Архитектура компьютера».
>как вообще выделяется память для указателей
Точно так же. На большинстве современных компов указатель — это просто длинное целое без знака. Редко встречаются компы где в указатель добавлено что-нибудь ещё (в старых ARM'ах были флажки в старших разрядах, но это сейчас уже никто не делает). Указатель — это целочисленный адрес.
Аноним 13/02/17 Пнд 03:00:28  932067
>>932066
>Либо в область стека, один из регистров.
Либо в область стека, либо в один из регистров.
Аноним 13/02/17 Пнд 09:02:42  932135
>>932043
Ладно, в сишную строку не может.

char user_name[11]; //10symbols + null

Очень часто возникают ошибки с заполнением до 11 байт.
Ну то такое.

> А еще при копировании байтов поверх структур ты можешь ненароком прочитать float, а FPU иногда может выдать тебе exception
Где почитать об этом?

>будет работать на разных архитектурах, структуры читают побайтово
Говноеды. Какая разница ты будешь напрягаться с побайтовым чтением или компилятор сделает это за тебя?
Аноним 13/02/17 Пнд 09:13:32  932143
>>932059
Слушай сюда тупорылый уебан.
Указатель - это ячейка памяти с адресом. Размер этой йчейки обчно равено слову на твоей машине.
Обычная переменная находется в стеке или в RAM.
Указатель на int это адресс который может лежать в стеке, в регистре в RAM, похуй где.

ВНИМАНИЕ БЛЯДЬ!
Когда к укзатешь ты прибавляешь число -адресс увеличивается не на это голое число. А на число размер типа на который указывает.
int
p_huy = 0; //Положили адресс 0
p_huy += 1;// Прибавили 1 * (sizeof(int))
На 32битной машине адресс станет
p_huy == 4
Аноним 13/02/17 Пнд 10:55:30  932199

Я даже не знаю, что хуже: вопрос или этот >>932143 ответ.
Аноним 13/02/17 Пнд 12:38:09  932244
>>932199
The answer, obviously
Аноним 13/02/17 Пнд 13:24:50  932256
>>932135
> Где почитать об этом?
C11, 6.2.6.1, Representation of types, пункт 5. Пример для x86 (ой, опять надуманный): http://ideone.com/FyO7tv
Аноним 13/02/17 Пнд 14:25:10  932292
>>932256
Ок, т.е. ты создал инвалидное значение float, поставил трап? И надо же, он сработал!
И что ты этим хотел доказать?
Что float это не набор байт, но ещё и имеет диапазон валидных значений?
Ты бы ещё разыменовал NULL и на 0 поделил, а потом удивлялся, почему твой рефрежератор с Bluetooth 5.0 завис.
Логика уровня школяра
Аноним 13/02/17 Пнд 15:21:44  932315
>>932292
> поставил трап
Где-то он по умолчанию.

> И что ты этим хотел доказать?
Если я не с тобой разговаривал, то срачик выше.

> Ты бы ещё разыменовал NULL и на 0 поделил
Вот именно поэтому копирование памяти поверх структур и плохая практика. Все согласны, что разыменовывать NULL - плохая идея, но вот когда дело доходит до упакованных структур, им почему-то кажется, что undefined behavior в этом случае их не касается.
Аноним 13/02/17 Пнд 17:24:49  932363
> switch (ptr->type & ~0x80) {
Что делает "&~0x80"?
Аноним 13/02/17 Пнд 17:36:41  932373
>>932363
коротко: гасит старший бит

0x80 = 0b10000000
~0x80 = 0b01111111

& оператор AND
Аноним 13/02/17 Пнд 17:44:02  932379
>>932373
Ясно, спасибо.

Алсо, я тут постигаю увлекательное байтоёбство — нормально вообще писать целое число в char? Вроде экономия, когда работаешь с небольшими значениями, но я такое редко вижу.
Аноним 13/02/17 Пнд 17:49:07  932382
>>932379
Экономишь на памяти - проигрываешь в коде. При наличии арифметики с этой переменной, в дизасме на том же x86 будет постоянное перепидорашивание числа из какого-нибудь 8-битного AL в 32-битный EAX и обратно, т.е., код будет и раздуваться, и тормозить.
Аноним 13/02/17 Пнд 17:55:23  932385
>>932382
Эхх, а я уже собрался осилять stdint.h .
Аноним 13/02/17 Пнд 17:59:35  932386
>>932385
Освоить stdint стоит хотя бы из-за -fast и -least типов.
Аноним 13/02/17 Пнд 18:01:49  932390
>>932386
В чём профит? Это же обычные typedef'ы на стандартные типы.
Аноним 13/02/17 Пнд 18:06:29  932393
>>932390
> Это же обычные typedef'ы на стандартные типы.
Только эти тайпдефы отличаются на разных архитектурах.

> В чём профит
Гарантировать размер (а не городить MyInt и пачку #ifdef-ов, как делает каждая вторая либа), бесплатно сэкономить на памяти, если процессор (и компилятор) таки умеют работать с мелкими типами быстро.
Аноним 13/02/17 Пнд 18:17:20  932409
>>932393
Т.е. int8_t может тормозить, а int_fast8_t будет работать заебись, я правильно тебя понял?
Аноним 13/02/17 Пнд 18:21:05  932415
вы лучше подсаажите как мне длину литеральной строки на препрцессинге вычислить, что бы без этого пидерского strlen
Аноним 13/02/17 Пнд 18:36:07  932437
>>932415
>вы лучше подсаажите как мне длину литеральной строки на препрцессинге вычислить, что бы без этого пидерского strlen
Только для константной строки:
http://ideone.com/HWNmw7
Не забудь, что там ещё '\0'
И да, как ты хотел для динамической строки вычислять её длину во время компиляции, уебан?
Аноним 13/02/17 Пнд 18:36:47  932439
>>932379
Зависит от применения. В одной из моих вещей только на байкиках и выехать по памяти.
Аноним 13/02/17 Пнд 18:47:50  932445
>>932437
мне не нужно для динамической, sizeof оно самое
Аноним 13/02/17 Пнд 20:31:57  932512
>>932379
В char - не нормально.
В int8_t - нормально
Аноним 13/02/17 Пнд 20:42:04  932514
>>932409
Да. Потому что если int_fast8_t может работать заебись с 8 битами, то внутри будет char, а если нет - int или еще что-нибудь. Решает компилятор.

>>932512
> В char - не нормально. В int8_t - нормально
Хочешь рассказать нам об удивительной жизни с CHAR_BIT != 8?
Аноним 13/02/17 Пнд 22:43:34  932616
>>932382
> При наличии арифметики с этой переменной, в дизасме на том же x86 будет постоянное перепидорашивание числа из какого-нибудь 8-битного AL в 32-битный EAX и обратно, т.е., код будет и раздуваться, и тормозить.
Для знаковой арифметики разницы в сгенерированном для char и int асме почти не будет. Переполение знаковых переменных — UB, поэтому компилятор будет обращаться с char как с int в плане использования регистров (да и не только поэтому, а integer promotion).
Проливать из регистров в стек тоже будет как 4 байта.
Передача из/в функцию — так же, как int.

Максимум где будет отличие — в сохранении в массив char-ов или в структуру, если padding-байтов не хватает для сохранения char-а как int-а
Аноним 13/02/17 Пнд 22:44:08  932617
>>932616
> (да и не только поэтому, а integer promotion).
*А скорее из-за integer promotion
Аноним 13/02/17 Пнд 22:46:10  932619
>>932514
>Хочешь рассказать нам об удивительной жизни с CHAR_BIT != 8?
ДиЭсПи, чуть больше чем на половину.
Обычно там char == int
Аноним 13/02/17 Пнд 22:48:02  932621
>>932514
> то внутри будет char, а если нет - int или еще что-нибудь
Пизда.

Стоит полностью переходить с обычных типов на stdint с его фастами? Это ведь, в теории, сплошной профит, правда код будет плохо выглядить, особенно если использовать fast. Названия длинные будут. Текста много. Но профит.

И ещё. Есть одна либа xcb, где этими интами всё обмазано, но погрепав её я не обнаружил ни одного int_fast/least. Почему там это не используется? ЧТО МНЕ ДЕЛАТЬ Я ЗАПУТАЛСЯ
Аноним 13/02/17 Пнд 22:49:29  932622
>>932621
>Это ведь, в теории, сплошной профит
В каком месте тут профит?
Аноним 13/02/17 Пнд 22:56:15  932623
>>932622
Использование stdint — профит. Я экономлю. Я пишу более понятный код. А использование фастов просто свод недостатков stdint на нет, если тот Анон не пиздит.
Аноним 13/02/17 Пнд 22:57:49  932625
Аноны, не подскажете какую-нибудь обертку над libcurl для работы с rest json-документами? Или самому писать?
Аноним 13/02/17 Пнд 22:58:19  932627
>>932621
Долбоёбов полон тред!
Блять, да возьми тыуже ебёный gcc, скомпиль пару тестов с o0 и 03. Открой отладчик да посмотри как это выглядит на твоей платформе.
Напиши тест оцени время выполнения.
В 99.95% случаев - это выигрыш на спичках.
Если блять совсем риалтайм-ультраперформанс, всё равно прийдётся на ассемблере разворачивать циклы и тулиться в регистрах с минимумом обращений к памяти.

Ну хуй знает, возможно у меня просто нет подходящего опыта и я слишком узко мыслю
Аноним 13/02/17 Пнд 23:06:47  932636
>>932627
Мне похуй как это выглядит на моей платформе. Я знаю, что это экономия на спичках. Но надо ведь идти к идеалу! К лучшенькому! В теории эти инты всем лучше дефолта, но я хочу узнать как на практике и не только на моём железе, тут вопрос не про это.

Была, кстати, статейка перевод на швабре про то, что всем поголовно нужно переходить на stdint, а дефолтные типы — прошлый век. Читал я её когда был ваще полным ньюфагом, уже толком ничего не помню, хотел бы ещё раз перечитать, но не могу нагуглить. Доставьте, может знает кто. Хорошая статья была, и срачи под ней тоже хорошие были.
Аноним 13/02/17 Пнд 23:21:37  932652
>>932621
> Почему там это не используется?
Тот анон пишет про какой-то волшебный компилятор который возможно сможет сделать так что с char скорость работы будет такая же как и с интами. Тогда будет выигрыш по памяти. Авторы библиотеки про которую ты говоришь скорее всего несколько скептично относятся к вероятности что их библиотеку будут копмилировать на таком волшебном компиляторе, поэтому просто не заморачивались на эту тему.
Аноним 13/02/17 Пнд 23:26:29  932657
>>932652
> какой-то волшебный компилятор
Какой, в жопу, волшебный компилятор, довен?
https://godbolt.org/g/7ZhxR0 вот, смотри.
Где там " постоянное перепидорашивание числа из какого-нибудь 8-битного AL в 32-битный EAX и обратно"?
Аноним 13/02/17 Пнд 23:27:11  932658
>>932625
Оказывается с гномом люди какой-то libsoup используют, буду пробовать, не в том направлении я гуглить начал.
Аноним 13/02/17 Пнд 23:29:02  932660
download.png (40Кб, 740x272)
>>932652
>>932657
https://godbolt.org/g/uAvFic intel c compiler-у вообще похуй
Аноним 13/02/17 Пнд 23:38:28  932666
>>932660
А вто gcc соснул:
https://godbolt.org/g/ijCJDt
Аноним 13/02/17 Пнд 23:41:15  932668
Только пойми меня правильно, довен. Использовать char ради экономии оперативной памяти — с вероятностью 98% долбоёбизм. Для хранения на диске нескольких миллиардов данных, если выходит так, что значения влезуют в char — это ещё нормально.
Аноним 13/02/17 Пнд 23:41:43  932669
download (1).png (51Кб, 643x456)
>>932666
>gcc соснул:
А?
Аноним 13/02/17 Пнд 23:43:23  932670
>>932668
> Использовать char ради экономии оперативной памяти — с вероятностью 98% долбоёбизм
Двачую кстати.
Аноним 13/02/17 Пнд 23:51:37  932678
>>932670
поддвачну, однако
Аноним 13/02/17 Пнд 23:54:06  932680
>>932668
Но к лучшенькому! Например если в коде есть тип с uint8_t, то сразу понятно, что там небольшое значение. С учётом контекста легко понять для чего оно и что вообще тут происходит. А ещё и экономия какая!
Аноним 14/02/17 Втр 00:01:59  932686
>>932668
что посоветуешь, если ОЗУ 32 кБ?
Аноним 14/02/17 Втр 00:02:54  932689
>>932686
Ну если 32кБ, то ладно.
Я думал речь про десктоп.
Аноним 14/02/17 Втр 00:31:44  932709
>>932616
> Где там " постоянное перепидорашивание числа из какого-нибудь 8-битного AL в 32-битный EAX и обратно"?
А ты возьми реальный код из реального проекта. Я очень часто сталкиваюсь с необходимостью смотреть дизасм и вижу, во что превращается код, в том числе и собранный с -O3. На простых тестах все красиво, компилятору хватает регистров, вон циклы в константу сворачиваются >>932669, да. А вот когда переменных много, когда зависимости менее очевидны, когда куча алиасинга, когда есть вызовы функций, начинается цирк.

>>932616
> Переполение знаковых переменных — UB, поэтому компилятор будет обращаться с char как с int в плане использования регистров
Представлять байтики как signed char (а фиксированные типы пользуют обычно для байтиков, вордов и двордов) опасно, а переполнение unsigned уже не UB.

> Передача из/в функцию — так же, как int.
Я тоже так думал, отреверсил функцию, написал int вместо short, а потом однажды мне студия положила в стек eax с мусором в старших битах. Был сеанс увлекательной отладки. Впрочем, это к делу не относится.
Аноним 14/02/17 Втр 00:33:11  932710
2003.png (186Кб, 1920x1080)
>>931278
>Чем бы таким заняться можно было, пока руки чешуться написать чего-нибудь гуишного?
Решил таки написать свою йобу на питоне с гуишным клиентом на gtk по типу keepassx. Хз, нечем после работы заняться. Посмотрим, что через пару месяцев выйдет.
Аноним 14/02/17 Втр 00:35:03  932711
14641159827010.jpg (10Кб, 200x200)
>>932709
>студия
Понятно, откуда у тебя такие извращённые представления о компиляторах и ужасах, связанных с char против int
Аноним 14/02/17 Втр 00:37:32  932713
>>932711
так чё ставим генту или арч?
Аноним 14/02/17 Втр 00:38:22  932715
>>932711
Зря ты так. Студия в последние годы все больше похожа на нормальный компилятор, и оптимизирует она неплохо.
Аноним 14/02/17 Втр 00:38:34  932716
>>932713
Если из этих двух, то арч.
А вообще ставь абанту, если ты язык собрался учить, а не пердолиться с конфигами.
Аноним 14/02/17 Втр 00:39:01  932717
это случилось, тред официально засран, от начала и до конца.
Аноним 14/02/17 Втр 00:39:30  932718
>>932715
Оптимизирует она неплохо с ещё не вышедшей версии, в которой спиздили SSA-based оптимизатор из clang-а.
Аноним 14/02/17 Втр 00:40:26  932719
>>932717
У этого треда два состояния: либо он висит полудохлым по два месяца, либо в нем кто-то снова не прав.
Аноним 14/02/17 Втр 00:41:40  932723
>>932718
> в которой спиздили
Узнаю M$!
Аноним 14/02/17 Втр 00:42:34  932724
>>932718
Не смотрел еще на 2017, но и родной C2 был неплох. А они точно спиздили? Не припомню в анонсах про кодогенератор новостей./spoiler]
Аноним 14/02/17 Втр 00:46:32  932727
кстати, что так у студии в относительными путями к проектам в решении?
Слышал, что, начиная с 2015
Аноним 14/02/17 Втр 00:48:16  932729
Screenshot at 2[...].png (180Кб, 1440x844)
download (2).png (30Кб, 716x187)
>>932724
> родной C2 был неплох
Не знаю что за C2, вот слайд с cppcon 2016 про новый SSA-оптимизатор
> А они точно спиздили?
Неточно, но откуда ещё они могли взять SSA-оптимизатор? И если ты скормишь код со слайда clang-у, ты получишь тот же асм-код, с точностью до переименования регистра, в котором передаётся параметр в данном ABI. Ах, да. Ещё 2*reg против reg+reg. Ну, peephole-оптимизатор натравили, чтобы замести следы.
Аноним 14/02/17 Втр 00:49:56  932730
>>932729
>> родной C2 был неплох
>Не знаю что за C2, вот слайд с cppcon 2016 про новый SSA-оптимизатор
Забыл дописать: если это C2 на слайде, то он плох. >>932724
Аноним 14/02/17 Втр 00:56:58  932732
>>932729
Кстати, и тут оптимизатор MSVC соснул, ибо
8d 04 4d 02 00 00 00 lea eax,[rcx2+0x2]
8d 44 09 02 lea eax,[rcx+rcx
1+0x2]
Аноним 14/02/17 Втр 00:57:33  932734
>>932732
8d 04 4d 02 00 00 00 lea eax,[rcx*2+0x2]
8d 44 09 02 lea eax,[rcx+rcx+0x2]
Аноним 14/02/17 Втр 00:58:39  932735
>>932719
видимо я так часто попадал на одно состояние.
Аноним 14/02/17 Втр 01:01:25  932738
>>932729
>peephole-оптимизатор натравили, чтобы замести следы.
В свете >>932734 скорее ещё не успели спиздить.
Аноним 14/02/17 Втр 01:07:05  932743
>>932738
>В свете
Правильнее, наверное, "С учётом".
Впрочем, похуй.
M$ соснул и это главное.
Аноним 14/02/17 Втр 01:48:59  932752
>>932727
>Слышал, что, начиная с 2015
Я набрал 20 кг за одно посещение двача. Как? Нужно просто
Аноним 14/02/17 Втр 08:32:46  932818
>>932716
>пердолиться с конфигами
Вообще арч довольно просто установить и накатить какую-нибудь гуишное окружение потом.
Аноним 14/02/17 Втр 13:26:33  932970
>>931769
Русский за язык у программистов не считается? Никто не кодит кириллицей и даже не комментирует по-русски?
Аноним 14/02/17 Втр 13:27:18  932971
>>931760
Хорошая книга, спасибо.
Аноним 14/02/17 Втр 13:31:17  932974
>>932970
1С жи есть.
Аноним 14/02/17 Втр 14:15:46  933020
>>932970
>даже не комментирует по-русски
я комментирую и доки пишу, англопидоры в моем проджекте ненужны
Аноним 14/02/17 Втр 20:45:46  933348
Вопрос по конфигурации решения/solution в студии с несколькими вложенными проектами, которые суть зависимости/dependencies рабочего

Пример с установкой Bullet Physics Engine. Прелестно описано тут:
http://bulletphysics.org/mediawiki-1.5.8/index.php/Creating_a_project_from_scratch

Всё получается, НО... вложеные проекты прописаны абсолютными путями, что убивает возможность тоскать папочку между десктопами разных компов (пути разные из-за <username>). Держать тупо в корневом на c:\ работает, но это некрасиво.

ВОПРОС: как перенастроить вложеные проекты под относитеьные пути? Где они вообще прописаны, чтобы поменять?
Аноним 14/02/17 Втр 22:38:46  933433
>>933348
Я хуй знаю, как там сейчас в студии, но никто тебе не мешает открыть .vcxproj/.sln и тупо заменить все общие префиксы путей на точку.
Аноним 15/02/17 Срд 00:41:03  933488
Пишу консольный файловый менеджер "в стиле" suckless и встал вопрос по поводу синхронизации помеченных для копирования/удаление фалов между различными сессиями. Например, выделяю файлы в some_session в some_dir, захожу в other_session, открываю other_dir, перемещаю в неё выделенное. Пока вижу решение в виде реализации клиент-серверной архитектуры. Но, мне кажется, не особо suckless way - такую архитектуру городить ради такого небольшого профита. Есть идеи как еще можно это реализовать?
Аноним 15/02/17 Срд 01:04:03  933495
>>933488
Записывай список выделения в файл. Другие сессии при попытке переместить или копировать будут этот файл читать.
Аноним 15/02/17 Срд 03:03:34  933536
>>933495
Обдумывал этот вариант, забыл написать про него и почему он не годиться. Хотелось бы, чтобы выделенные файлы были помечены визуально во всех сессиях, чтобы можно было их удалить из выделенных. Для этого придется при смене директории каждый раз проверять, изменился ли этот файл. Из этого есть выход - сделать поток с inotify. Опять же, по дополнительному потоку на каждую сессию для такой хуйни... Всё равно, благодарю.
Аноним 15/02/17 Срд 09:08:13  933589
>>933433
Я тоже думал о таком варианте. Спасибо.
Аноним 15/02/17 Срд 13:08:01  933713
>>933495
Вопрос снят. Нашел хорошее решение для этого варианта.
Аноним 15/02/17 Срд 13:19:24  933723
a.png (6Кб, 548x86)
b.png (12Кб, 602x331)
>>924123 (OP)
В общем вот часть задания вторая часть с вводом/выводом, но не суть, вот, к примеру, имеем (( )), программа скажет что скобки стоят верно, а если имеем )) ((, то скажет также, но математически это неверно, может анон подскажет? Могу заново переписать
Аноним 15/02/17 Срд 13:30:28  933731
>>933723
Дам тебе подсказку:

проходя строку по буквам, считаешь открывающие и закрывающие

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

Когда встретишь \0, колвы должны быть равны
Аноним 15/02/17 Срд 14:16:46  933762
>>933723
Нужно просто проверку на отрицательность в цикл занести.
Аноним 15/02/17 Срд 16:57:39  933850
>>924653
Хакинг искусство эксплойта 2-е издание Эриксона.
Аноним 16/02/17 Чтв 20:39:45  934689
Вот хожу я по массиву таким образом "*arr++", а как мне выполнить не просто "++", а "+ 20"? Например. Чтобы на 20 элементов сразу скакнуть а потом опять хуячить ++.
Аноним 16/02/17 Чтв 20:42:47  934692
>>934689
arr += 20;
Аноним 16/02/17 Чтв 20:45:35  934696
>>934692
Спасибо, саженяша.
Аноним 17/02/17 Птн 00:40:48  934848
godfadda-449x37[...].jpg (41Кб, 449x375)
>2017
>sizeof(arr) / sizeof(arr[0]);
Аноним 17/02/17 Птн 07:46:47  934952
>>933723
Решается стеком.
Аноним 17/02/17 Птн 08:56:00  934964
14600285733958.png (249Кб, 559x496)
>>934848
> 2017
> C
Аноним 17/02/17 Птн 09:09:04  934965
>>934848
>>934964
Попрошу не выёбываться.
Каждый день пишу на С свои наукоёмкие библиотеки
Аноним 17/02/17 Птн 10:05:21  934983
>>934965
> наукоёмкие библиотеки
Представляю какой там жуткий говнокод.
Аноним 17/02/17 Птн 10:29:39  934988
>>934983
Неосилятор в сишном тхреаде!
Аноним 17/02/17 Птн 12:25:24  935027
>>924123 (OP)
Сап, пр, есть файл с символами( у меня это скобки), в коде нужно из этого файла считать эти символы в массив и дальше с ним работать, я перечитал пару справочников и статью в учебнике и нигде не нашел примеров, погуглив также ничего годного не нашел, можете написать сам кусок кода в котором массив заполняется символами.
Аноним 17/02/17 Птн 13:29:25  935042
>>935027
Отмена! Я ультрадаун, мой компилятор не читает с notepada++, поставил обычный блокнот и все..
Аноним 17/02/17 Птн 16:08:56  935112
>>935042
Лолшто не читает?
Аноним 17/02/17 Птн 18:58:26  935188
>>935112
Ну да, поменял на дефолтный блокнот и строчку символов считало в массив, с нотепада ничего не происходило, хз почему
Аноним 17/02/17 Птн 19:34:38  935217
>>935188
То есть ты брал файл, созданный в нотепад++, и не получалось, а получилось с тем же контентон, сохранённым в файл из шиндовского блокнота?
Кодировка, в которую дефолтный почти не может?
Аноним 17/02/17 Птн 19:37:56  935221
>>934952
двачую, хоть одно человечское решение, а не это ебаное говно
Аноним 17/02/17 Птн 20:03:04  935249
>>935221
Охуеть. Но теперь объясни ему, как ему этот стек сделать.
Аноним 17/02/17 Птн 20:54:09  935283
>>935221
> человечское решение
Один тип скобок. Стек вот просто нахуй не нужен. Тупые люди с шаблонным мышлением тоже.
sage 18/02/17 Суб 01:35:19  935418
>>935283
действительно, неужели никто не писал парс для скрипт-языка собственного сочинения?
Аноним 18/02/17 Суб 07:08:16  935467
C - это же легкий язык программирования. Зачем для его обучения читать целые книги?
Аноним 18/02/17 Суб 09:24:26  935478
1111.png (4Кб, 626x77)
>>924123 (OP)
Аноны, для построения графиков нужно пользоваться openGL? И сложно ли будет написать код для построения такой функции с базовыми знаниями си?
Аноним 18/02/17 Суб 09:45:13  935479
>>935467
Попробуй потоньше.
Аноним 18/02/17 Суб 09:46:51  935480
>>935478
>>935467
У вас соревнование толстяков?
Аноним 18/02/17 Суб 09:52:58  935484
1111.png (9Кб, 672x133)
>>935480
А что не так? Просто у меня препод ничего не объясняет и все лабы я делаю с помощью учебника и двача
Аноним 18/02/17 Суб 10:58:20  935497
>>935478
В общем случае OpenGL не очень-то хорошо подходит для построения произвольных графиков. Зависит от конкретной функции - от того что поддерживает видеокарта, так как шейдер не может выполнить произвольный код. Правда, конкретно твою можно просчитать и на современных GPU, так как с определенного момента они вроде как умеют вычислять синусы, еще и дохуя быстро (скорее всего по таблицам). Но общий алгоритм такой что ты формируешь пиксельный буфер с графиком на CPU, а потом как-то выводишь: OpenGL, SDL, может вообще просто на диск сохранить в чем-то типа png. Возможно у преподователя спроси.
Аноним 18/02/17 Суб 11:35:22  935516
>>935478
а что там сложного, открываешь опенгл, учишь, как строить линию по точкам. делаешь вот эту формулу, применяешь ее к точкам. p - это точки а параметр умноженный на синус функции. функция - это линия из точек. как-то так.
Аноним 18/02/17 Суб 11:56:23  935526
>>935479
>>935480
А в чем анон не прав?
Чтобы писать на С нужны только мозги. Понял как работают указатели - молодец, ознакомься со спецификой архитектур, спеку мк почитай и вперед. А если под десктоп или сеть писать - все еще проще.
Аноним 18/02/17 Суб 11:59:03  935527
>>935526
>сеть писать - все еще проще
паржал с дебика
Аноним 18/02/17 Суб 12:00:50  935530
>>935527
Ну у меня уже был 2-летний опыт на первой работе, надо было свой велосипед поверх udp писать и поддерживать, после такого это кажется не очень сложным.
Аноним 18/02/17 Суб 12:04:07  935532
>>935530
в сетевом погромирование очень много ньюансов о которых нужно знать, теже опции сокетов например
Аноним 18/02/17 Суб 13:48:36  935578
>>935526
Чтобы писать на си нужно знать стандартную библиотеку, а более говенной с.б. чем в си нет в природе.
Аноним 18/02/17 Суб 13:58:02  935587
>>935578
> МК
> стандартная библиотека
Аноним 18/02/17 Суб 14:04:59  935596
>>934692
А как просто задать ему значение? Что-то вроде arr = 20, но чтобы работало.
Аноним 18/02/17 Суб 14:14:52  935609
>>935578
>нужно знать стандартную библиотеку
Нахуя? Когда понимаешь, как это работает все, написать свой аллокатор памяти под конкретный девайс не столь сложно, как это кажется вначале. Или числа/строки вручную сложно конвертить?
Аноним 18/02/17 Суб 14:25:20  935615
>>935609
Ну если ты только хеллоу ворлд делаешь то безусловно, но в реальных задачах везде требуется взаимодействие с коллекциями, строками, потоками, файлами, сетью и ещё кучей различной поебени.
Аноним 18/02/17 Суб 15:08:05  935629
Как сделать ассемблерную вставку? Мне надо чтобы было так:

org 0x7C00

startboot:
cli
xor ax,ax
mov ds,ax
...
...
...



org 0x7E00

start:
код на си
...

mov ax,peremennaya поместить в ax значение переменной
...
...
...

У меня в начале программы загрузчик операционной системы, который занимает 512 байт, а потом уже главная часть программы. С помощью кода на си там считается всё, потом перемещается значение из нужной переменной в регистр ax.
Аноним 18/02/17 Суб 15:11:14  935630
На меня снизошло озарение и просветление. Спешу поделиться.
Идеального кода по крайней мере на си не существует. Это миф!
Всюду используются свои правила, свои стандарты свои методы и правила оформления. Кое где, встречаются удачные решения. Но в общем, везде бардак, а идеала нет.

Аноним 18/02/17 Суб 15:12:30  935631
>>935629
КОМПИЛЯТОР?!!
Аноним 18/02/17 Суб 16:22:49  935654
>>935631
gcc. Забыл написать, а ведь собирался.
Аноним 18/02/17 Суб 17:21:49  935696
>>935629
Если ты - тот кун из RE-треда, предлагаю не ебаться с ассемблерными вставками - это плохой и неудобный путь. Пиши то, что требует ассемблера на ассемблере в отдельных файлах, а то, что хочется писать на Си - на Си. А время лучше потрать на чтение туториала про ld, ld-скрипты и objcopy.
Аноним 18/02/17 Суб 17:22:19  935698
MenuV0413.jpg (115Кб, 640x480)
>>935596
arr+=20;
Аноним 18/02/17 Суб 17:24:05  935702
>>935596
*arr = 20
Dmitry 18/02/17 Суб 17:26:40  935703
>>935702
absolute value for array pointer? Lol.
*arr+=20;
Dmitry 18/02/17 Суб 17:27:38  935705
>>935702
>>935703
not *
arr+=20;
ПЕРЕКАТ Аноним # OP  18/02/17 Суб 17:40:09  935717
>>935715 (OP)
>>935715 (OP)
>>935715 (OP)
>>935715 (OP)
>>935715 (OP)
Аноним 21/02/17 Втр 08:51:30  937476
>>933020
Нафига вообще комментить? Код должен читаться без комментариев, имена функций/переменных коммендируют сами себя, вместо магических констант - дэфайны.
А теперь представьте ситуацию: над проектом работают несколько комментаторов-патриотов, и каждый срёт в каментах в своей кодировке. Иногда правится один и тот же файл в разных кодировках. И читать это дело потом - адов пиздец, хорошо если кодировки быстро переключаются по хоткею, а если надо в менюшку лазить? Нет ребята, такой хоккей нам не нужен.
Аноним 21/02/17 Втр 15:42:16  937650
>>937476
> Нафига вообще комментить? Код должен
Бла-бла-бла, я пишу хелловорлды, мне нинужны комментарии. В дюбой нетривиальной программе нужны комменатрии (и еще документация вдобавок). В реализациях сложных алгоритмов комментариев может быть в десять раз больше, чем кода.

> кодировке
Аргумент устарел, UTF-8 есть везде, но комментировать все равно нужно по-английски, за исключением случаев, когда это 1C или какой-нибудь локальный продукт, который никому кроме его разработчиков нахуй не всрался.

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

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