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

Этого треда уже нет.
Это копия, сохраненная 16 июня 2017 года.

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

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

78 Кб, 792x1023

C Programming Language #21 # OP 14 Апр, 00:47 #973297 В конец треда | Веб

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

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

Что читать:

- Классика от Отцов: 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/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- man/Dash/zealdocs

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

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

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

Ответы975527975561978262978538979821979896980425980595981593981959982046982729984155984156985674986411990462992084

# OP 14 Апр, 00:48 #2 #973300

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

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

Ответы973330973331

Dmitry 14 Апр, 03:41 #3 #973330

>>973300
>intel
>visal studio
malware вместо компилятора это сейчас top-tier? Чтобы сразу с зондами?

Dmitry 14 Апр, 03:43 #4 #973331

>>973300
>threads.h
Это вообще каким боком к компилятору? Это отсетственность C библиотеки.

Ответы973346

56 Кб, 431x623

14 Апр, 05:47 #5 #973338

https://2ch.hk/pr/res/959643.html#973256 (М)

Спасибо, няша, учту комментарии. Язык не первый, вебмакакой работаю, задолбало

14 Апр, 08:13 #6 #973346

>>973331
>Это отсетственность C библиотеки
Сука, какой же ты тупой уёбок.

Ответы973874

14 Апр, 23:08 #7 #973827

Здравствуйте, друзья. Я пишу себе прогу на C для генерации статус-бара в dwm. Всё было хорошо, пока я не захотел сделать отображение названия трека, который в данный момент играет в плеере. Название может содержать UTF-8 символы и, естественно, когда я хочу обрезать слишком длинное название или просто получить его длину в символах, всё идёт по пизде. В общем, подкиньте годных гайдов про то, как завести UTF-8 на C. Спасибо.

Ответы973832973881

14 Апр, 23:19 #8 #973832

>>973827
> просто получить его длину в символах
mbstowcs() из стандартной библиотеки. Но на самом деле тебе нужна длина в глифах (ты ведь не хочешь считать, что a - это a´), и вот тут все не так просто. Чем рисуешь текст?

Ответы973846

15 Апр, 00:29 #9 #973846

>>973832
Да я лично ничем не рисую. Я просто передаю буфер иксовой функции XStoreName() и вызываю XSync(). Спасибо за наводку, буду дальше шерстить мануалы.

Ответы973875

Dmitry 15 Апр, 01:56 #10 #973874

>>973346
Иди нахуй педрила.
В musl есть threads.h

Ответы973889

Dmitry 15 Апр, 01:58 #11 #973875

>>973846
>2017
>X11
Откуда лезете?

Ответы973890

15 Апр, 03:00 #12 #973881

>>973827
>В общем, подкиньте годных гайдов про то, как завести UTF-8 на C.
https://julialang.org/utf8proc/
Сам не пробывал, просто нагуглил.

15 Апр, 06:28 #13 #973889

>>973874
а я думал всем похуй на треды в лялихе. с другой стороны, кто будет отказываться от glibc.

Ответы973893

15 Апр, 06:30 #14 #973890

>>973875
>C
>выёбываться на X11
тебе в другой тред.

Ответы973892

Dmitry 15 Апр, 07:17 #15 #973892

>>973890
X11 устарело и нигде не используется. При чем тут С? сишке альтернативы нет.

Ответы973903973917

Dmitry 15 Апр, 07:19 #16 #973893

>>973889
ембеддеды в которых С нет альтернативы, хотя и glibc в среднеэмбеддеде живет нормально.

15 Апр, 08:48 #17 #973903

>>973892
> X11 устарело и нигде не используется.
покажи где не используется. он(X) всегда и везде будет, потому что стандарт дефакто.

может виндованам ещё не пользоваться windows.h? ну так, кстати.

Ответы974149

15 Апр, 10:46 #18 #973917

>>973892
>X11 устарело и нигде не используется.
ебать фантазёр

Ответы974149

15 Апр, 19:01 #19 #974125

Правлю либу стима для VR поддержки для андроида, может помочь кто-нибудь собрать clang + Visual Studio?

http://rgho.st/8V6HtkNCX

Ответы974150974260975165975286

15 Апр, 19:53 #20 #974149

>>973903
5 лет назад ты еще мог бы так сказать. Сейчас Wayland - стандарт де-факто, используется всеми основными DE - GNOME, KDE, Enlightenment, и тайловыми оконными менеджерами. Все драйвера перешли на wayland и в ближающем будующем не будут работать с ксоргом.
>>973917

Ответы974167974527

15 Апр, 19:54 #21 #974150

>>974125
>clang + Visual Studio
Что за гремучая смесь?

Ответы974152

15 Апр, 19:56 #22 #974152

>>974150
Фронт-енд clang-а с майкрософтовским бекендом.

323 Кб, 1713x1159

15 Апр, 20:06 #23 #974167

>>974149
>используется всеми основными тайловыми оконными менеджерами

Ответы974255

15 Апр, 23:33 #24 #974255

>>974167
Там нету velox, orbment, way cooler, ну и вейланд это дефолт для GTK3+ QT5+ SDL2+ EFL, CLUTTER, GLFW, FreeGLUT, OpenGL, Vulkan.

Ответы974279

15 Апр, 23:37 #25 #974260

>>974125
Я точно не уверен, может clang и не нужен. Может Visual Studio даже соберет, помогите плз у кого есть возможность, собираться будет максимум минуту.

16 Апр, 02:07 #26 #974279

>>974255
>основные тайловые оконные менеджеры
>называет какие-то ноунеймы, о которых никто не знает
ты, видимо, живёшь в какой-то другой вселенной

Ответы974351

16 Апр, 11:14 #27 #974351

>>974279
Ксорго-парашка загибается уже.

Ответы974527

16 Апр, 12:01 #28 #974381

Два вопроса:
1. Как начать учить нейросети и все, что с ними связано? (на крестах)
2. Где брать практические задачи/упражнения/хадания для практики C#? (типа создания блокнота или приложения с каким-то webapi)

Ответы974525

16 Апр, 12:17 #29 #974390

Народ, как реализовать оператор goto в компиляторе? Гугл, как всегда, молчит.

Ответы974415

16 Апр, 12:51 #30 #974415

>>974390
гугли двухпроходная схема трансляции
Если за один проход, то backpatching книга дракона в помощь

16 Апр, 19:17 #31 #974525

>>974381
Нахуй сходиВ соседний тред

Ответы977213

16 Апр, 19:18 #32 #974527

>>974149
>Все драйвера перешли на wayland
В голос
>>974351
Ага, как и флеш. Хоронили флеш - порвали два баяна.

Ответы974528

sage 16 Апр, 19:20 #33 #974528

>>974527
Хотите обсуждать неймфага и его особое понимание реальности - идите вместе с ним обратно в /s/.

Ответы974738

sage 17 Апр, 05:46 #34 #974738

>>974528
>идите вместе с ним обратно в опеннет.

17 Апр, 18:36 #35 #975129

команды mingw пожалуйста тутор проебал

16 Кб, 418x455

17 Апр, 19:22 #36 #975161

ебучий аваст сука ,какого хуя ,хелол ворлд блокировать

Ответы975162975204

17 Апр, 19:22 #37 #975162

>>975161
Добавь в исключения для сканирования папку для хеллоуворлдов, ок?

17 Апр, 19:25 #38 #975165

>>974125
посоны, ну соберите плз, я не смог настроить clang и mingw, в dev c++ не собирается

Ответы975204

sage 17 Апр, 20:31 #39 #975204

>>975165
> не смог настроить
Охуительные истории. Ну на: http://dropmefiles.com/Qtzic (только это студия 2017).
> в dev c++ не собирается
Ошибку показывай.

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

Ответы975207975285

17 Апр, 20:32 #40 #975207

>>975204
о спасибо анон, на последнем qt собирается без проблем да? по умолчанию или нужно еще что-то сделать в настройках там или еще как? собирал под виндой?

Ответы975210975211

17 Апр, 20:35 #41 #975210

>>975207
ой в глаза ебусь, спасибо, точнее в студии прям сразу собирается?

sage 17 Апр, 20:35 #42 #975211

>>975207
Какой qt? Сказал же, студия. Visual Studio 2017. Собирается без проблем (сменил тулсет на XP-шный, мало ли, ну и M_PI по умолчанию нету в math.h, воткнул дефайном прямо в исходник).

Ответы975213

17 Апр, 20:37 #43 #975213

>>975211
это, в проекте поучаствовать в этом не хочешь? совместном, можешь оставить какие-нибудь контакты, мб телеграмм?

Ответы975229975233

sage 17 Апр, 20:59 #44 #975229

>>975213
Охуел что ли, нахуй иди.

Ответы975231975456

17 Апр, 21:00 #45 #975231

>>975229
Мне только сборка нужна и все. Ладно, в любом случае спасибо за сборку.

sage 17 Апр, 21:01 #46 #975233

>>975213
Предыдущий с сажей был не я, но я тоже не хочу. Особенно если вы два файла скомпилировать не в состоянии.

Ответы975239

17 Апр, 21:08 #47 #975239

>>975233
я не мог скомпилить, но смог подправить, добавить нужные функции, поправить код, а скомпилировать не мог, потому пробовал компилить в clang + mingw, а не визуалке.

Ответы975247

sage 17 Апр, 21:21 #48 #975247

>>975239
Берешь MinGW, ставишь, прописываешь в PATH все bin, которые найдешь (или оно само пропишет, не помню). Идешь в папку с исходниками и говоришь c++ -D_USE_MATH_DEFINES -shared -std=c++11 *.cpp -o yoba.dll Еще проще, чем в студии. Можешь под линуксом абсолютно так же собирать, поставив MinGW туда. Только компилятор будет называться не просто с++, а как-нибудь вроде i686-w64-mingw32-c++.

17 Апр, 22:02 #49 #975285

>>975204
#include <stdio.h>
Main()
{
Printf("good");
return 0;
}
Такой то троян
Компилю командой g++

Ответы975291

17 Апр, 22:02 #50 #975286

>>974125
>VR поддержки для андроида
нахуя?

sage 17 Апр, 22:06 #51 #975291

>>975285
Я не говорю, что у тебя троян. Я объяснил "логику" аваста. Например, когда мы выкладываем новую версию своей утилиты, аваст абсолютно так же ругается, пока ее не скачает достаточно пользователей. Самый простой способ это починить - не использовать аваст.

18 Апр, 11:21 #52 #975456

>>975229
лучший пост за последние треда 3.

3 Кб, 258x232

18 Апр, 13:46 #53 #975527

>>973297 (OP)
Сап, есть символы, указываем любое кол-во столбцов, кол-во строк фиксировано, значения не имеет, двумерный массив заполняется соответственно первый символ [0][0], второй [1][0], третий [2][0] и тд.
Как я понял, сообщение в обычный массив и номера его элементов в двумерный, не могу в код именно с переводом в двумерный, помогите.
И не будет ли ебли с пробелом? Проще ли будет использовать "_"?

Ответы975594

18 Апр, 14:08 #54 #975541

Как победить multiple definition error?
Есть файл displayline.h
[code]
#ifndef APPLICATION_USER_DISPLAYLINE_H_
#define APPLICATION_USER_DISPLAYLINE_H_

void displayLine(uint16_t pos, const char inpline);

#endif / APPLICATION_USER_DISPLAYLINE_H_ /
[/code]
есть файл displayline.с:
[code]
#include "displayline.h"
void displayLine(uint16_t pos, const char inpline)
{
char buffer[60];
sprintf(buffer, inpline);
BSP_LCD_DisplayStringAtLine(pos, (uint8_t *) buffer);
}
[/code]
Подключаю к двум другим с файлам. Получаю такую ошибку:
displayline.h:21: multiple definition of `displayLine'
Application\User\displayline.o: Src/displayline.c:3: first defined here

Ответы975545

18 Апр, 14:14 #55 #975545

>>975541
Лол. Помог clean build.

18 Апр, 14:53 #56 #975561

>>973297 (OP)
Ананасы, есть вот такой код: https://pastebin.com/0MQsjgdp
Существует ли риск, что конпилятор соптимизирует код функции func1 до вида
void func1(void)
{
//do something else
}

Ответы975574975576975818975824975949

18 Апр, 15:24 #57 #975574

>>975561
думаю нет, он же не знает сколько тредов будет. хотя хз.

93 Кб, 685x546

18 Апр, 15:27 #58 #975575

Сап, деды.
Есть один проект, и есть анон-я, слабо шарящий в языке-батьке.
Проект, насколько я знаю, не использует даже C99, как его включить - без понятия, ибо структура проекта сложная, по крайней мере, для понимания меня.
Вопрос - какого чёрта так происходит?
Для не умеющих читать: Создаётся переменная unsigned int i со значением 0, ей же в for цикле ещё раз присваивается ноль, но какого-то чёрта ей присваивается значение 7055204. Какого хрена так происходит?
Может ли это быть из-за того, что я собираю проект, который в принципе заточен под сборку на 32-битной системе, на 64-битной?

Ответы975577975578975692975699975702

18 Апр, 15:28 #59 #975576

>>975561
>Существует ли риск
Никакого риска не существует, если ты пишешь по стандарту. Что именно делает компилятор - тебя интересовать не должно никак.
Если у тебя написано, что цикл зависит от flag, он и будет зависеть от flag.

Ответы975602

18 Апр, 15:30 #60 #975577

>>975575
>заточен
Задрочен. На строчке 265 переменная ещё не инициализирована. Перейди на 266.

Ответы975579

18 Апр, 15:31 #61 #975578

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

Ответы975580

18 Апр, 15:32 #62 #975579

>>975577
Переходил, и на 266, и на 267, и до 273 доходил, значение её не меняется в принципе.

Ответы975584975596

18 Апр, 15:33 #63 #975580

>>975578
Когда попытался поместить создание переменной в цикл for, он пожаловался, что так можно только в c99 и c11. Попытка добавить ключ -std=C99 к makefile в корне проекта сломала всё к чертям, лазить по папкам, выискивать там makefile'ы и в каждом разбираться и что-то править у меня вообще желания нет.

18 Апр, 15:45 #64 #975584

>>975579
Debug build? Printf-ом выводил?

Ответы975588

18 Апр, 15:46 #65 #975588

>>975584
да, судя по всему debug build.
Выводил как и на скрине - через print в gdb.(В моём случае это cgdb, но разницы не должно быть)

Ответы975593975771

18 Апр, 15:51 #66 #975593

>>975588
число меняется?

Ответы975596

18 Апр, 15:51 #67 #975594

>>975527
Бамп

18 Апр, 15:52 #68 #975596

>>975593
>>975579
Нет, не меняется вообще.

Ответы975599

18 Апр, 15:55 #69 #975599

>>975596
может там где-то u определён. без префикса тоже самое?

Ответы975601

18 Апр, 15:57 #70 #975601

>>975599
u же литерал, нет?
Я специально его добавил, потому что на каком-то помешанном на стандартах форуме вычитал, что без литерала присваивание может улететь в трубу, но без него было тоже самое.

Ответы975609

18 Апр, 16:02 #71 #975602

>>975576
>Что именно делает компилятор - тебя интересовать не должно никак.
В идеальном манямирке в программе laba2.prj может быть и да, но вот в реальности - хуй тебе.
Для https://pastebin.com/YZeW24gu выхлоп ассемблера: https://pastebin.com/3SnBwQCB
А теперь для того же кода, но в 8 строке flag = 1; : https://pastebin.com/bMZxJPCZ

Ответы975824

18 Апр, 16:10 #72 #975609

>>975601
давай код функции.

Ответы975691

sage 18 Апр, 18:01 #73 #975691

>>975609
В гугле забанили? https://github.com/dzavalishin/phantomuserland/blob/8ff7306b84a52547fd66e02252621a5de5b08bbf/oldtree/kernel/phantom/multiboot.c#L265

Ответы976060

sage 18 Апр, 18:03 #74 #975692

>>975575
Может QEMU неверный адрес передаёт или что-нибудь в таком духе.

18 Апр, 18:06 #75 #975699

>>975575
Оптимизации конпелятора выключил?

18 Апр, 18:17 #76 #975702

>>975575
В сях не шарю, но м.б. там создается новый скоуп?

Ответы975703

sage 18 Апр, 18:18 #77 #975703

>>975702
>В сях не шарю
А зачем лезешь?

18 Апр, 19:31 #78 #975771

>>975588
Вставь printf в код. Ещё можешь вызвать printf в gdb.

18 Апр, 19:57 #79 #975818

>>975561
Где volatile?

sage 18 Апр, 20:00 #80 #975824

>>975561
>>975602
И чем
void func1()
{
flag = false;
while(flag) {...}
// do something else
}

отличается от
void func1(void)
{
//do something else
}

???

Ответы975828975833975941

sage 18 Апр, 20:01 #81 #975828

>>975824
Вообще я примерно подозреваю, что мне сейчас ответят, но не буду писать, что я подозреваю.

Ответы975945

18 Апр, 20:05 #82 #975833

>>975824
>flag = false;
>while(flag) {...}
Дебил бля.

18 Апр, 20:46 #83 #975883

Алёрт! Код, написанный конченным дебилом, только начавшим изучать программирование вообще! (Уж если и собираетесь послать, то хотя бы туда, где мне дадут ответ)
Крч, есть цель: найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2/3/4/5/6/7/8/9. (Самое мелкое такое число-18, для примера)
Долго пыхтев, я таки выдал это: https://pastebin.com/wzaDvk2q
Понимаю, что код крайне омерзителен по своей структуре, его можно сократить раза в два, если не больше, но на данном этапе я могу сделать лишь это, а брать готовое решение из инетов-считай, зарыть свои навыки глубоко в землю. Запускал через Code Blocks, ничего не выдаёт. При компиляции ошибок не обнаруживает, наверное, ошибка логическая. Анон, ты можешь сказать, что я сделал не так? inb4: в программирование решил вкатываться

Ответы975891978243978963

sage 18 Апр, 20:49 #84 #975891

>>975883
Код через обфускатор прогонял?

Так или иначе, тебе в прикреплённый тред.

Ответы975905

18 Апр, 20:54 #85 #975905

>>975891
>Код через обфускатор прогонял?
Загуглил, что есть обфускация. Не понял, зачем мне и без того трудночитаемый код делать ещё более трудночитаемым.
>Так или иначе, тебе в прикреплённый тред.
Благодарю за направление, туда и отправлюсь

18 Апр, 21:36 #86 #975941

>>975824
Второй прототип не имеет аргументов, первый - произвольный набор

Ответы975943

sage 18 Апр, 21:37 #87 #975943

>>975941
Подловил, молодец.

Но очевидно что я про тело функции.

18 Апр, 21:39 #88 #975945

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

Ответы975947975948

sage 18 Апр, 21:42 #89 #975947

>>975945
Ну в общем ты спалил то, чего я жду. Что придёт какой-нибудь довен и напишет, что другой тред может присвоить флагу значение true после присвоения false и до проверки while(flag).

Ответы975949975952

18 Апр, 21:43 #90 #975948

>>975945
На практике же нужно делать мьютексы, объявлять переменнную как volatileлибо что-то еще перед вызовом цикла и помнить, что си не знает, что такое потоки.

Ответы975950975951

18 Апр, 21:44 #91 #975949

>>975947
Хули ты выебуешься, пидор, поясни тогда, почему я не прав и ответишь заодно этому >>975561 хую

Ответы975955

18 Апр, 21:45 #92 #975950

>>975948
> си не знает, что такое потоки
Уже шесть лет, как в си есть собственные потоки.

Ответы975951975982

sage 18 Апр, 21:45 #93 #975951

>>975948
>На практике же нужно делать мьютексы, объявлять переменнную как volatile
На практике нужно сделать flag атомиком.
> си не знает, что такое потоки
Бгг. Стандарт открой.

>>975950
Потоки там опциональные, а модель памяти с учётом наличия потоков — нет.

Ответы975960

18 Апр, 21:46 #94 #975952

>>975947
Без volatile компилятору посрать, что существуют другие треды, и он может смело выкидывать while.

Ответы975955975959

sage 18 Апр, 21:47 #95 #975955

>>975949
Пидор, я думал ты понимаешь, в чём там дело.

Компилятор вправе полагать, что в программе нет UB (к которому относится race condition) и он справедливо считает, что while(false) можно выкинуть.

>>975952
Спасибо, капитан К.О.

Ответы975966975972

sage 18 Апр, 21:49 #96 #975959

>>975952
С volatile, кстати, тоже посрать на другие треды. Он не выкидывает volatile по другой причине.

И одновременный доступ к volatile-переменной тоже race condition. Так что только атомики.

Ответы975963975974

18 Апр, 21:50 #97 #975960

>>975951
>На практике нужно сделать flag атомиком.
>Бгг. Стандарт открой.
Ты у нас стильный, модный, молодежный и уже перевел все проджекты на С11?

Ответы975961976609

sage 18 Апр, 21:53 #98 #975961

>>975960
Лично тебе выдаю разрешение использовать pthread_mutex

18 Апр, 21:53 #99 #975963

>>975959
Нет там UB. UB только при одновременной модификации (т.е., когда есть сайд-эффекты).

Ответы975968

18 Апр, 21:59 #100 #975966

>>975955
>Пидор, я думал ты понимаешь, в чём там дело.
Да понимаю я, что там такое, но ты заебал со своей тупорылой манерой общения.
Так и представляю сидящего за компом инфантильного гордого говноеда-синьера, который на работе мучает довольно неочивидными сишными заебами попавших под руки непуганных ньюфагов.

Ответы975970

sage 18 Апр, 21:59 #101 #975968

>>975963
Ок, поправлюсь: написать там volatile flag не избавит от data race.

> UB только при одновременной модификации
Модификация одним при чтении другим тоже data race.

Ответы975975

sage 18 Апр, 22:00 #102 #975970

>>975966
>довольно неочивидными
Бгг. Тебе не очевидно, что while (false) можно выкинуть и это не повлияет на наблюдаемое поведение?

sage 18 Апр, 22:03 #103 #975972

>>975955
>Компилятор вправе полагать, что в программе нет UB (к которому относится race condition)
Почему никто не поправил, довены? race condition не UB, UB это data race.

18 Апр, 22:04 #104 #975974

>>975959
>С volatile, кстати, тоже посрать на другие треды. Он не выкидывает volatile по другой причине.
Но в целом volatile значит вырубить нахуй все оптимизации, чего достаточно для того, чтобы небыло неожиданных проблем при работе в многопоточных приложениях (либо с прерываниями).

Ответы975976

18 Апр, 22:05 #105 #975975

>>975968
Ну ок, поглядел стандарт. В теории ты прав. На практике я могу притвориться, что у меня C99 и ебать в жопу новый стандарт, пользуясь своими знаниями о том, как работают процессоры и кэши на всех распространенных реализациях (c выровненным bool у меня проблем не будет). С атомиками проще, да.

sage 18 Апр, 22:05 #106 #975976

>>975974
С практической точки зрения ты, конечно, прав. Но всё-таки.

18 Апр, 22:08 #107 #975982

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

sage 18 Апр, 23:49 #108 #976052

выебонов полон тред.

sage 19 Апр, 00:02 #109 #976060

>>975691
и чего тогда там комментарии есть с //. и объявление i не в начале блока, по после вызова функции e().

это и так должен быть c99.

Ответы976068

sage 19 Апр, 00:29 #110 #976068

>>976060
Я не автор вопроса, не доёбуйся до меня плес.

19 Апр, 08:57 #111 #976164

поясните за ConEmu

19 Апр, 21:49 #112 #976530

Аноны, помогите. Ядро компилю для андроида c поддержкой kvm. Что нужно в сырцах менять? В s не ответили.
Лог тут - https://paste.fedoraproject.org/paste/kiPgyHv9k6DWmEMhEw65P15M1UNdIGYhyRLivL9gydE=
Сорцы - https://github.com/adrenogamer/android_kernel_asus_msm8916

Ответы976604

Dmitry 19 Апр, 23:54 #113 #976604

>>976530
Как ты его коныигурировал мань?
На чем собирал мм?
Почему дефолтный конфиг распбиан не подошел?

Ответы976610

Dmitry 19 Апр, 23:59 #114 #976609

>>975960
А что там сложного? Кроме того что glibc не имеет threads.h

19 Апр, 23:59 #115 #976610

>>976604
Как быдло через menuconfig. В сорцах есть дефконфиг - ze500kl-nhkernel_defconfig
На ляликсе, гугловский тулчейн aarch64-linux-android-4.9.
Потому что у мен6я ведро, и конфиг от распберри не подойдет.

Ответы976612

20 Апр, 00:02 #116 #976612

>>976610
К слову - добавил эти конфиги:
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_KVM_MMIO=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_KVM=y
CONFIG_KVM_ARM_HOST=y
CONFIG_KVM_ARM_MAX_VCPUS=4
CONFIG_KVM_ARM_VGIC=y
CONFIG_KVM_ARM_TIMER=y

20 Апр, 12:19 #117 #976806

Как объявить переменную, которая будет доступна в нескольких точках программы, как в main, так и в других подпрограммах? (типа суперглобальной).
Есть такая идея:
1. В файле globaldef.c записать:
#include "globaldef.h"
charзвездочка global_line;
int global_line_sz;
2. В файле globaldef.h:
#ifndef globaldef_h
#define globaldef_h
extern charзвездочка global_line;
extern int global_line_sz;
#endif
3. И применение: В файле othcode.h где-нибудь в программе написать:
#include "globaldef.h"
void kek(void) {
strcpy(global_line, "KEK");
global_line_sz = 3;
}

Всё правильно понял? Так можно?

Ответы976813976814977049977059

20 Апр, 12:55 #118 #976813

>>976806
Зачем тебе файл реализации globaldef.c? Достаточно .h ведь ты не осуществляешь реализацию алгоритмов

Ответы976814977049

20 Апр, 12:57 #119 #976814

>>976813
>>976806
И вообще глобальные переменные использовать не рекомендуется

Ответы977054

20 Апр, 20:38 #120 #977035

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

20 Апр, 21:22 #121 #977049

>>976806
Все правильно, но не забывай об include guard

>>976813
Затем, чтобы застраховаться от проблем с повторным определением переменной.

Ответы977059

20 Апр, 21:25 #122 #977054

>>976814
Ага, вперед объявлять периферийные регистры микроконтроллера локально.

Ответы977060

20 Апр, 21:28 #123 #977059

>>976806
Неправильно только использование, потому что в твоем примере global_line не инициализирована, и копировать в нее строку нельзя. Нужен или malloc, или объявляй ее как массив.
(>>977049 - анон)

20 Апр, 21:29 #124 #977060

>>977054
Ну очевидно же, что рекомендация не касается экстремальных случаев. По большей части, когда хочется что-то глобальное, на самом деле достаточно file-scope.

21 Апр, 12:00 #125 #977213

>>974525
в какой из них?
тут как минимум два треда нужны

21 Апр, 13:52 #126 #977243

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

https://pastebin.com/5FfBvp95

21 Апр, 14:43 #127 #977266

Платиновый вопрос от сомневающегося
Есть такой вот код:
void nishtyakProcessing(void) {
char hugeArray[512*3];
//тут ништяки
}

Нужно в конце выполнения как-то освободить память, которая была выделена под hugeArray?

Ответы977268977290977312

21 Апр, 14:47 #128 #977268

>>977266
У меня прост всего 300 кб памяти

21 Апр, 15:17 #129 #977290

>>977266
Нет. Очищать память нужно только при динамическом выделении памяти.

21 Апр, 15:47 #130 #977312

>>977266
Переменные, объявленные внутри функции, называются автоматическими (есть даже ключевое слово auto для подтверждения этого факта, но его никто не указывает, потому что такие переменные auto по умолчанию). Задумайся, почему они называются именно так.

21 Апр, 21:08 #131 #977469

Посоветуйте, что почитать или посмотреть после того, как более-менее освоил for beginners.

Ответы977539977598977649

21 Апр, 23:58 #132 #977539

>>977469
Переходить к другим языкам.

Ответы977598

18143 Кб, Webm

22 Апр, 06:08 #133 #977598

>>977539
Дебич.
>>977469
На С можно писать все кроме веб-серверов, пиши. Освой GTK3/4 если гуи хочешь пилить.
Очень легкий и быстрый тулкий, хелловорды 11кб весят, кютям такое и не снилось.

Ответы977599977602

22 Апр, 06:10 #134 #977599

>>977598
Точнее все кроме веб сайтов, и то их можно на сишке шлепать.

sage # OP 22 Апр, 06:20 #135 #977600

> все кроме веб-серверов
Игорю не говори - расстроится.

22 Апр, 06:27 #136 #977602

>>977598
>GTK3/4 если гуи хочешь пилить.
>Очень легкий и быстрый тулкий, хелловорды 11кб весят
>критческие баги висят в трекере по 5-10 лет
>Нова версия жрет ресурсов как не в себя, имеет новые баги, и не фиксит ни одного старого.
>QT говно ясокзал кьютелалкисоснули.

Ответы977611

22 Апр, 07:47 #137 #977611

>>977602
Еще скажи что в Qt баги висят меньше маня.
Еще скажи что Qt не жрет еще больше.

Ответы977612

22 Апр, 07:55 #138 #977612

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

22 Апр, 12:05 #139 #977649

>>977469
>что почитать или посмотреть после того, как более-менее освоил for beginners.
ядро линуксовое

535 Кб, 697x403

900 Кб, 2272x1398

352 Кб, 1918x1017

1255 Кб, 1487x1080

22 Апр, 16:41 #140 #977833

Кто-нибудь, посоветуйте GUI для SDL2
и как его прилепить

22 Апр, 19:55 #141 #977965

Начал изучать Xlib для линукс и что-то офигел с того что мне это http://dfe.petrsu.ru/koi/posob/X/index.html руководство предлагает. Мне надо рисовать пиксели, а они мне предлагают создать графические контексты, для каждого выделить цвет фона и цвет переднего плана и рисовать ими. Но это же совсем не удобно. Как мне сделать так чтобы я мог просто создать буфер, где хранятся все пиксельные данные и чтобы я просто напрямую записывал их туда и отрисовывал их? Там было что-то про пиксельные карты, но я не знаю как прямо в них писать данные. Там разве что с помощью функций. Но это же медленно! Да и я не понял как разными цветами рисовать, мне что для каждого цвета теперь выделять структуру, в которую каждый раз записывать данные о цвете?
Может сразу перейти на SDL? Не будет ли слишком медленно? Я хочу написать свой собственный графический редактор, по удобности как MS Paint, но со всякими свистелками-перделками и редактором видео.

Ответы978027978030

22 Апр, 19:58 #142 #977967

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

Ответы978030

sage 22 Апр, 22:04 #143 #978027

>>977965
qt и gtk рисуют в память и гоняют битмапы. На локальной машине даже не гоняют, а держат в шареной с x-сервером памяти.

Это в общем, деталей не знаю.

Ответы978031

Dmitry 22 Апр, 22:11 #144 #978030

>>977965
>Xlib
Оно устарело безнадежно.
Если опенгл знаешь то пиши на Opengl+Wayland, еще FreeGlut в него может, и SDL тоже может.
Так что зависит от того насколько все высокоуровнево тебе надо, если SDL анонсировали поддержку вулкана то пиши на SDL однозначно.

>>977967
Просто процессоры слишком низкоуровневые, не хватает инструкций и ASIC модулей там.

Ответы978233

Dmitry 22 Апр, 22:12 #145 #978031

>>978027
x сервера нет на десктопах.

Ответы978034978637986588

22 Апр, 22:23 #146 #978034

>>978031
Щито?

Ответы978246

22 Апр, 22:28 #147 #978040

Немного оффтоп, но думаю тут есть люди, которые могут ответить. Вопрос в контексте windows, хотя за информацию по unix/линупс тоже буду благодарен.
Вот допустим, я написал .dll, функции из которого локальные и статические переменные точно свои для каждого процесса я хочу использовать в нескольких работающих одновременно процессах (допустим, их очень много). В таком случае, если несколько процессов, использующих эту .dll работают одновременно, то для каждого процесса в его виртуальную память (далее ВП) загружается своя копия .dll, и при создании каждого процесса из исполняемого файла загрузчик вписывает адреса вызова функций в секцию с таблицей импорта? Или загрузчик достаточно умён, чтобы использовать единожды загруженную .dll между несколькими процессами? Или такое верно только для системных .dll, а для пользовательских - только MMF в отдельном гигабайте ВП?

Ответы978059978062

22 Апр, 22:49 #148 #978059

>>978040
Да, загрузчик достаточно умен и в Windows, и в Linux. Код и константы общие (плюс/минус релоки для 32-битных либ), секции данных у всех свои, если не указано иное.

Ответы978063

sage 22 Апр, 22:51 #149 #978062

>>978040
>>978039
http://eli.thegreenplace.net/2011/08/25/load-time-relocation-of-shared-libraries/
http://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-libraries/
http://eli.thegreenplace.net/2011/11/11/position-independent-code-pic-in-shared-libraries-on-x64

22 Апр, 22:52 #150 #978063

>>978059
>если не указано иное.
Как указать иное? Значение characteristics в заголовке секции поставить на какой нибудь %shared%?
И как в теории выглядит предоставление другим процессам функций из .dll, загруженный в первый процесс, через MMF?

Ответы978069

22 Апр, 23:03 #151 #978069

>>978063
Да, ты можешь указать IMAGE_SCN_MEM_SHARED в заголовке секции (или линкеру сказать /SECTION:имя,S). Это достаточно древний механизм, у него есть ограничения, поэтому удобнее использовать MMF, если хочется делиться данными.
> как в теории выглядит предоставление другим процессам функций
Ну несколько процессов используют одну и ту же страницу физической памяти. Страницы copy-on-write, если какую-то поменять, она станет частной. Примерно как в MMF, да.

14 Кб, 336x229

23 Апр, 09:21 #152 #978233

>>978030
Не политика, это просто пиктограмма пустыни
>Opengl+Wayland, еще FreeGlut
Я так и не смог научиться программировать на вейланде и фриглуте, так что решил использовать опенгл+Xlib. Но вообще я так изначально планировал. Но дело в том что когда я использовал виндовс простите я и там программировал на видновс. И вот я делал программу, которая открывает картинки моего собственного формата, который я придумал. Ну вот написал в хекс эдиторе 25-байтную картинку, открыл, а там были лишние 4 жёлтых пикселя. Я подумал что это из-за того что опенгл это среда для 3D и поэтому оно мне так нарисовало. Какое решение этой проблемы?

Ответы978625

23 Апр, 10:33 #153 #978243

>>975883
f-a*e; - это что за хуйня?

23 Апр, 10:51 #154 #978246

>>978034
не обращай внимание на поехавшего.

23 Апр, 11:21 #155 #978256

Посоны, Вы меня часто выручали, помогите
Сейчас - сравнивается слово (массив) со словом из словаря (построчно). Могу ли я изменить код так, чтобы показывались слова не один в один, а похожие? Например, в словаре есть слово "хрен", "хрень" и "хреновый". Сейчас на выводе показывает только "хрен", а надо чтоб все вывел. Можно ограничить совпадение всего по 4 буквам https://ideone.com/8UQP9l

Ответы978487

23 Апр, 11:53 #156 #978262

>>973297 (OP)
Аноны, помогите долбоящеру (мне). https://pastebin.com/6ydZqPif
Не обращайте внимание на стены кода. Проблема в том что у меня есть 2 глобальные переменные — u32 holst_x и u32 holst_y эквивалентно unsigned int holst_x и unsigned int holst_y, в функции main им присваиваются значения по 400. И вот в этой же функции в консоль выводит 400 400. Но вот в другой функции в консоль выводится 0 0. Какого фига? Как такое может быть, это же глобальные переменные и значения им присваиваются с самого начала.

Ответы978264

23 Апр, 11:55 #157 #978264

>>978262
та больной. ты их создал-продублировал локально.

Ответы978299

23 Апр, 12:57 #158 #978299

>>978264
огромный фейспалм мне
а тебе спасибо.

23 Апр, 13:03 #159 #978303

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

Ответы978374

23 Апр, 14:02 #160 #978374

>>978303
Никак, икслибы больше нет в линуксах и бздях.

Ответы978398

23 Апр, 14:23 #161 #978398

>>978374
>Никак, икслибы больше нет в линуксах и бздях.
А что там заместо?

Ответы978404978405

23 Апр, 14:33 #162 #978404

>>978398
радуга.

23 Апр, 14:34 #163 #978405

>>978398
Ничего. У нас тут есть поехавший, который живет в альтернативной реальности. Раньше он был неймфагом, а теперь иногда шифруется.
Что касается вопроса - создай контекст опенгл, натяни текстуру на квад, рисуй в текстуру.

Ответы978442

23 Апр, 15:31 #164 #978442

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

Ответы978627

23 Апр, 16:20 #165 #978487

>>978256
бамп

Ответы978493

23 Апр, 16:27 #166 #978493

>>978487
Юзай strncmp

Ответы978683

23 Апр, 17:16 #167 #978538

>>973297 (OP)
Подскажите учебник, где описывается как сделать или как устроен простой графический редактор типа Pinta, Krita хотя они не такие уж и простые и надо именно для линукс.

23 Апр, 19:08 #168 #978625

>>978233
>Я так и не смог научиться программировать на вейланде
Забей, никто не научился, кроме гномуразрабов

23 Апр, 19:09 #169 #978627

>>978442
> опенгловскую функцию для записи одного пикселя в буфер кадра
Нерационально гонять в видюху данные по пикселам. Это максимальные тормоза, которые только можно придумать. Есть glTexSubImage2D для частичного изменения.
И вообще, ты уверен, что у тебя отрисовка тормозит, а не обработка событий, например?

> Подскажите учебник, где описывается как сделать или как устроен
Очевидно, что можно пойти на гитхаб, открыть исходники и посмотреть. Заодно можно сходить на блендер посмотреть (если не страшно).
> надо именно для линукс
Я бы первым делом написал прослойку, чтобы мой редактор не зависел от ОС (сейчас это как никогда актуально) и от графического API.

Ответы978688

23 Апр, 19:22 #170 #978637

>>978031
линуксоиды уровня /pr/

23 Апр, 20:39 #171 #978683

>>978493
Напиши за меня

Ответы978684

23 Апр, 20:40 #172 #978684

>>978683
Нет

Ответы978694

23 Апр, 20:45 #173 #978688

>>978627
>Нерационально гонять в видюху данные по пикселам
Так я как раз и гоняю по целым частям. Но это же гораздо медленнее. Приходится каждую иттерацию цикла заново отрисовывать картинку. Но когда я сделал так, чтобы отрисовывалось раз в 4 иттерации всё стало летать. Хотя всё равно есть проблемы.
>пойти на гитхаб
Я так и делал, но ничего не понял. Даже сами исходники не нашёл. Да и вообще я находил несколько десятков разных файлов, непонятно где код находится.
>Я бы первым делом написал прослойку, чтобы мой редактор не зависел от ОС
Но зачем если я в ближайшие десятки лет собираюсь использовать линукс? Если буду переходить на другую ОС, то это мне сначала надо создать процессор с моей собственной архитектурой, а на это мне понадабятся десятки лет. И только потом я буду писать свою собственную ОС для неё. А потом ещё пару десятков лет улучшать процессор, чтобы, например тактовая частота была хотя бы 1 GHz. И это, конечно же, в лучше случае. А так как это всё займёт лет 50 то надо бы найти способ как омолаживать себя, а на это нужны хуевы тучи денег, власти, человеческого ресурса, пойти против законов страны и так далее.

23 Апр, 20:54 #174 #978694

>>978684
Ну, пожалуйста

Ответы978695

23 Апр, 20:55 #175 #978695

>>978694
Нет

Ответы978698

23 Апр, 21:03 #176 #978698

>>978695
Ну, пожалуйста

Ответы978700

23 Апр, 21:04 #177 #978700

>>978698
Нет

Ответы978919

24 Апр, 04:25 #178 #978919

>>978700
Ну, пожалуйста

Ответы978932

24 Апр, 07:19 #179 #978932

>>978919
Пожалуйста, соси хуй, быдло.

Ответы978994979005

24 Апр, 09:45 #180 #978963

>>975883
https://pastebin.com/VvNZuCeS

24 Апр, 10:43 #181 #978994

>>978932
Пожалуйста, ты

24 Апр, 11:07 #182 #979005

>>978932
Ебать спасибо тебе, я осилил.
Пожалуйста, оставайся человеком.

24 Апр, 19:38 #183 #979272

Как в файле заменить 1 байт, сохранив все остальное содержимое?

#include <stdio.h>
#define ADDR 3
#define VALUE 0xAB
void main()
{
FILE* file;
file = fopen("data.bin", "ab+");
if (file)
{
fseek(file, ADDR, SEEK_SET);
fputc(VALUE, file);
fclose(file);
}
}

Хуйня какая-то выходит, fseek сука ебаная не работает, и байт записывается в конец файла. А если вместо "ab+" задать "wb+", то весь старый файл стирается.

Ответы979288979303

24 Апр, 20:26 #184 #979288

>>979272
rb+. Да, режимы файлов у fopen - наследие давних темных времен, и максимально непонятны для нормальных людей.

Ответы979369979375

sage 24 Апр, 21:01 #185 #979303

>>979272
заебали дегенераты. тебе сложно man fopen сделать?

идите, короче, все нахуй. хуй я сюда больше зайду.

Ответы979338

24 Апр, 21:47 #186 #979338

>>979303
Сделал тебе за щеку, проверяй.

24 Апр, 22:27 #187 #979369

>>979288
>максимально непонятны
Ты настолько туп, что не понимаешь, что a это append?

24 Апр, 22:42 #188 #979375

>>979288
> максимально непонятны для нормальных людей
>нормальных людей
Ты сейчас про каких нормальных людей? Которые пивасик в подъездах хлещут или головой привыкли думать?

Ответы979386

24 Апр, 22:52 #189 #979386

>>979375
> Ты сейчас про каких нормальных людей?
Которые не застали машины, на которых размер файла в фс не хранился, сами файлы писались "записями" и тому подобные веселые вещи, под которые, собственно и дизайнили fopen.

Ответы979400979413

24 Апр, 23:04 #190 #979400

>>979386
>не застали машины, на которых размер файла в фс не хранился, сами файлы писались "записями" и тому подобные веселые вещи, под которые, собственно и дизайнили fopen
Ты про рубистов? В мк правила не особо меняются

Ответы979408

24 Апр, 23:12 #191 #979408

>>979400
В мк часто обрезанная или самопальная либц, поэтому для работы с фс пишутся собственные велосипеды. И это очень часто не сишные стримы. Или пародия на них. Или поддерживаются только r, w и r+.

24 Апр, 23:25 #192 #979413

>>979386
Где в дизайне fopen торчит то, что он не знает размера файла?

Ответы979416

24 Апр, 23:29 #193 #979416

>>979413
"a"

Ответы979417

24 Апр, 23:30 #194 #979417

>>979416
Нет.

Ответы979421

24 Апр, 23:32 #195 #979421

>>979417
Да. Сходи посмотри на досовый апи для работы с файлами, который с FCB (или на GET/PUT в бейсике, да и на OPEN тоже). Вот из тез времен у нас появился "a" и различие между "a" и "a+".

Ответы979425979442979450

24 Апр, 23:33 #196 #979425

>>979421
fopen дизайнили не для DOS, а для UNIX, ты обосрался.

Ответы979482

24 Апр, 23:51 #197 #979442

>>979421
Как "a" способно писать в конец файла при незнании размера файла?

25 Апр, 00:05 #198 #979450

>>979421
>досовый апи
>fopen
Упитанно как-то

25 Апр, 00:56 #199 #979482

>>979425
А где я говорил, что fopen дизайнили для дос? Я привел пример старого интерфейса, заточенного под работу с записями фиксированного размера вместо потока байтов. Раньше все дрочили на записи.

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

Ответы979495

25 Апр, 01:12 #200 #979495

>>979482
Т.е. ты кагбэ намекаешь, если бы не DOS, то вместо "a" можно было бы использовать seek в конец + запись?

Ответы979507

25 Апр, 02:09 #201 #979507

>>979495
> вместо "a" можно было бы использовать seek в конец + запись
Я тебе какбэ намекну, что в 75 году, когда в предке libc появился copen, в котором появился 'a', при попытке записи как раз тот самый seek и делался.

А про DOS я тебе пояснил уже, заебал. DOS сам по себе тут ни при чем, его еще в проекте не было в те времена, гейтс развлекался написанием бейсиков.

Ответы979527

25 Апр, 04:29 #202 #979527

>>979507
>при попытке записи как раз тот самый seek и делался.
Куда делался seek?

Ответы979531

25 Апр, 05:50 #203 #979531

>>979527
Туда же, куда и магнитные ленты, деда!

25 Апр, 07:24 #204 #979553

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

6 Кб, 524x98

25 Апр, 14:43 #205 #979821

>>973297 (OP)
не могу понять в чем ошибка
https://pastebin.com/BRF7ntaL

Ответы979830

25 Апр, 14:53 #206 #979830

>>979821
>if-else
полуёбок

25 Апр, 15:34 #207 #979870

Всем привет! А есть люди пишущие photonовские приложения (под qnx)? Если таковы имеются подскажите пожалуйста с помощью какого виджета выводить текст. Пробовал через multitext, но ему нужно передавать готовые строки, а мне нужно формированные. Кроме как сначала сформировать массив через sptintf ничего не могу придумать. Спасибо.

25 Апр, 15:39 #208 #979876

Какой компилятор поддерживает интеловский синтаксис ассемблера?

Ответы979910

25 Апр, 16:06 #209 #979896

>>973297 (OP)
Подскажите нормальную библиотеку для линукса, чтобы я мог пиксельные данные прямиком в память записывать.
Я сейчас использую OpenGL + Xlib, икслиб выглядит как бред шизофреника, а опенгл неудобный, ведь у него координаты с плавающей точкой, как раз для 3D графики и мне приходится использовать функцию glDrawPixels(), которая перерисовывает всё окно, а это медленно. В икслибе я мог бы писать в пиксмап, но как это сделать если мне не даётся указатель на него, а лишь дескриптор?

Ответы979914979972

25 Апр, 16:21 #210 #979910

>>979876
Все. Если у тебя проблема с GCC, то -masm=intel.

25 Апр, 16:23 #211 #979914

>>979896
> пиксельные данные прямиком в память
В какую память? Кто тебе мешает писать в память? Ты хочешь zero-copy? Не надейся даже.

Ответы979972

25 Апр, 18:12 #212 #979972

>>979914
В фреймбуфер я думаю.
В опегл разве нет режима чтобы пиксели выводить?
>>979896
> библиотеку для линукса, чтобы я мог пиксельные данные прямиком в память записывать.
Давн а чего ты на иксах вообще сидишь?
Wayland + pixman.

Ответы980525

13 Кб, 388x79

14 Кб, 388x79

26 Апр, 13:10 #213 #980425

>>973297 (OP)
Сап. Лабодаун на связи. Вот задание: Вычислить значения всех переменных в заданном фрагменте программы при выполнении каждой строки. Для указателей следует указывать номер указуемого элемента
массива и значение этого элемента. В цикле значения переменных и указателей следует
указывать для каждой итерации цикла.
Вот, собсна, в чем вопрос. Что делает 2 строчка, а именно цикл? С остальным вроде понятно.

Ответы980508

26 Апр, 15:09 #214 #980508

>>980425
upd: С циклом понятно. Что значит последняя строчка?

26 Апр, 15:47 #215 #980525

>>979972
>Давн а чего ты на иксах вообще сидишь
Потому что нашёл уроки по нему, это единственные либы, где я умею создавать окно и рисовать там опенглом. Пробовал SDL, но не понравилось. Очень странная библиотека. По вейланду уроков не нашёл.
>pixman
спасибо, попробую.

Ответы980527980550

26 Апр, 15:55 #216 #980527

>>980525
Я тебе закину по вейланду книжку, не колхозься с иксами только

Ответы980541

26 Апр, 16:25 #217 #980541

>>980527
> по вейланду книжку
Бесполезная трата времени. Сдох mir, сдохнет и вейланд за ним. А иксы как жили, так и будут.

Ответы980550980643986588

233 Кб, 1920x1080

26 Апр, 16:34 #218 #980549

Привет аноны, начал изучать Си и тут такая ошибка.

Ответы980551980553980562980570

26 Апр, 16:36 #219 #980550

>>980541
Ой иди нахуй, диванный кукаретик.
>>980525
https://jan.newmarch.name/Wayland/index.html
Вот держи.
Если надо выводить окна с простой графикой пробуй FreeGLUT версию с гитхаба, она может в вейланд, все просто.
А если пихать именно пиксели то pixman должен быть сильно быстрее как я понял.

Ответы980560

26 Апр, 16:36 #220 #980551

>>980549
> my func
Но это нихуя не you func, подумай.

Ответы980552

26 Апр, 16:37 #221 #980552

>>980551
my func это строка, почему printf ее не печатает

Ответы980554

26 Апр, 16:37 #222 #980553

>>980549
main - главная функция где работает код, суй тот принтф в main.

Ответы980555

26 Апр, 16:38 #223 #980554

>>980552
void main(void){
printf("dash");
}

26 Апр, 16:39 #224 #980555

>>980553
а разве функции можно объявлять внутри main ?

Ответы980633

189 Кб, 1920x1080

26 Апр, 16:40 #225 #980556

вот опять

Ответы980562980570

26 Апр, 16:52 #226 #980560

>>980550
>Ой иди нахуй, диванный кукаретик.
Это ты тот долбоёб, который писал, что не осталось ни одного тайлового менеджера с поддержкой иксов, все на вяленый переписали?

Ответы980634

26 Апр, 16:53 #227 #980562

>>980549
>>980556
Просто иди нахуй с этого треда.

26 Апр, 17:03 #228 #980570

>>980556
>>980549
Это такой троллинг тупостью? Если нет, то твой текстовый файл должен содержать всякие декларации и 1 функцию, в которой идет работа. Ты можешь выполнять другие функции только внутри функции main(), а декларировать их и давать им дефиниции ты можешь в любом месте этого или соседних файлов

Ответы980571980572

26 Апр, 17:03 #229 #980571

>>980570
>Это такой троллинг тупостью?
Да.

26 Апр, 17:05 #230 #980572

>>980570
спасибо

одинокий член 26 Апр, 17:09 #231 #980574

Тупой вопрос
Какие ограничения есть для динамических массивов в Си?
Типа ограничения только от ОС и компилятора? И какие они? Объясните суть

Ответы980577

26 Апр, 17:10 #232 #980577

>>980574
Вообще никаких.

Ответы980579980602

26 Апр, 17:11 #233 #980579

>>980577
Окей, тогда помоги ответить на вопрос
Как можно оценить максимальное количество элементов, которые могут быть созданы в динамическом массиве?
это к Си относится

Ответы980580980598

26 Апр, 17:12 #234 #980580

>>980579
Чуть меньше нуля, очевидно же.

Ответы980582

26 Апр, 17:13 #235 #980582

>>980580
Что именно меньше нуля? Можно чуть более развернуто ответить?

Ответы980584

26 Апр, 17:14 #236 #980584

>>980582
Ну тогда точно меньше нуля.

Ответы980585

26 Апр, 17:19 #237 #980585

>>980584
Что меньше нуля-то?

Ответы980588

26 Апр, 17:26 #238 #980588

>>980585
Ой, всё.

26 Апр, 17:46 #239 #980595

>>973297 (OP)
Есть массив :
uint8_t buf[512];
Можно с него как-то прочитать значение в переменную uint32_t?

Ответы980596

26 Апр, 17:46 #240 #980596

>>980595
memcpy

Ответы980601

26 Апр, 17:47 #241 #980598

>>980579
Чуть меньше, чем объем ОЗУ/sizeof(элемента).

Ответы980604980605

26 Апр, 17:54 #242 #980601

>>980596
Креативная идея, анон. Спасибо
но у меня всё равно байты в порядке little endian, так что придется городить огород из сдвигов и побитовых ИЛИ

Ответы980650

26 Апр, 17:54 #243 #980602

>>980577
Кстати, а почему GCC поддерживает объявления типа
Scanf("%d", &x);
Int A[x];
А компилер майкрософта нет?

Ответы980603980653

28 Кб, 600x142

26 Апр, 17:56 #244 #980603

>>980602

26 Апр, 18:02 #245 #980604

>>980598
А накладывается ли ограничение от компилятора?

26 Апр, 18:04 #246 #980605

>>980598
Играет ли при этом роль подкачка?

26 Апр, 19:11 #247 #980633

>>980555
Можно

26 Апр, 19:12 #248 #980634

>>980560
Не он, но грубо говоря так и есть, иксы подыхают.

sage 26 Апр, 19:21 #249 #980643

>>980541
Двачую этого. Мало того, Vulkan тоже не жилец.

Ответы980651

26 Апр, 19:37 #250 #980650

>>980601
>Креативная идея
memcpy — стандартный способ type punning-а; без нарушения strict aliasing.

26 Апр, 19:37 #251 #980651

>>980643
Я был настолько толстым что уже просто вытекал из треда

sage 26 Апр, 19:38 #252 #980653

>>980602
> Scanf("%d", &x);
> Int A[x];
Потому что с дефолтовым компилятором майкрософта студия из Си поддерживает только то, что требуется для C++11/14 (то есть, почти все, но вот VLA в крестах нет). Зато с clang/c2 она отлично компилирует и твой код тоже.

28 Апр, 18:54 #253 #981593

>>973297 (OP)
Какие же ебанутые числа с плавающей запятой! Неужели так сложно было сделать их нормальными, чёткими? Почему вообще им в конец добавляются сверхмаленькие дроби?

Ответы981605

28 Апр, 19:32 #254 #981605

>>981593
>Почему вообще им в конец добавляются сверхмаленькие дроби?
Гугли стандарт IEEE754.
>Неужели так сложно было сделать их нормальными, чёткими?
Да, есть такие, это тип FIXED.

29 Апр, 15:17 #255 #981959

>>973297 (OP)
Подскажите функции чтобы я мог перевести массив байтов с пиксельными данными RGB в джпеги, пнг всякие и всё такое.
Загуглить не получилось.

Ответы981969982098

29 Апр, 15:52 #256 #981969

>>981959
magickwand

47 Кб, 1281x387

29 Апр, 17:32 #257 #982046

>>973297 (OP)
Так, подскажите ньюфагу где я обосрался (на пике педовикия - сортировка выборкой) или это хуйня с 17 вижуал?

Ответы982078982111

29 Апр, 18:40 #258 #982078

>>982046
Ща мы всё бросим и побежим в говнокоде ньюфага копаться.

Ответы982095

29 Апр, 19:09 #259 #982095

>>982078
>в говнокоде ньюфага копаться.
ловите ньюфага

Ответы982103

sage 29 Апр, 19:12 #260 #982098

>>981959
libjpeg/libpng.

29 Апр, 19:20 #261 #982103

>>982095
Не ловите, пусть себе съёбывает отсюда.

sage 29 Апр, 19:29 #262 #982111

>>982046
У тебя обмен элементов не в том блоке. Продолжай писать выражения с if в строчку и страдать.

Ответы982114

29 Апр, 19:33 #263 #982114

>>982111
Т.е. если if написать в 2 строчки, заработает?

Ответы982115

sage 29 Апр, 19:36 #264 #982115

>>982114
Нет, но будет гораздо проще увидеть, что ты ошибся блоком, когда бездумно переписывал алгоритм из вики. А еще можно всегда ставить фигурные скобки, тогда еще проще читаться будет.

Ответы982116982134

29 Апр, 19:37 #265 #982116

>>982115
>Нет
А к чему ты написал
> Продолжай писать выражения с if в строчку и страдать.
?

Ответы982117

sage 29 Апр, 19:39 #266 #982117

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

Ответы982118982134

29 Апр, 19:41 #267 #982118

>>982117
Что обмен попал не в тот блок заметно независимо от того, во сколько строк написан if. Ещё раз, к чему ты написал про if?

Ответы982134

29 Апр, 20:02 #268 #982134

>>982115
>>982117
>>982118
Ньюфаг репортинг, оно однохуйствено неработает, я чекал

Ответы982139

sage 29 Апр, 20:16 #269 #982139

>>982134
Продолжай юзать ксор для обмена элементов :-D. Он ведь так замечательно меняет их местами, если i == min.

Ответы982141982149

29 Апр, 20:21 #270 #982141

>>982139
>Продолжай юзать ксор для обмена элементов
Но ведь это так по-ксакепски. Все одноклассники обзавидуются.

Ответы982142

sage 29 Апр, 20:23 #271 #982142

>>982141
По ксакепски менять в инкременте for. А в теле цикла только ламеры код пишут.

29 Апр, 20:50 #272 #982149

>>982139
какой ты траль и молодец, чсв уже поднялось до небес?

01 Май, 02:09 #273 #982729

>>973297 (OP)
Аноны, посоветуйте опен сорс проекты на С.
Нравится мне этот язык, хочу со временем перекатиться манямечты, но пока нашел подработку на пхп, жрать что-то надо.
В свободное время попробую продолжать вкатываться в С.

Ответы982749

01 Май, 08:31 #274 #982749

>>982729
https://whatcanidoformozilla.org/#!/progornoprog/proglang

Ответы982783

01 Май, 11:00 #275 #982783

>>982749
Спасибо анон!

Ответы983475

01 Май, 14:15 #276 #982889

https://pastebin.com/ZtGztJqB
Не получается сделать функцию для сохранения картинки зтп с помощью png.h
GCC пишет что поинтер инкомпатибловый, но я непонимаю какой надо поставить. Не получается.

gcc Grafinaize.c -o Grafinaize -lX11 -lGL -lpng
Grafinaize.c: In function ‘save_img’:
Grafinaize.c:151:15: попередження: passing argument 1 of ‘png_set_rows’ from incompatible pointer type [-Wincompatible-pointer-types]
png_set_rows(si,sipi,rows);
^~
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:1907:1: зауваження: expected ‘png_const_structrp {або const struct png_struct_def restrict}’ but argument is of type ‘FILE {або struct _IO_FILE }’
PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr,
^
Grafinaize.c:152:16: попередження: passing argument 1 of ‘png_write_png’ from incompatible pointer type [-Wincompatible-pointer-types]
png_write_png(si,sipi,PNG_TRANSFORM_IDENTITY,NULL);
^~
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:2368:1: зауваження: expected ‘png_structrp {або struct png_struct_def restrict}’ but argument is of type ‘FILE {або struct _IO_FILE }’
PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr,
^
Grafinaize.c:153:16: попередження: passing argument 1 of ‘png_write_end’ from incompatible pointer type [-Wincompatible-pointer-types]
png_write_end(si,sipi);
^~
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:1456:1: зауваження: expected ‘png_structrp {або struct png_struct_def restrict}’ but argument is of type ‘FILE {або struct _IO_FILE }’
PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr,
^
Grafinaize.c:154:27: попередження: passing argument 1 of ‘png_destroy_write_struct’ from incompatible pointer type [-Wincompatible-pointer-types]
png_destroy_write_struct(&si,NULL);
^
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:1473:1: зауваження: expected ‘png_structpp {або struct png_struct_def }’ but argument is of type ‘FILE {або struct _IO_FILE *}’
PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr,
^

01 Май, 14:15 #276 #982889

https://pastebin.com/ZtGztJqB
Не получается сделать функцию для сохранения картинки зтп с помощью png.h
GCC пишет что поинтер инкомпатибловый, но я непонимаю какой надо поставить. Не получается.

gcc Grafinaize.c -o Grafinaize -lX11 -lGL -lpng
Grafinaize.c: In function ‘save_img’:
Grafinaize.c:151:15: попередження: passing argument 1 of ‘png_set_rows’ from incompatible pointer type [-Wincompatible-pointer-types]
png_set_rows(si,sipi,rows);
^~
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:1907:1: зауваження: expected ‘png_const_structrp {або const struct png_struct_def restrict}’ but argument is of type ‘FILE {або struct _IO_FILE }’
PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr,
^
Grafinaize.c:152:16: попередження: passing argument 1 of ‘png_write_png’ from incompatible pointer type [-Wincompatible-pointer-types]
png_write_png(si,sipi,PNG_TRANSFORM_IDENTITY,NULL);
^~
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:2368:1: зауваження: expected ‘png_structrp {або struct png_struct_def restrict}’ but argument is of type ‘FILE {або struct _IO_FILE }’
PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr,
^
Grafinaize.c:153:16: попередження: passing argument 1 of ‘png_write_end’ from incompatible pointer type [-Wincompatible-pointer-types]
png_write_end(si,sipi);
^~
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:1456:1: зауваження: expected ‘png_structrp {або struct png_struct_def restrict}’ but argument is of type ‘FILE {або struct _IO_FILE }’
PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr,
^
Grafinaize.c:154:27: попередження: passing argument 1 of ‘png_destroy_write_struct’ from incompatible pointer type [-Wincompatible-pointer-types]
png_destroy_write_struct(&si,NULL);
^
In file included from /usr/include/png.h:370:0,
from Grafinaize.c:8:
/usr/include/png.h:1473:1: зауваження: expected ‘png_structpp {або struct png_struct_def }’ but argument is of type ‘FILE {або struct _IO_FILE *}’
PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr,
^

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

sage 02 Май, 07:47 #277 #983409

>>982889
Это уже ни в какие ворота не лезет. man libpng. И называй переменные по-человечески.
> но я непонимаю какой надо поставить
Тебе компилятор чистейшим украино-английским языком пишет, что он там expected.

02 Май, 12:05 #278 #983475

>>982783
Вообще там сложные штуки клепают. Попробуй в гитхабе посмотреть раздел /trending/, там язык можно выбрать.

02 Май, 18:39 #279 #983671

>>982889
Героям слава.

03 Май, 15:23 #280 #984155

>>973297 (OP)
Анонасы здарова, дайте книгу или пособие или блять что-то что вмещает в себя все аспекты языка ну или хотя-бы что-то кроме основ и "воды" (низкоуровневый си, сетевое программирование)

Ответы984157

03 Май, 15:23 #281 #984156

>>973297 (OP)
Анонасы здарова, дайте книгу или пособие или блять что-то что вмещает в себя все аспекты языка ну или хотя-бы что-то кроме основ и "воды" (низкоуровневый си, сетевое программирование)

Ответы984157

03 Май, 15:25 #282 #984157

>>984155
>>984156
>или блять что-то что вмещает в себя все аспекты
Boku no Piko.

Ответы984168

03 Май, 15:44 #283 #984168

>>984157
ты натурал?

Ответы984169

03 Май, 15:46 #284 #984169

>>984168
А ты - нет.

Ответы984170

03 Май, 15:47 #285 #984170

>>984169
сам

Ответы984173

03 Май, 15:50 #286 #984173

>>984170
>этот школопидор
Ясно.

24 Кб, 481x212

03 Май, 18:09 #287 #984227

Сап, прогач. Пояни, почему j+1 в %c формате выводится как / ?

Ответы984228

03 Май, 18:13 #288 #984228

>>984227
Потому как 92 символ это слэш.

Ответы984233

03 Май, 18:16 #289 #984233

>>984228
Блядь, вот я долбаеб, спасибо!

03 Май, 18:40 #290 #984244

Сап, программач. Есть один говнокод, который я пилю, и по которому есть несколько вопросов:

fscanf_s(fin, "%d"); - юзаю эту хню, чтобы пропустить при считывании одну цифру, которую я считывал заранее. Я этой хней таки проебал 2 бита в стеке, и вообще есть с нее утечка?

Алсо, есть у кого простая и годная литература по WinAPI, чтобы даже такой аутист как я понял?

Ответы984363990687

03 Май, 18:54 #291 #984251

C# NET

https://pastebin.com/dxESjpyV

1>------ Сборка начата: проект: B, Конфигурация: Release Any CPU ------
B.vb(38,9): error BC36595: Метод не может одновременно содержать оператор "On Error Resume Next" и определение переменной, которая используется в лямбда-выражении или выражении запроса.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Что делать, аноны?

Ответы984384984388986588

03 Май, 21:25 #292 #984363

>>984244
утечка стека? что-то новое

Ответы984413

03 Май, 21:27 #293 #984369

>>982889
ахвахпхвазхвзпвхазвзпвазпх
gcc на украинском
АЗПХВАЗВПЗВЗАПВЗАВЗПЗВПА

sage 03 Май, 21:43 #294 #984384

>>984251
> C#
> On Error Resume Next
Чего только не встретишь в треде по Си.

03 Май, 21:47 #295 #984388

>>984251
>тред по С
>С# NET
>фаил из-под шконки вижуал бейсика
>полное описание ошибки
Записаться к офтальмологу

03 Май, 22:27 #296 #984413

>>984363
Т.е. ничего не утечет? Збс, буду дальше юзать эту функцию таким образом.

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

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

Ответы984414984451

03 Май, 22:28 #297 #984414

>>984413
Карта у меня - массив чисел, инфа о размере массива есть в файле.

sage 03 Май, 23:05 #298 #984451

>>984413
> Т.е. ничего не утечет?
Там в формате звездочка, запрещающая присваивание? Тогда все норм. Нет звездочки - UB. А вот юзать _s - зашквар, скажи майкрософту -D_CRT_SECURE_NO_WARNINGS и живи спокойно, используя нормальные функции из стандартной библиотеки, а не эту ссанину.

> годная литература по WinAPI
Рихтер, Фень Юань, потом Руссинович.

> не открывая файл 2 раза
Покажи пример. А вообще, fseek(fp, SEEK_SET, 0), а еще лучше rewind.

05 Май, 23:01 #299 #985546

Ребята, что есть из IDE для ньюфагов?

Ответы985553985638985640985675986564986740

05 Май, 23:26 #300 #985553

>>985546
Студия, Pelles C, Code::Blocks и всякие джаваподелия (CLion, Eclipse CDT)

06 Май, 07:39 #301 #985638

>>985546
Geany, потом можешь на Code::Blocks пересесть

Ответы985664

06 Май, 08:15 #302 #985640

>>985546
Code::Blocks. Удобный, небольшой, GCC из коробки.

06 Май, 09:31 #303 #985664

Семен в треде! Ладно, шучу.
>>985638
>Geany
Эт ж текстовый редактор вообще.
Я сначала сильва поставил, но он от меня что-то постоянно требует и не хочет компилить.
Поставлю тогда кодоблоки, спасибо.

Ответы986114986594

06 Май, 10:22 #304 #985674

>>973297 (OP)
Я же надеюсь что gcc, когда переменная умножается или делится на 2, 4, 8, etc ставит в ассемблерных командах битовый сдвиг, а не mul. Это так?

Ответы985726986266

06 Май, 10:23 #305 #985675

>>985546
gcc и командная строка.

06 Май, 11:59 #306 #985726

>>985674
Привет. Ты к нам из восьмидесятых? Да, гцц умеет оптимизировать код. Если интересно, можешь сходить на https://godbolt.org/ и посмотреть выхлоп.

06 Май, 23:15 #307 #986114

>>985664
> Эт ж текстовый редактор вообще.
Ебал тя. На опенсурсе хорошо спасает. Умеет компилить.

07 Май, 12:21 #308 #986266

>>985674
Поиграйся с флагами оптимизации. gcc еще и не такое умеет.

07 Май, 16:45 #309 #986411

>>973297 (OP)
Можно ли из одной написанной программы вызвать другую или, например, ввести втроку в эмулятор терминала? И как?

Ответы986505

07 Май, 20:44 #310 #986505

>>986411
> Можно ли из одной написанной программы вызвать другую
system() и прочие popen().

07 Май, 22:34 #311 #986564

>>985546
Visual Studio

Ответы986565

07 Май, 22:36 #312 #986565

>>986564
+1

07 Май, 23:05 #313 #986588

>>980541
>>984251
>>982889
>>978031
Обосрался с этого треда

07 Май, 23:13 #314 #986594

>>985664
>C
>IDE
Охуеваю с нынешних макак.

Ответы986617986702

08 Май, 00:11 #315 #986617

>>986594
Не писал ничего крупнее хелловорлда - проходи мимо, используй ed и cc.

Ответы986618986763

08 Май, 00:13 #316 #986618

>>986617
>Не писал ничего крупнее хелловорлда - проходи мимо, используй Micro-emacs
Пофиксил

08 Май, 09:37 #317 #986702

>>986594
Зачем насиловать себя вимами и емаксами, когда есть божественная Visual Studio с Clang/C2

Ответы986763

08 Май, 12:15 #318 #986737

Ананасы, поясните, когда линупсы перекатятся на Wayland, SDL 1 отрисовку делать уже не сможет? Он же через Х11 работает, я правильно понимаю?

Ответы986741986742

08 Май, 12:17 #319 #986740

>>985546
Anjuta бери. Самый незамороченный и не кривой интерфейс.

08 Май, 12:18 #320 #986741

>>986737
>SDL 1 отрисовку делать уже не сможет?
Ага, но во второй версии уже есть экспериментальная поддержка.

08 Май, 12:25 #321 #986742

>>986737
Поясняю: иксы совершенно никуда не денутся еще лет 20 минимум. В том очень маловероятном случае, если вэйланд взлетит, ты можешь продолжать пользоваться иксовым апи xwayland.

Ответы986749

08 Май, 12:34 #322 #986749

>>986742
>если вэйланд взлетит
Федору уже на вейланд вытащили так-то. А значит скоро гном и убунта тоже на него переедет.

Ответы986764

08 Май, 12:59 #323 #986763

>>986702
>>986617
Я, другой анон, пишу сейчас графический редактор и непонимаю о чём вы говорите. Уже более 400 строк говнокода, научил свою программу рисовать разными цветами и разными инструментами и изменять масштаб. Это считается хелловорлдом?
Я gdb так и не научился пользоваться и незнаю зачем он нужен, что ещё за вимы и емаксы, о которых вы говорите тоже непонимаю. Использую gedit, gcc и эмулятор терминала, нафиг мне ваши непонятные IDE.

Ответы986782

08 Май, 13:01 #324 #986764

>>986749
зачем юзать эти сорта говна?

08 Май, 13:48 #325 #986782

>>986763
> непонимаю о чём вы говорите
> Уже более 400 строк
Вот будет 400 тысяч - поймешь. Пока ты сигнатуры функций своих помнишь и рефакторить можешь руками, и знаешь, в каком файле что определено, и не абузишь макросы - тебе вполне достаточно любого текстового редактора.

Ответы986801

08 Май, 14:40 #326 #986801

>>986782
>будет 400 тысяч — поймешь
Это в каких же проектах столько строк? Приведи примеры. Я врядли когда нибудь дойду до такого, ведь я не собираюсь работать программистом.
Даже если я буду писать собственную ОС, то уверен что у меня будет в несколько десятков раз меньше строк. Что там вообще нужно, не считая свистеловк-перделок? Пара десятков системных вызовов и обеспечение многозадачности с приоритетами.

Ответы986857

sage 08 Май, 16:59 #327 #986857

>>986801
http://www.informationisbeautiful.net/visualizations/million-lines-of-code/
А я, конечно же, преувеличивал, остальную часть поста прочитай.

Ответы986913986933

6 Кб, 369x65

5 Кб, 513x45

22 Кб, 680x174

08 Май, 18:06 #328 #986913

>>986857
Щито? 2 миллиона строк кода для программы, которая выводит видосы в высоком качестве на XserverBox? 43 миллиона строк для кучки офисных программ?50 миллионов строк для IDE и 61 миллион строк для социальной сети?

Ответы986914

08 Май, 18:07 #329 #986914

>>986913
Говнокодеры, сэр

Ответы986932

08 Май, 18:44 #330 #986932

>>986914
Может они писали на ассебмлере и не использовали add, sub и dec?

Ответы987061

28 Кб, 853x701

08 Май, 18:46 #331 #986933

>>986857
А чего тут так много кода? Они в курсе что html, css и javascript это не языки программирования?

sage 08 Май, 22:54 #332 #987061

>>986932
У мплеера 300+ тысяч строк. Это плеер без интерфейса, написан в основном на сишечке. Напиши это на крестах в более энтерпрайзном стиле, добавь столько же на интерфейс, которого в мплеере нет - вот тебе и 2 миллиона.

Ответы987250

09 Май, 00:00 #333 #987102

ПАМАГИТИ((99

Есть строка (массив char), в котором написано словосочестание с разделителем "_" (потому что пробел в консоли почему-то проебывается и программа начинает жить своей жизнью, добра тому, кто пояснит за эту хуйню).

Итак есть "Привет_мир" записанное в yobamasiiv[]

Как мне разбить этот массив на два массива? С условием, что начало может быть разным:
"Привет_мир_блять"
"Привет_мир_блять_есьжи"
"Соси_писос"
"Двощер" (не надо разделять)

можно ли давать этим новым массивам имена с автоматическим инкрементом, типа
"massiv1[] = "Соси_писос"
"massiv2[] = "Сам_соси"
...
"massiv99[] = "Нет_ты"

Помогите, молю

Ответы987103

09 Май, 00:01 #334 #987103

>>987102
Проебался с примером. Так правильнее:
"massiv1[] = "Соси"
"massiv2[] = "соси"
...
"massiv99[] = "писос"

Короче мне нужно разделить массив на слова не зависимо от их количества слов

09 Май, 00:04 #335 #987104

Как разделить массив с разделителем "_" на слова не зависимо от количества слов? Разделить - значит создать много новых массивов. Много - это количество слов.

Ответы987109

09 Май, 00:05 #336 #987105

Посоны, меня засмеял препод за язык СИ и поставил его наравне с паскалем. Ржал над древностью. Рили все так плохо или препод даун?

Ответы987109987113

09 Май, 00:18 #337 #987109

>>987104
Делаешь массив указателей, делаешь strtok() в цикле. "Автоматической нумерации" массивов, конечно же, нету, но ты можешь использовать многомерные массивы, если тебе почему-то жизненно необходимо копировать подстроки или ты не можешь в указатели: char words[MAX_WORDS][MAX_WORD_LENGTH];

>>987105
Препод даун. Овердохуя кода на его компе написано на си.

09 Май, 00:29 #338 #987113

>>987105
Следующую лабу сдавай на хаскеле, параллельно пиши донос для начала в деканат о профнепригодности преподавателя.
Упомяни что написал в центральные СМИ.
Удачи!

09 Май, 00:47 #339 #987117

char abc[1024] = "ХУЙ"
char def[1024];

как def приравнять к abc?

Ответы987119

09 Май, 00:49 #340 #987119

>>987117
man strcpy

09 Май, 01:27 #341 #987131

Двощ как записать в файл текст и сохранить БЕЗ ЗАКРЫТИЯ? он у меня во второй раз открываться не хочет, но суть не в этом, отвечай на сабж

Ответы987132987133987220

09 Май, 01:31 #342 #987132

>>987131
fwrite(), fflush(). Закрывать вообще не обязательно - программа завершится, либц сделает fflush(), а ОС сама закроет файловый дескриптор, если что.

Ответы987145

09 Май, 01:32 #343 #987133

>>987131
fsync

Ответы987145

09 Май, 02:01 #344 #987145

>>987133
>>987132
Не помогло, или я неправильно использовал.

У меня есть файл, которым активно пользуется программа.
Программа открывает файл, записывает в него, и закрывает (ИСКЛЮЧИТЕЛЬНО РАДИ СОХРАНЕНИЯ ТОГО, ЧТО ЗАПИСАЛА). Повторно открываться не хочет (fopen, fprintfm, fclose - все это у меня в цикле). Так надо.

Есть для меня решение или вешаться нахуй, устал уже.

Ответы987163

09 Май, 02:44 #345 #987163

>>987145
> закрывает (ИСКЛЮЧИТЕЛЬНО РАДИ СОХРАНЕНИЯ ТОГО, ЧТО ЗАПИСАЛА
Ввод-вывод в C - это тебе не программа Блокнот в винде, файл специально "сохранять" не нужно. Данные пишутся на диск, когда заполняется буфер, или когда ты буфер явно сбрасываешь fflush(). fclose() тоже делает fflush(). Алсо можно сделать setvbuf(fp, NULL, 0, _IONBF), отключив буферизацию, и тогда каждый сраный fputc() будет сразу писать на диск. А ты чего-то не понимаешь и что-то делаешь не так, или у тебя какие-то конфликты с другой программой, ради которой ты этот файл пишешь.

Ответы987275

sage 09 Май, 03:43 #346 #987220

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

09 Май, 09:29 #347 #987250

>>987061
Двк, на крестах короче получится, тем более с наследованием, шаблонами и прочим.

Как интерфейс для соснольки, у которого 3 кнопки и 2 индикатора можно уместить в оставшиесь полтора ляма строк — вот уж точно кек.

Ответы987251

09 Май, 09:34 #348 #987251

>>987250
> на крестах короче получится
Ты просто не осилил современный ооп. Я раньше думал, что это болезнь джавы, но в последнее время все чаще на крестах подобное вижу. https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

> Как интерфейс для соснольки, у которого 3 кнопки и 2 индикатора
Ну иди посчитай кнопочки и индикаторы в SMPlayer, например.

На самом деле я сам не знаю, как они в той диаграмме считали метрики, потому что проекты нихуя не опенсорсные. Может, они тесты/документацию тоже посчитали, хуй знает.

Ответы987269

09 Май, 10:18 #349 #987266

киньте задачник по c
Пчтобы можно паралельно читать кериган и ритчи

09 Май, 10:20 #350 #987268

Задачние

09 Май, 10:20 #351 #987269

>>987251
Может им сами компании сказали скоьлко у них строк?

09 Май, 10:22 #352 #987270

Скиньте подскажите задачник по c
Чтобы можно было паралельно читать кериган и ритчи

09 Май, 10:42 #353 #987275

>>987163
Я записываю с буфера массив строк в файл.
Потом оперирую этим файлом.

Массивов у меня много. и Каждый я должен записывать в файл затирая предыдущее его содержание.

Как мне иначе поступить если не открывать-закрывать файл?

09 Май, 10:56 #354 #987281

Хорошо, анон, как мне тогда завести вот такой код? В результате выполнения всей программы в файле должно быть 9 или 10

for (i=0; i < 10; i++)
{
FILE mytext = fopen("1.txt", "w"); //открыл файл
fclose (mytext) // потер содержимое файла

FILE mytext = fopen("1.txt", "w"); //снова открыл файл
fprintf(mytext,"%s", i); // записал свой текст
fclose (mytext) // закрыл файл с сохраненным текстом
}

Ответы987285987389

09 Май, 11:01 #355 #987285

>>987281
Так при открытии через w файл сразу стирается, нет?

Ответы987322

09 Май, 11:57 #356 #987322

>>987285
А я могу два раза открыть файл?

Ответы987327

09 Май, 12:00 #357 #987327

>>987322
А почему нет?

Ответы987353

09 Май, 12:32 #358 #987353

>>987327
Не закрывая после первого раза?
И у меня файл затрется?

Ответы987441

09 Май, 13:04 #359 #987388

А можно fopen'ить два файла сразу?

Ответы987389987418

09 Май, 13:06 #360 #987389

>>987388
Вернее, fopen'ить по очереди, но работать с двумя указателями на открытые файлы.
>>987281
> fclose
> потёр
Ты когда открыл с "w" - тогда только потёр

09 Май, 13:31 #361 #987418

>>987388
А почему нельзя по твоему?

09 Май, 13:54 #362 #987437

Есть кто?

Ответы987443

09 Май, 14:00 #363 #987441

>>987353
Тебе ОС создаёт новый дескриптор. Собственно файлы и stdio это обертка над файловыми дескрипторами, можешь исходники поглядеть. Все зависит от флага, который передаешь. Я уже не помню их точное поведение.

09 Май, 14:01 #364 #987443

>>987437
Нахуй иди.

09 Май, 14:29 #365 #987506

Сорян за глупый вопрос, но чет рили туплю
Какой спецификатор типа нужно юзать в printf, что бы он выводил '_' и 'o'

кусок из кода:
https://pastebin.com/1VmuaNhe

Ответы987509

09 Май, 14:30 #366 #987509

>>987506
а, все, нашел
%с
сорян ребят

165 Кб, 757x1024

09 Май, 15:24 #367 #987598

Ребят, помогите пожалуйста.
Нужно задать позицию игры в шашки, уже часов 5-6 сижу, в гугле все перебрал, нихуя нет как и идей, пробовал даже такое
https://pastebin.com/8BYtyua5

Вроде бы спокойно задается через
int desk[8][8]
Но хз, правильно ли я написал https://pastebin.com/veaj1buc

Кто знает как это делать, подскажите плс

Ответы987618987693

09 Май, 15:45 #368 #987618

>>987598
Со второй ссылкой обосрался немног
>https://pastebin.com/veaj1buc
https://pastebin.com/KDsryV5i должно быть так

09 Май, 18:22 #369 #987693

>>987598
>правильно ли я написал
Пока у тебя код уровня laba2 не еби мозги себе

Ответы987701

09 Май, 18:42 #370 #987701

>>987693
Могут преподы доебаться, мол сделал не так, как показывали. Хотя, блджад, твой вариант и проще.

09 Май, 21:48 #371 #987818

Поясните, пожалуйста, разницу между memcmp и strcmp, я как-то не вкуриваю.

Ответы987819987820

09 Май, 21:50 #372 #987819

>>987818
memcmp сравнивает последовательности фиксированной длины, strcmp сравнивает до \0, strncmp сравнивает до \0 или лимита (в зависимости от того, что встретися раньше). memcmp быстрее всех, отлично оптимизируется по скорости, но не всегда применима.

Ответы987821

09 Май, 21:51 #373 #987820

>>987818
>Поясните, пожалуйста, разницу между memcmp и strcmp
Блять, скажи что ты толстишь

Ответы987821

09 Май, 21:54 #374 #987821

>>987819
Благодарю.
>>987820
Просто хочу спать, а Laba_1.c сама себя не доделает.

10 Май, 06:43 #375 #987962

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

Ответы987963990301

10 Май, 06:52 #376 #987963

>>987962
У нас временные проблемы с шапкой: http://piratepad.net/bJ1SdmkZyu вот тут полная версия. Можешь харвей какой-нибудь выбрать. Хотя K&R вполне для начинающих подойдет, ничего в нем сложного нет. Ну разве что Петцольда можно навернуть, если биты от байтов не отличаешь.

11 Май, 15:13 #377 #988825

Господа, C нужен для вебмакакинга? И зачем он вообще нужен?

Ответы988903988925

11 Май, 18:16 #378 #988903

>>988825
Для вебмакакинга не нужен.

11 Май, 19:04 #379 #988925

>>988825
Вообще не нужен.

12 Май, 14:30 #380 #989246

Хэллоуворлдщик итт - хочу написать программу следующего толка:
Вводится пара - три смвола и значение (например KLB 2), программа проверяет, сохранена ли там эта последовательности символов. Если нет, то она их записывает, и рядом пишет введенное число, если же символ с каким-то числом уже введен, то программа просто прибавляет введенное число к тому, что у неё в базе. На выходе должна получиться таблица типа
XXX 24
GSG 194
...
JFK 9
Вот не знаю, как такое провернуть, прошу помощи

Ответы989259

12 Май, 14:57 #381 #989259

>>989246
Зависит от уровня твоих знаний.
Если совсем дно, заводишь параллельные массивы: имен char seq[1000][4] и значений int values[1000]. При вводе значения в цикле идешь по массиву имен. Если не нашел значение - добавляешь в конец. Индекс используешь, чтобы что-то там со значением сделать.
Если менее дно, можешь сделать массив структур вместо двух параллельных массивов.
Если что-то знаешь про алгоритмы, сделай какую-нибудь сортированную структуру данных: словарик с хэшами или дерево, например.
Если хочешь очень простое частное решение, и все символы - буквы в верхнем регистре, можешь просто считать эти символы цифрами позиционной системы счисления с базой 26 и использовать их как индекс в массиве (получается 263 = 17576 элементов, это не так уж много).

Ответы989361

12 Май, 16:02 #382 #989312

Анчоусы, есть некое подобие такой функции https://ideone.com/0KOl0s
для получения указателя на переменную по имени.
В теории всё работает хорошо, но на практике используется BigEndian порядок байтов, и в итоге intChar нихуя значение не присваивается (точнее присваивается, но старший байт, а не младший). Как сделать так, чтобы работало?
atoi не предлагать, ибо функция, вызывающая getPtr не должна ничего знать о типе переменной

Ответы989320

12 Май, 16:11 #383 #989320

>>989312
> функция, вызывающая getPtr не должна ничего знать о типе переменной
Не знает - значит и писать она в нее не может.

Ну можешь возвращать указатель на структуру, где кроме указателя на переменную есть еще и геттер с сеттером.

Алсо, где ты нашел машину с big-endian?

Ответы989335

12 Май, 16:22 #384 #989335

>>989320
>Алсо, где ты нашел машину с big-endian?
Да есть тут MIPSовый проц. Инициализировать под big-endian не я его придумал.

12 Май, 17:27 #385 #989361

>>989259
Благодарствую

12 Май, 18:19 #386 #989389

Подскажите компилятор си для ARM микроконтроллеров, или если gcc так может, то какие опции нужны?

Ответы989416989418

12 Май, 18:53 #387 #989416

>>989389
http://gnutoolchains.com

12 Май, 18:54 #388 #989418

>>989389
Студия, гцц от linaro, сам собери кросскомпилятор из гцц, pelles c (старые версии) умел, clang опять же из коробки умеет, SDCC.

12 Май, 22:58 #389 #989661

Привет, сишники. Есть статический массив строк messages, а есть макрос, который принимает целое число, и, используя его в качестве индекса, возвращает из messages определенную строку. Тут очевидно я задумал "инкапсулировать" массив строк, чтоб был доступ из других модулей только по макросу (макрос объявлен в том же хедере, где и массив messages).

Проблема: собираю с помощью gcc с флагом -Wall. Так вот гцц ругается, что в других модулях, где инклудится этот хедер:

warning: ‘error_messages’ defined but not used [-Wunused-variable]
static char *error_messages[] = {

Вопрос: что я делаю не так и как заставить гцц не ругаться? Может мальца переделать структуру проекта? Если кто не понял, в чем проблема, пишите, постараюсь еще раз объяснить.

Ответы989662989666

12 Май, 22:59 #390 #989662

>>989661
>массив строк messages
error_messages

12 Май, 23:03 #391 #989666

>>989661
Если это внешняя переменная, то она будет торчать наружу, как ни выебывайся. Если это внутренняя (static) переменная, то она будет дублироваться в каждом модуле, куда ты подключишь свой хедер. Не страдай хуйней - создай отдельный файл, какой-нибдуь error.c, положи туда массив, а в хедере оставь extern const char ptr ptr error_messages, и похуй, что его видно отовсюду.

13 Май, 18:34 #392 #990030

Как легко и быстро проверить, не является ли элемент одним из данных элементов? Проще, чем в цикле с массивом данных элементов. Мало ли, вдруг язык как-то по-другому может.
У меня есть скобочки трёх типов, открывающиеся и закрывающиеся, не хочется для каждой отдельно && c!='}' писать.
Упоролся для этого enum'ом, но что-то он не может в такое, или я плохо им упарывался

Ответы990031

13 Май, 18:37 #393 #990031

>>990030
Нихуя не понял. Если тебе просто проверить, что скобочка, сделать strspn(str, "()[]{}"), оно скажет, что строка начинается с одной или нескольких скобочек. Вернет 0 - не скобочка.

Ответы990032

13 Май, 18:38 #394 #990032

>>990031
Не, проверка не для строки, а для каждого отдельного символа строки.

Ответы990033

13 Май, 18:39 #395 #990033

>>990032
Все равно нихуя не понял. Покажи пример.

Ответы990034990036

13 Май, 18:41 #396 #990034

>>990033
Иди нахуй, дебил.

13 Май, 18:41 #397 #990036

>>990033
[{(52^2+1)7+2}^2+79]
Считываю строку.
Каждый символ чекаю на то, есть ли там скобачка*

13 Май, 18:58 #398 #990044

в конечном счете разве все строковые функции поиска не сделаны через циклы?

Ответы990045

13 Май, 18:59 #399 #990045

>>990044
Ыыы, т.е. мне написать функцию isbracket типа, и там проверять всё?

Ответы990050

13 Май, 19:05 #400 #990050

>>990045
Настоящий программист не доверяет высокоуровневым оберткам которые непонятно как реализованы внутри и пишет все сам!

Ответы990054990064

13 Май, 19:07 #401 #990054

>>990050
Золотые слова

13 Май, 19:33 #402 #990064

>>990050
...и пишет свою, кривую и медленную версию. Ишь удумали, библиотечные функции вручную на асме писать!

Ответы990308

14 Май, 09:55 #403 #990301

>>987962
Я читаю C Programming: A Modern Approach, 2nd Edition
Параллельно смотрю https://www.youtube.com/playlist?list=PLBB9FE6D60E6DDAD0
По выходным смотрю cs50 на edx и выполняю, задачки выполняю оттуда. Опыта в погроммировании — 0.0. Пока все понимаю, уже начал присматриваться к сёру gcc в консоли и кое-что понимать.

10 Кб, 477x451

14 Май, 10:44 #404 #990308

>>990064
Нелюди

Ответы990310990327

14 Май, 10:51 #405 #990310

>>990308
А теперь перепиши с лукап-таблицей, как отец заповедал. Делаешь флаги типа:
#define CHR_BRACKET 0x01
#define CHR_OP 0x02
#define CHR_DIGIT 0x04
И делаешь массив для каждого символа в ASCII-таблице: unsigned chr_flags[128] = { 0, ..., CHR_BRACKET, CHR_BRACKET | CHR_OP, ... CHR_DIGIT };
И проверяешь (учитывая, что с >= 0 && c <= 128). if (chr_flags[c] & CHR_BRACKET) { скопка }; if (chr_flags[c] & CHR_DIGIT) { цыфра }.

Ответы990311990312

sage 14 Май, 10:52 #406 #990311

>>990310
с >= 0 && c < 128, конечно же.

14 Май, 10:52 #407 #990312

>>990310
Извините, я только на второй главе K&R, я так не умею.

Ответы990313

sage 14 Май, 10:53 #408 #990313

>>990312
А, ну ок.

Ответы990314

14 Май, 10:56 #409 #990314

>>990313
Помнится, я пытался скопилять с моей isdigit, а он мне выдал, что это переобъявление функции.
Но ctype я не подключал, вот и подумал, а не кладёт ли Pelles C некоторые либы стандартные туда без моего ведома?

Ответы990323

sage 14 Май, 11:49 #410 #990323

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

Ответы990327

14 Май, 12:00 #411 #990327

>>990323
Допустим, функция, как на пике >>990308
int isdigit(int c)
Подключаю только stdio и math.
Могут ли быть ошибки типа "redaclaration..."

Ответы990334

10 Кб, 398x400

14 Май, 12:20 #412 #990334

>>990327
Не поленился, сходил посмотрел. Нет, ошибок быть не должно. Видимо, у тебя прототип твоей isdigit конфликтует с реализацией. Или прототипа нет, реализация ниже вызова, и поэтому неявное объявление конфликтует с фактическим. Зделой прототип.

14 Май, 17:33 #413 #990462

>>973297 (OP)
Как в gcc сделать так чтобы библиотека "вживилась" в исполняемый файл? Чтобы можно было потом запускать при отсутствии этой библиотеки.

Ответы990472

14 Май, 17:50 #414 #990472

>>990462
>static linking
Вживил тебе за щеку, проверяй.

Ответы990557

14 Май, 18:27 #415 #990495

Допустим надо узнать скобка ли перед нами, как функция будет работать быстрее?
bool isbracket(char c){
switch c {
case '(':
case ')':
return 1;
default:
return 0;
}
}
Или
bool isbracket(char c){
return c==')'||c=='('
}

Ответы990573990832

2657 Кб, Webm

14 Май, 18:48 #416 #990514

Что лучше использовать, например, в данном случае вместо int
uint64_t, size_t, ptrdiff_t или что нибудь ещё?
Не троллю, просто интересно

for (int i = 0, j = 0; i < 8; i++)
{
if (x[j] == 1 && x[i+1][j+1] == 0 ) return 3;
}

Ответы990520990532990590

14 Май, 18:51 #417 #990520

>>990514
вебм рандом если чо, просто взял случайный из папки

14 Май, 19:15 #418 #990532

>>990514
int8_t

Ответы990533

14 Май, 19:16 #419 #990533

>>990532
uint8_t

Ответы990549

14 Май, 19:27 #420 #990549

>>990533
>>990533
Ну да, все таки с u лучше, ибо тут энивэй только положительные числа
А почему 8_t, а не 64_t?

Ответы990567990590

14 Май, 19:37 #421 #990557

>>990472
То есть нельзя? Остаётся только с помощью сторонних программ?

Ответы990560990566

14 Май, 19:39 #422 #990560

>>990557
Тебе же написали "static linking", гугли, это то что тебе нужно

14 Май, 19:41 #423 #990566

>>990557
Собирай со флагом -static
gcc -static -o hello hello.c

14 Май, 19:42 #424 #990567

>>990549
Потому что в процесоре есть 8 битные регистры, они быстрее.

Ответы990590

14 Май, 19:49 #425 #990573

>>990495
Я зашёл на https://godbolt.org/ , там вписал твои функции. Они занимают одинаковое кол-во команд. Но я незнаю сколько какая команд требует тактов процессора, да и, насколько я знаю, в разных комбинациях команд кол-во тактов может быть разным. Но во второй функции целых 3 (!) условных перехода, а у первой всего лишь 2. Насколько я знаю, после условных переходов процессор очищает из себя команды, которые шли после перехода, ведь в процессоре есть стадии декодирования, исполнения и всё такое, из-за чего программа медленнее работает.
Вывод: Я предполагаю что первая функция быстрее, так как в ней на 1 переход меньше, чем во второй функции.

Ответы991316

14 Май, 20:10 #426 #990590

>>990514
size_t. Если почему-либо нельзя его использовать, то любой signed тип.

>>990549
> Ну да, все таки с u лучше
Хуже. Вкратце: с signed у компилятора больше простора для оптимизации из-за наличия переполнения у signed int. Подробнее:
https://youtu.be/yG1OZ69H_-o?t=2357 (39 минута и далее, но лучше целиком).

>>990567
> 8 битные регистры, они быстрее
Полная чушь. Медленнее практически на всех архитектурах, кроме восьмибитных.

Ответы990595990598

14 Май, 20:13 #427 #990595

>>990590
спс, но компилятор выбирает их, они должны быть быстрее

14 Май, 20:16 #428 #990598

>>990590
Спасибо за развернутый ответ.
Я в итоге и оставил size_t везде.

И ещё один последний вопрос
стоит ли писать так

int main(int argc, char *argv[])

Если программу запускать с консоли в любом случае не будут?

Ответы990599

14 Май, 20:17 #429 #990599

>>990598
>стоит ли
А точнее, есть ли хоть какой нибудь профит с этого?

Ответы990603

14 Май, 20:23 #430 #990603

>>990599
Ну есть же стандартный вариант int main(void) еще. Профита нет, стартап сишной библиотеки все равно стандартный компилится, аргументы он все равно подготавливать и парсить будет.

Ответы990649

14 Май, 21:25 #431 #990649

>>990603
Спасибо

14 Май, 22:51 #432 #990687

>>984244
> есть у кого простая и годная литература по WinAPI

Windows via C/C++, Джефри Рихтер

Ответы990856

15 Май, 05:30 #433 #990832

>>990495
На современных процессорах совршенноо похуй что там и как выполняется ибо данные операции занимают такое пиздецки мало время выполнения, что изъябываться и смотреть насколько пикосекунд там что выполняется быстрее сущее долбоебство.

Ответы990888

15 Май, 07:51 #434 #990856

>>990687
А заодно после Рихтера можно блог Марка Руссиновича почитать

https://blogs.technet.microsoft.com/mark_russinovich/

15 Май, 10:00 #435 #990888

>>990832
>кукарику, современные процессары!
Уважаемый, джава-господа и говноеды в другом треде. Здесь си-холопы, которые ещё пишут под ымбыдед, где процессоры с частотами до 100 мгц - нормальное явление.

15 Май, 18:53 #436 #991254

ЕОП уровня "лаба-1", выполняет простенькие арифметические операции с элементами массивов, посоветуйте, как сделать возврат в начало программы без goto, этажи плахой стиль.

Ответы991267

15 Май, 19:02 #437 #991267

>>991254
do .. while

15 Май, 19:09 #438 #991271

Помогите пожалуйста, немного туплю в деревьях

Нужно посчитать количество вершин в бинарном дереве на N- уровне, считая корень вершиной 0-ого уровня

Вот мой код:
https://pastebin.com/07CkdF7s

Не знаю, как написать подпрограмму для подсчета вершин, на ум приходит только такое:
https://pastebin.com/BJTzEfg3

Ответы991273

15 Май, 19:14 #439 #991273

>>991271
Ну да, так и считай. Можешь без рекурсии - у тебя там вроде как очередь реализована.

Ответы991293

36 Кб, 878x564

14 Кб, 1531x349

36 Кб, 635x873

15 Май, 19:17 #440 #991275

Пытаюсь освоить переполнение буфера
Я должен заполнить массив char своими адресами возврата, чтобы программа прыгнула на нужное мне место (пик1).
проблема в том, что эксплоит работает в виде пик2 (не обязательно именно так, но допустим программа с дырой работает через командные аргументы), и символ, нужный для верного адреса - \x00, что является терминальным символом.
Насколько я знаю, не существует способа передачи этого символа через аргументы.
Конечно же, я могу переписать код, чтобы передавать не массив char , а скажем, массив интов или чего-то подобного, но это будет уже не то. Интересно, как поступать в ситуации, в которой есть именно эта дыра, код программы - пик3.

Автор книги, Эриксон, для демонстрации использует никс, а там адреса с 0xffffffff идут

Ответы991282

15 Май, 19:25 #441 #991282

>>991275
В пике три достаточно перезаписать authflag. Алсо, у нас little endian, поэтому ты можешь просто подобрать длину строки так, чтобы \0 пришелся как раз на старший байт перезаписываемого адреса возврата. Алсо, есть системные либы по старшим адресам, в которых нет 0x00 в старшем байте. Во времена до ASLR можно было собирать ROP-chain из их кода. Алсо, давай-ка ты с этими вопросами к соседям >>960640 (OP), раз уж есть теперь такой тред.

Ответы991286

1 Кб, 613x31

15 Май, 19:31 #442 #991286

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

Ответы991290

15 Май, 19:38 #443 #991290

>>991286
Значит ищи другой адрес. Нет серебряной пули, каждый эксплоит - искусство и требует особого подхода.

15 Май, 19:40 #444 #991293

>>991273
>очередь реализована
Да

А как лучше задавать сам список в файле?

15 Май, 20:13 #445 #991316

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

16 Май, 03:08 #446 #991547

Аноны, поясните, вот у меня есть буфер, скажем на 10 чар: char buf[10], пусть изначально забит символом '3'.
Я считываю строку scanf("%s", buf), скажем "hello", потом в цикле просто вывожу все символы буфера(printf("%c", buf)), и получаю что-то вроде hello33333. Собственно вопрос: а где блять символ конца строки? Когда я пишу что-то вроде printf("%s", buf), то он выводи "hello", а не hello33333. Как так получается?

Ответы991550991616991626

16 Май, 04:26 #447 #991550

>>991547
А как по-твоему printf должен отобразить символ конца строки?

Ответы991968

16 Май, 08:19 #448 #991582

Если я буду использовать имена, которые у меня есть в main и других функциях для аргументов новой + переменных внутри функции никаких, абсолютно никаких подводных камней тут не будет?

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

Ответы991616

16 Май, 10:15 #449 #991616

>>991547
Спецификатор %s в scanf читает до следующего пробельного символа (пробел, символ конца строки и т. п.). Этот символ в буфер не попадает, зато в конец буфера пишется \0.

Спецификатор %с у printf выводит указанный символ. У тебя выводятся h, e, l, l, o, потом \0, которые эмулятор терминала обычно отображает как пробел, потом 3, 3, 3... Спецификатор %s выводит строку, строки в Си заканчиваются \0, поэтому выводятся символы h, e, l, l, o, потом идет \0, он не выводится, и на нем вывод заканчивается.

Хочешь символ конца строки - выводи его, блять.

>>991582
Что такое области видимости тебе рассказали? Если в пределах области видимости переменной ее имя уникально - все ок, абсолютно никаких подводных камней. Если имя неуникально, может быть как ок, так и совсем не ок, но не существует ни единой причины писать код, в котором имена объектов перекрываются.

Ответы991692991968

16 Май, 10:50 #450 #991626

>>991547
>и получаю что-то вроде hello33333.
Нет, получается "hello3333". Вот как раз не отображённый десятый символ между hello и 3333 и есть твой NULL. Можешь сделать (printf("%i", buf)) и увидеть 0 на шестой позиции.

Ответы991968

16 Май, 13:58 #451 #991692

>>991616
Мм, кстати, от сканфа, кажется, в stdin остается какой-то мусор. Если написать в коде scanf, а потом getchar(), программа не будет дожидаться выполнения последней команды, потому что в нее попадет остаток из стандартного ввода.

Ответы991695991709

16 Май, 14:08 #452 #991695

>>991692
Молодец.
Возьми с полки fflush().

Ответы991709991968

16 Май, 14:51 #453 #991709

>>991692
> от сканфа, кажется, в stdin остается какой-то мусор
Остается конец строки.

>>991695
Ты имел в виду "возьми с полки UB"?

16 Май, 18:29 #454 #991861

Братишка, я тебе покодить принес:
http://www.ethoberon.ethz.ch/oreport.html

ССЫЛКИ ДА С ТАКИМИ-ТО NULL'АМИ!

Ответы991863991966

16 Май, 18:32 #455 #991863

>>991861
ВНИМАНИЕ! В ТРЕДЕ СЕКТАНТЫ! СОХРАНЯЙТЕ БДИТЕЛЬНОСТЬ! НЕ ПОДДАВАЙТЕСЬ НА ПРОВОКАЦИИ!

16 Май, 21:45 #456 #991966

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

16 Май, 21:47 #457 #991968

>>991550
Как пробел или 0
>>991616
>Хочешь символ конца строки - выводи его, блять.
Алло, я же написал, что в цикле печатаю %c
>>991626
Спасибо, уже понял. Не внимательно пересчитал кол-во символов
>>991695
>Возьми с полки fflush().
flush не работает для stdin. Единственный более-менее метод который я нашел, это while((c = getc()) != EOL && c != '\n'); Минус такого способа - если инпут уже пустой, то программа зависнет, пока что-нибудь не нажмешь.

Ответы992062

16 Май, 22:21 #458 #991979

Есть одна консольная утилита для линуха. Хочу прикрутить к ней интерфейс с парой полей для вода, кнопок и окном вывода инфы:

Этот интерфейс должен уметь всего-то:

1) Передавать утилите через соответствующие ключи значения, введенные в соответствующие поля.

2) Передавать вывод утилиты в окошко.

Вот и все, что мне нужно. Хочу сделать на QT, но я в ГУИ не силен. Может кто направит на гайд, где объяснено, как сделать подобную херь?

Ответы991998992004992033

16 Май, 23:09 #459 #991998

>>991979
См. в сторону popen() для простейшего варианта взаимодействия с порождённым процессом.

16 Май, 23:18 #460 #992004

>>991979
В простейшем варианте код будет вращаться вокруг вызова вот этой функции:
https://www.tutorialspoint.com/c_standard_library/c_function_system.htm

На сайте QT есть много примеров и пояснений написания кода

Ответы992032

17 Май, 00:37 #461 #992032

>>992004
Дебил, ты читать умеешь?
> 2) Передавать вывод утилиты в окошко.
Твоя system() этого сделать не позволяет.

17 Май, 00:37 #462 #992033

>>991979
>Хочу сделать на QT
А хуле ты делаешь в этом треде?

Ответы992035

sage 17 Май, 00:40 #463 #992035

>>992033
Можно писать основную часть на Си, а интерфейс на крестах. Мало того, это единственный выход, если хочется кроссплатформенности, учитывая, как уебищно выглядит и работает Gtk в винде.

17 Май, 02:53 #464 #992062

>>991968
> Как пробел или 0
С чего это вдруг? Символ конца строки он на то и символ конца строки, ему не нужно отображаться, лол.

98 Кб, 1080x403

17 Май, 07:33 #465 #992084

>>973297 (OP)
Сап.
Есть одна формула.
Мой конечный вывод по ней, как пример:
9 + 2х + 3хх - 4ххх
Есть ли способ вывести в консоле не так, а так:
9 + 2х + 3х^2 - 4*х^3

Ответы992085

17 Май, 07:35 #466 #992085

>>992084
Ебучая разметка, между иксами знак умножения *

Ответы992105

17 Май, 09:49 #467 #992105

>>992085
Если консоль поддерживают юникод (читай: у тебя линукс с xterm), я могу тебе отсыпать степеней: ⁰¹²³⁴⁵⁶⁷⁸⁹, можешь копировать прямо отсюда. Если не поддерживает - нет, ничего не сделать. Можешь в .png рендерить, лол.

Ответы992116

8 Кб, 482x204

17 Май, 10:24 #468 #992116

>>992105
Понял.
Я погорячился с вывод. Как сделать, чтобы выводило с иксом, чему присвоить икс? Я пробовал так
char x = 'x'; Но ничего не меняется
Вот сам цикл с https://pastebin.com/dyAZE3j1

17 Май, 14:09 #469 #992202

2ch, я что-то не могу понять, почему у меня выдаёт ошибку?
char str[5] = {'ы'};
ошибка: сужающее преобразование «53643» из «int» в «char» внутри { } [-Wnarrowing]
char str[5] = {'ы'};

Ответы992205992211

17 Май, 14:12 #470 #992205

>>992202
Исхдник в UTF-8, русский символ в UTF-8 представлен двумя байтами. В результате у тебя символьная константа из двух байтов. В языке такого нет, но есть распространенное расширение стандарта, позволяющее считать такую символьную константу как (x << 8 | y). Результат не влезает в char, и как раз об этом тебе и пишут. Смени кодировку файла на Windows-1251, например, или смени подход целиком.

Ответы992207

17 Май, 14:18 #471 #992207

>>992205
>Смени кодировку файла на Windows-1251
Спермовор, плиз.
utf-8 лучшее, что изобрело человечество, а он предлагает есть однобайтовое говно.

17 Май, 14:20 #472 #992211

>>992202
char str[5] = u8"ы";

17 Май, 16:05 #473 #992256

Как читать строку неизвестной длины? Задача такая:
скрипт на питоне будет запускать мою программу и посылать ей строки (много строк переменной и неизвестной длины). С помощью каких функций я могу оформить их чтение?

Ответы992259992277992284

17 Май, 16:09 #474 #992259

>>992256
getchar+realloc, а ты как думал.

Ответы992263992266

17 Май, 16:15 #475 #992263

>>992259
>realloc, а ты как думал
Я думал, что уже есть библиотека BoostQTCLRSTXXL v190.134beta, которая все это сделает за меня. Я не хочу в 2017 году писать реаллоки.

Ответы992265992276

17 Май, 16:16 #476 #992265

>>992263
Какой в жопу буст, на название треда посмотри.
Впрочем, в каком-нибудь glib наверняка есть что-нибудь.

17 Май, 16:17 #477 #992266

>>992259
ПРИШЛО ВРЕМЯ ОСВОБОДИТЬ ПАМЯТЬ
ПАМЯТЬ САМА НЕ ОСВОБОДИТСЯ
ОСВОБОДИ ЕЁ, ОСВОБОДИ ЕЁ ЕЩЕ РАЗ ЗАЧЕМ МНЕ НУЖЕН ХАЧКЕЛЬ, У МЕНЯ НЕТ ВРЕМЕНИ ЧТОБЫ ЕБАТЬСЯ С НИМ
ЛУЧШЕ ЕЩЕ РАЗ ОСВОБОДИТЬ ПАМЯТЬ
Я ОСВОБОЖДАЮ ПАМЯТЬ ПО 3 РАЗА В ДЕНЬ
КАЖДОЕ ОСВОБОЖДЕНИЕ ЗАНИМАЕТ ДВАДЦАТЬ НАНОСЕКУНД
Я ЖИВУ АКТИВНОЙ И ПОЛНОЦЕННОЙ ЖИЗНЬЮ
Я УСПЕШЕН И ПОЭТОМУ ЦЕЛЫЙ ДЕНЬ ВЫДЕЛЯЮ ПАМЯТЬ
А ПОСЛЕ ЭТОГО ОСВОБОЖДАЮ ЕЁ
ТУПЫЕ ХАЧКЕБЛЯДКИ ОДЕРЖИМЫ МОНАДАМИ
А Я СВОБОДНЫЙ ОТ ЗАДРОТСТВА ЧЕЛОВЕК
TEMPLATE <CLASS BAZ> BAR FOO<BAZ>::DOWORK()
int s=((12<<5)&(2^(21-(4|4)2)^1024))==0?1:0
ЛУЧШЕ Я ВЫДЕЛЮ ЕЩЕ РАЗ ПАМЯТЬ
И ЗАБУДУ ОСВОБОДИТЬ ЕЁ, СТАБИЛЬНОСТЬ НЕ НУЖНА
Я НЕ ОСВОБОЖДАЛ ПАМЯТЬ НЕДЕЛЮ
ПОЙДУ ОСВОБОЖУ
В C++ ВСЕ ПРОСТО И ПОНЯТНО
SEGMENTATION FAULT. ЭТО ЖЕ ОЧЕВИДНО КАК ЕЕ РЕШИТЬ
ПРИШЛО ВРЕМЯ ОСВОБОДИТЬ ПАМЯТЬ
КОКОКОКОКОКОКО
КВИКСОРТ КОНКАТЕНАЦИЯ ЗА O(1) INLINE ASSEMBLER
КОКОКОКОКОКОКО

17 Май, 16:39 #478 #992276

>>992263
>Я не хочу в 2017 году писать реаллоки.
А я хочу, могу и буду.

17 Май, 16:41 #479 #992277

>>992256
fgets() в цикле, чего тут думать-то. Если в буфер строка не влезла, дочитывать следующим fgets().

sage 17 Май, 16:58 #480 #992284

>>992256
так сделай чтобы твой скрипт на питоне отправлял количество символов сперва

17 Май, 19:08 #481 #992312

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

Ответы992316

19 Кб, 1109x215

17 Май, 19:14 #482 #992315

Сап, Си, я залётный. Объясните мне, зачем вы кастуете результат всяких системных функций, если не присваиваете значение?

Ответы992320992359

17 Май, 19:15 #483 #992316

>>992312
> программная реализация стека
Да ты охуел. Реализуй. Декремент и инкремент в наличии, больше ничего не нужно.

Ответы992321

17 Май, 19:21 #484 #992320

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

Я лично считаю, что предупреждение на этот случай нужно подавлять ключами компиляции целиком, потому что особого толку от него нет. А расставлять касты - долбоебизм.

Ответы992359

17 Май, 19:21 #485 #992321

>>992316
Ну я хочу стек как в Форте, но реализация остановилась моей рукожопостью в области указателей.

Ответы992322

17 Май, 19:22 #486 #992322

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

17 Май, 20:50 #487 #992345

Создаю char-указатель на область памяти, но пишу туда не char'ы, а wchar_t'ы. Теперь я хочу вывести в консоль эти символы. Как мне преобразовать указатель?

Ответы992347992356992381

17 Май, 20:52 #488 #992346

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

Ответы992347

17 Май, 20:57 #489 #992347

>>992345
Нихуя не понял.
char ∗chars = ...;
((wchar_t ∗) chars)[0] = L'x';
((wchar_t ∗) chars)[1] = L'\0';
printf("%ls\n", (wchar_t ∗) chars);
Это?

>>992346
Прата или K&R, чтобы узнать язык.

Ответы992352992369

17 Май, 21:01 #490 #992352

>>992347
Точно, у Праты же и по Чистому™ есть. А если Отцов™, то что к ним в качестве пособия по программированию как таковому?

17 Май, 21:06 #491 #992353

Кроме очевидного SICP'а, конечно.

17 Май, 21:09 #492 #992356

>>992345
http://www.cplusplus.com/reference/cwchar/wprintf/

17 Май, 21:11 #493 #992359

>>992315
>>992320
это сообщение другим программерам, что мы намеренно игнорируем статус выполнения функции

17 Май, 21:37 #494 #992369

>>992347
>Это?
Я уже решил методом копипасты со стаковерфлоу. Что у тебя написано я не понял, но уже и не важно.

17 Май, 22:10 #495 #992381

>>992345
> Создаю char-указатель на область памяти, но пишу туда не char'ы, а wchar_t'ы.
Продолжай в том же духе. Ведь стрикт алиасинг это какая-то непонятная ненужная хуйня.

Ответы992391

17 Май, 22:30 #496 #992391

>>992381
Да. Стрикт алиасинг - ненужная хуйня, делающая из сишечки какую-то сраную джаву. Не случайно все крупные проекты, которым нужна байтоебля, делают -fno-strict-aliasing.

Ответы992392

17 Май, 22:31 #497 #992392

>>992391
Алсо, я бы предпочел, чтобы комитет одумался и оставил для алиасинга только opt-in в виде restrict. К сожалению, там сидят пидоры, которые хотят убить язык.

17 Май, 23:08 #498 #992414

Ребят, спрошу по С++, только не бейте, ок?
Какой самый вменяемый и короткий способ заставить switch-case работать с переменной string? Разбивать в массивы - нечитабельно. Присваивать через if численное значение какой-либо другой переменной и заставить switch-case оперировать с этим - долго. Неужели нельзя заставить работать напрямую? Читал, есть С++11, но где найти компилятор, который будет поддерживать этоо?
За ссылку на с++ тред буду благодарен, как и на вменяемый ответ по теме, наверняка же итт не одни чистые сишники

Ответы992418

17 Май, 23:10 #499 #992416

Я вот не пойму, в С есть классы-объекты и все это говно, на нем пишут игори, но это не ООП. Поясните почему

Ответы992419992538

17 Май, 23:13 #500 #992418

>>992414
g++ -std=c++11

Иначе либо вязанка ифов, либо считай хеш.

17 Май, 23:13 #501 #992419

>>992416
что ты не поймешь?

Ответы992420

17 Май, 23:15 #502 #992420

>>992419
Классы, объекты это же ООП, но С это не объектно-ориентированный ЯП. Почему?

Ответы992422

17 Май, 23:23 #503 #992422

>>992420
Ты можешь программировать в ООП стиле на С, но для этого тебе нужно будет бороться с языком.

Ответы992423

17 Май, 23:27 #504 #992423

>>992422
Тогда нахуй он вообще нужен?

Ответы992429

17 Май, 23:29 #505 #992429

>>992423
Кто "он"?

18 Май, 08:07 #506 #992538

>>992416
>в С есть классы-объекты и все это говно
Нету. Если так нужно - берут glib

ПЕРЕКАТ # OP 18 Май, 11:24 #507 #992634

>>992632 (OP)
>>992632 (OP)
>>992632 (OP)
>>992632 (OP)
>>992632 (OP)

Тред утонул или удален.
Это копия, сохраненная 16 июня 2017 года.

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

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

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion