Многофайловый проект | Изучение С++ для начинающих. Урок

  Рет қаралды 167,811

#SimpleCode

#SimpleCode

Күн бұрын

Пікірлер: 151
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
@заРНС-Саакашвили
@заРНС-Саакашвили 4 жыл бұрын
спасибо БОЛЬШОЕ что нашли не заезженную тему . . . именно подобного этому мало в ЮТУБЕ - например, взаимодействие частей программы, навыки и приемы программирования, поиск программ в сети (на гит-хаб) и пр.
@yidebn7536
@yidebn7536 3 жыл бұрын
кто то знает как собрать из папки с файлами внутри 1 dll?
@javiervazquez9630
@javiervazquez9630 4 жыл бұрын
Thank you for the support i didn't anything of russian language but i understand the text, you helped me because i doesn't found examples like yours. By the way, i am mexican but doesn't matter, thanks for all!!.
@AV1ch
@AV1ch 4 жыл бұрын
So you read google translated English from machine-generated Russian and still succeeded? I say you're lucky )
@mao3193
@mao3193 3 жыл бұрын
Афигеть. Тут информацию на русском не достать, приходиться в английский источники лезть. А тут все наоборот XD
@vlad7terentev
@vlad7terentev 6 жыл бұрын
какой же кайф, когда ты объясняешь так, что я понимаю с первого раза)) Как всегда на высоте!
@АлександрНекрасов-ч8г
@АлександрНекрасов-ч8г 11 ай бұрын
Большое спасибо Сергей! Вы даже не представляете, какой шикарный контент Вы создали! Купил курс на Скиллбоксе, а учусь по вашим урокам. Лучшего контента по с++ на просто нет!
@АлександрАлександров-ф8к4л
@АлександрАлександров-ф8к4л Жыл бұрын
Надо иметь талант, чтобы грамотно объяснять !
@ИванИванов-д5к3е
@ИванИванов-д5к3е 6 жыл бұрын
Спасибо! Давно ждали урок про многофайловые проекты.
@Retyioaqe
@Retyioaqe 5 жыл бұрын
Если появляется предупреждение "ISO C++ forbids converting a string constant to 'char*'", то следует написать: void MyClass::PrintMessage(const char str[]){ std::cout
@gogawriter9718
@gogawriter9718 4 жыл бұрын
А почему эта херня вылазит?
@ihy1234
@ihy1234 4 жыл бұрын
@@gogawriter9718 Потому что "вот так записанная строка" - это const char* (её невозможно изменить) , а функция PrintMessage принимает неконстантный char* (предполагается, что его возможно изменить). Короче, когда функция не изменяет данные которые в неё передаются надо всегда приписывать const.
@iTema82
@iTema82 2 жыл бұрын
не забудьте в Хедере MyClass.h тоже поменять описание функции void PrintMessage(const char str[]);
@КириллГусарев-р5х
@КириллГусарев-р5х 2 жыл бұрын
Появляется*
@sS1nT-
@sS1nT- 5 ай бұрын
да, либо использовать string)
@artlinestudio6735
@artlinestudio6735 3 жыл бұрын
Один из любимых уроков! Смотреть под кофе просто отлично! Спасибо! Просим продолжить уроки по С++. Самый интересный язык :)
@andrewbistroff7558
@andrewbistroff7558 6 жыл бұрын
Сергей спасибо за шикарный урок!
@Ermine882
@Ermine882 6 жыл бұрын
Очередное спасибо за урок.
@МаликКадиевНИЯУМИФИИЯФиТ
@МаликКадиевНИЯУМИФИИЯФиТ Жыл бұрын
Ты мастер своего дела! Спасибо за то что ты есть!
@Dmitrii82
@Dmitrii82 6 жыл бұрын
Очень важный урок! Спасибо.
@go5190
@go5190 6 жыл бұрын
Спасибо, за интересные уроки
@skandinow
@skandinow 2 жыл бұрын
Как же понятно! Спасибо.
@nap0le0nb0naparte7
@nap0le0nb0naparte7 6 жыл бұрын
Спасибо за урок Сергей! Давно ждал урок про многофайловые проекты. Как всегда высший класс!!!
@vladalu9794
@vladalu9794 6 жыл бұрын
Спасибо огромное Сергей, очень интересный урок!!!
@ИгорьПетров-р7х6д
@ИгорьПетров-р7х6д Жыл бұрын
Отличное объяснение материала, спасибо
@frankbelfort8967
@frankbelfort8967 6 жыл бұрын
Спасибо, отличный урок, все очень подробно и понятно)
@SS-vo9id
@SS-vo9id 2 жыл бұрын
Как же ты понятно объясняешь, спасибо от души.
@ЕвгенийРиттер-п8о
@ЕвгенийРиттер-п8о 7 күн бұрын
Привет из Караганды, я всё понял👍
@segars9604
@segars9604 7 ай бұрын
Спасибо за бесценный труд!)
@ЕкатеринаСавинова-п1к
@ЕкатеринаСавинова-п1к 4 жыл бұрын
Дай вам боженька здоровья, уроки замечательные!!!!
@vn8598
@vn8598 2 жыл бұрын
Спасибо! Очень подробно и интересно рассказываете
@andreyzavalishchev4818
@andreyzavalishchev4818 6 жыл бұрын
спасибо за отличное объяснение!
@Antonov_Ivan.
@Antonov_Ivan. 10 ай бұрын
Спасибо за урок!
@sashatim8244
@sashatim8244 6 жыл бұрын
Спасибо!
@radium6230
@radium6230 6 жыл бұрын
Спасибо за урок. Хотелось бы уроки про unit тесты, лямбды и функторы
@Хиро-з3о
@Хиро-з3о 3 жыл бұрын
Если бы не ты, то я бы не знаю, что делал. Огромнейшее спасибо тебе за Все уроки, смотрю и кайфую от того, что все супер-понятно)
@HugoBossKosta
@HugoBossKosta 2 жыл бұрын
наконец-то тема про многофайловый проект, спасибо большое!!!
@kazikhangereykhanov7758
@kazikhangereykhanov7758 6 жыл бұрын
Спасибо давно ждал
@sankarshanarama6753
@sankarshanarama6753 2 жыл бұрын
Серёжа!!! Дай Бог тебе здоровья! Наконец-то понятно эту тему раскрыл для себя))
@МедведКулибяка
@МедведКулибяка 3 жыл бұрын
Очень полезный урок. Многое стало на свои места. Спасибо!!!
@getwellsoonsoonsoon
@getwellsoonsoonsoon 5 ай бұрын
Спасибо, вы мне помогли!
@Алексей-в5н7с
@Алексей-в5н7с 6 жыл бұрын
Ураааааа!!!!я ждал)Спасибо большое)
@euaek
@euaek 3 жыл бұрын
Спасибо большое.
@C2H5OHH
@C2H5OHH 3 жыл бұрын
Супер, спасибо!
@dmitry3154
@dmitry3154 6 жыл бұрын
Очень важная тема, больше уроков про многофайловые проекты
@ДмитрийРоманчук-д2н
@ДмитрийРоманчук-д2н 4 жыл бұрын
Прекрасный урок, я бы его добавил при изучении Класса, у нас к примеру в Джава сразу учили выносить все в разные папки и каждый класс делать в отдельно созданном классе( имеется в ввиду отдельный класс в cpp с аналогией в С++)
@pavelios3577
@pavelios3577 5 жыл бұрын
Спасибо за видео.
@Ivan-Shyriaiev
@Ivan-Shyriaiev 4 жыл бұрын
Блин это ж супер удобно... + Смысл Инкапсуляции стал более понятный. Спасибо большое !
@stanislavafellay7822
@stanislavafellay7822 4 жыл бұрын
Отлично объясняете !! Очень подробно
@Name-s9x
@Name-s9x Ай бұрын
+
@sleepyNovember_project
@sleepyNovember_project 9 ай бұрын
О да, это удобно, это сладко
@croche3398
@croche3398 6 жыл бұрын
Как всегда на высоте! :)
@Orange_999
@Orange_999 17 күн бұрын
Легенда
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA 5 жыл бұрын
Спасибо за труды. Теперь не тупо пишу в один листинг а разбиваю.
@АлександрПасевич-п1ч
@АлександрПасевич-п1ч 3 жыл бұрын
Спасибо огромное) Как всегда выручаешь
@abakarkamalov7417
@abakarkamalov7417 5 жыл бұрын
Спасибо) Благодаря Вам понял)
@СарматПересветов
@СарматПересветов 3 жыл бұрын
Круто, очень хорошо обьясняешь, большое спасибо)
@timati231
@timati231 6 жыл бұрын
спасибо за объяснение, всё четко и понятно. Сделай пожалуйста видел про библиотеку random и принципы ее работы.
@mykhailomorhal2181
@mykhailomorhal2181 6 жыл бұрын
Спасибо)
@ЯрославГоловко-ф6и
@ЯрославГоловко-ф6и 4 жыл бұрын
спасибо
@MrBlackKinght
@MrBlackKinght 3 жыл бұрын
Во-первых спасибо за уроки они бесценны, а теперь вопрос: а нет случаем способа работать с шаблонными классами в понятии многофайлового проекта? По стандарту с++ реализацию таких классов советуют писать в самом header класса, но хотелось бы это делать в cpp. Буду очень благодарен за ответ.
@atmosphere2281
@atmosphere2281 4 ай бұрын
вместо - PrintMessage(char str[]);, нужно писать - PrintMessage(const char *str);
@brainboom5509
@brainboom5509 5 жыл бұрын
Почему у меня чтобы заработало нужно подключать .cpp файл, а не .h ?
@cppprograms5868
@cppprograms5868 4 жыл бұрын
мне кажется что вы знаете С++ лучше чем сам Страуструп. А объясняете просто как зверь. Спасибо!!1
@Face-gz4gc
@Face-gz4gc 4 жыл бұрын
Невежда, ты просто не умеешь читать.
@cppprograms5868
@cppprograms5868 4 жыл бұрын
@@Face-gz4gc почему сразу невежда?
@Face-gz4gc
@Face-gz4gc 4 жыл бұрын
@@cppprograms5868 чувак, ты сказал автора канала, который учился по тем же книгам создателей, умнее их
@cppprograms5868
@cppprograms5868 4 жыл бұрын
@@Face-gz4gc я сказал что "мне кажется". Придурок сам научись читать нормально.
@pluto2656
@pluto2656 6 жыл бұрын
следующий анонсированный урок жду больше, в свое время пришлось пострадать)
@libcurlcntrl
@libcurlcntrl 6 жыл бұрын
Спасибо за видео, Сергей. Не могли бы вы сделать урок про лексический анализ строк (например, как считать строку и разбить ее на составляющие, чтобы, например, написать калькулятор)
@КириллГусарев-р5х
@КириллГусарев-р5х 2 жыл бұрын
Если в строке будет простое выражение с одним действием типа 2*6.2, то можно заюзать регулярные выражения. Это намного проще и удобнее, чем писать огромный парсер (это уже для сложных математических выражений).
@libcurlcntrl
@libcurlcntrl 2 жыл бұрын
@@КириллГусарев-р5х Спустя четыре года я стал девопсом и поднимаю куберы, но было приятно пересмотреть ролик вновь и поностальгировать с того, с чего начинал )
@КириллГусарев-р5х
@КириллГусарев-р5х 2 жыл бұрын
@@libcurlcntrl рад за тебя) А меня пока никуда не хотят принимать
@TonyStark-b4w
@TonyStark-b4w 7 ай бұрын
@@КириллГусарев-р5х Как успехи сейчас?
@_imperial_6762
@_imperial_6762 6 жыл бұрын
У меня студия 17-го, подчеркивает строку m.PrintMasseg("Hello World!"); а если быть точным то строку которую мы передаем "Hello World!" , ругается и пишет что не может конвертировать const char[] to char[]?
@vvl6436
@vvl6436 6 жыл бұрын
Спасибо за урок, не могли бы вы сделать урок на тему, "Перегрузка операторов при полиморфизме"? , а то инфо мало. Например: есть абстрактный базовый класс, A от него B, C и при перегрузке равно B = C , результат был типа B и наооборот.
@CYBERTeamOnlineSportTV
@CYBERTeamOnlineSportTV 5 жыл бұрын
Лучший, красава дядь)
@kucer0043-Games
@kucer0043-Games 9 ай бұрын
4:20 начало
@EvgeniyL-f7e
@EvgeniyL-f7e 6 жыл бұрын
Здравствуйте! Тоже ждал подобного урока, но у меня есть вопрос на который я пока не нашел ответ или пример реализации. Как использовать в cpp файле объект класса созданный в другом cpp файле. Пример: пишу программу для устройства на микроконтроллере. Использую стороннюю библиотеку для вебсервера. В файле init.cpp создаю объект класса: WebServer server(80); В этом файле также делаю инициализацию сервера с помощью методов данного класса, например server.begin(); и т.д. А в основном файле main.cpp я использую методы для работы с сервером server.on(........); server.handleClient(); и т.д. Соответственно в main.cpp мне как-то нужно достучаться до объекта server, пробовал объявлять как extern WebServer server(80); компилятор выдает multiply definition, пробовал extern WebServer server(int port); вылазит другая ошибка. Подскажите правильный механизм. Заранее спасибо. P.S. Если создаю объект без параметров, например Websocket socket в файле init.cpp, а в main файле: extern Websocket socket; такой объект виден в main.cpp и компиляция проходит. Я так понимаю у меня ошибка в синтаксисе - extern WebServer server(int port);
@РоманКостяБелых
@РоманКостяБелых Жыл бұрын
А разве подключение сразу двух библиотек иострим не слишком затратно по памяти ?
@wotmastersclub5559
@wotmastersclub5559 Жыл бұрын
Посмотрел и расстроился 😢 Как оказывается много чего не знаю
@sleepyNovember_project
@sleepyNovember_project 9 ай бұрын
Чего расстраиваться, наоборот, если не знал, то это крутая и не сложная инфа, которую приятно узнать
@_m.k.s_8060
@_m.k.s_8060 2 жыл бұрын
Как сделать так, что бы из дополнительного .срр файла значение при вызове функции присваивалось переменной
@unclestepa
@unclestepa 2 жыл бұрын
Как включить желтые вертикальные полосы слева?
@alexeysolovjoff5241
@alexeysolovjoff5241 4 ай бұрын
Зачем в файле Sum.cpp делать include Sum.h. И без этого инклюда всё прекрасно работает.
@ДмитрийСафронов-ц6т
@ДмитрийСафронов-ц6т Жыл бұрын
Добрый день, спасибо за видео-урок все очень доступно и понятно. Подскажите, пожалуйста, как можно использовать наследование классов в многофайловом проекте?
@Get_Boros
@Get_Boros Жыл бұрын
Наследуемся от exception. Главное не забивать подключить директиву препроцессора где лежит предок class AsLesson_Exception : public exception { public: AsLesson_Exception(const char *msg, int Data_State); int Get_Data_State(); private: int Data_State; };
@Nuisho
@Nuisho 6 жыл бұрын
Лайкнул - посмотрел - раскидал по месенджерах. Что за 8-битная музычка на фоне тихонько так играет?
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Demise - Ethan Meixsell
@Alex_Railnolds
@Alex_Railnolds 4 жыл бұрын
Подскажите, возможно ли как-то сделать так, чтобы директивы препроцессора тип #define работали во всем многофайловом проекте, а не только там где они были объявлены? Ну чтобы во всех файлах происходило замещение. Например сделать отдельный файл типа конфигурационный, где через #define задать какие-то значения, а потом эти значения распространились бы на все файлы проекта.
@EJNINE
@EJNINE 4 жыл бұрын
Большое спасибо, за помощь бедным студентам))0
@Flamerman-rx5bp
@Flamerman-rx5bp 2 жыл бұрын
А структуру как записывать в эти файлы?
@BossBig-hi1ym
@BossBig-hi1ym 11 ай бұрын
лайк с двух аккаунтов)
@JohnSmith-es2fh
@JohnSmith-es2fh 3 жыл бұрын
а обязательно добавлять cpp файл? просто я делал без cpp и у меня всё было норм
@s1lentgrave
@s1lentgrave 4 жыл бұрын
А если я в другой компилятор использую Atom+ плагин gpp, я сделал тоже самое, только всё в одной папке(без папки "заголовочные файлы") у меня не находится функция из другого файла, что делать? может нужно через командную строку создать проект как-то, чтобы все нужные папки создались(например)?
@bezik572
@bezik572 2 жыл бұрын
эх... Все летит с ошибкой: Undefined symbols for architecture arm64: "Sum(int, int)", referenced from: _main in main.cpp.o... Дело не в арм, на Rosetta 2 тоже самое. Если не подключать файл в CmakeLists.txt, то ничего не работает, но так быть точно не должно
@bezik572
@bezik572 2 жыл бұрын
скорее всего .h не инициализирует cpp
@yaevgen459
@yaevgen459 2 ай бұрын
@@bezik572 спустя столько лет... нашлось решение?
@streview2254
@streview2254 4 жыл бұрын
А як створити йього без VS, в провіднику.
@Yupitrer
@Yupitrer 4 жыл бұрын
Я как раз тот случай. Начал писать ардуино умный дом на с++ и у меня 1500 строк кода. И это пизд..ц. Вот я тут
@Alexander-qr4nk
@Alexander-qr4nk 2 жыл бұрын
А 138-й урок существует?
@Sergey-mq3ol
@Sergey-mq3ol 5 жыл бұрын
cool
@johnwick8332
@johnwick8332 6 жыл бұрын
Сергей индивидуальные уроки не проводите?
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Сейчас нет.
@natalysammet656
@natalysammet656 4 жыл бұрын
Делала всё, как в видео, но почему-то среда разработки в упор не видит cpp файла с реализацией :(
@MashkaShow
@MashkaShow 4 жыл бұрын
Nataly Sammet visual studio code? Macos?
@natalysammet656
@natalysammet656 4 жыл бұрын
@@MashkaShow К счастью, я нашла решение :) Дело в том, что я занималась реализацией шаблонного класса - тогда ещё не знала, что такие классы нельзя разбивать на хидеры и cpp-шники. Теперь вот знаю
@moonrider8697
@moonrider8697 6 жыл бұрын
Кто нибудь знает что делать если при выводе строки пишет невозможно преобразовать аргумент 1 из const char[11] в char []???
@Ii_Naomasa_san
@Ii_Naomasa_san 6 жыл бұрын
Я, короч, перед char дописал const и всё заработало.
@moonrider8697
@moonrider8697 6 жыл бұрын
Evgenii Lucevich спасибо
@СправаФея
@СправаФея 6 жыл бұрын
дело в последних обновах VS2017,
@gant8511
@gant8511 6 жыл бұрын
а когда будут курсы по с#
@yidebn7536
@yidebn7536 3 жыл бұрын
кто то знает как собрать из папки с файлами внутри 1 dll?
@cashperovskygo3318
@cashperovskygo3318 5 жыл бұрын
не понятно зачем нужна 2 файла cpp и h? зачем в h писать пустую функцию а в cpp описанную?
@Buru-nyuu
@Buru-nyuu 5 жыл бұрын
В начале же объяснили всё, .h файлы чтобы не было много кода в основном файле, а вот .cpp нужно использовать чтобы избежать ошибок компоновщика(погуглите)
@fv_games
@fv_games Жыл бұрын
А как насчёт hpp
@sleepyNovember_project
@sleepyNovember_project 9 ай бұрын
А это не тот же .h?
@serhiyhrytsiuk4376
@serhiyhrytsiuk4376 6 жыл бұрын
Просто для апа
@vakhander1287
@vakhander1287 3 жыл бұрын
ЗДравствуйте, а что делать если пишет: undefined reference to `List_str::push_back(std::__cxx11::basic_string
@vakhander1287
@vakhander1287 3 жыл бұрын
Если что List_str (мой класс), push_back (метод класса) и дальше идут аргументы метода.
@WizardPlatypus
@WizardPlatypus 4 жыл бұрын
Время доброе! #вопрос : как отделить реализацию шаблонного класса от хедера? Я немножко порылся в сети, ничего дельного и красивого не обнаружил.
@Name-s9x
@Name-s9x Ай бұрын
+
@realkjasonstatham
@realkjasonstatham 2 жыл бұрын
Комментарий
@Алексей-в5н7с
@Алексей-в5н7с 6 жыл бұрын
Сергей обещаю,когда стану разработчиком,тебе задоначу половину своей первой зарплаты)
@МинутноеВидео
@МинутноеВидео 5 жыл бұрын
Ну как успехи?
@habibullohuvaidulloev3329
@habibullohuvaidulloev3329 2 жыл бұрын
так многие говорили ....
@zexis1771
@zexis1771 Жыл бұрын
Стал?
@KhzhLIVE
@KhzhLIVE 6 жыл бұрын
может сменишь уже музло)
@KhzhLIVE
@KhzhLIVE 6 жыл бұрын
приелся уже запил)
@higiro9333
@higiro9333 3 жыл бұрын
Нахуя тут так сложно придумали?? Почему нельзя по нормальному залить один файл в другой без всяких там заголовков, прототипов и тд..
@euuhgzz2791
@euuhgzz2791 4 ай бұрын
согл
@higiro9333
@higiro9333 4 ай бұрын
@@euuhgzz2791 Смысл в том, что когда объявления и реализации находятся в разных файлах, то появляется возможность не перекомпилировать весь проект при маленькой правке. То есть у тебя есть некий модуль, который используется в других модулях, если его поправить, то изменятся все модули и в больших проектах такой код можно будет час компилировать, а ты всего-то цвет кнопки хотел поменять и посмотреть че будет. 3 года прошло, понял зачем это надо было, и сейчас я занимаю крайне противоположную позицию))
@euuhgzz2791
@euuhgzz2791 4 ай бұрын
@@higiro9333 на самом деле тут проблема в организации проекта и его некоторый стиль Разбивать на разные файлы имеет смысл только при глобальном разделении модулей (проектов либ) а по поводу внешних символов - это только для статической линковки, в ней все равно код нормально не скроешь, поэтому тут только статическая заглушка и dll По хорошему надо компилировать в одной единице трансляции тк не даете раскрыться компилятору, больно долго он переаллоцирует память под новую единицу - когда есть штук 50 единиц по 2-5к строк -- это очень долго - один жирный файл быстрее соберется (Апят про внешние символы прототипов - декларация) Еще хренова что компилятор при симантическом анализе учитывает только то что выше декларации вызова, простыми словами единица не является семантически модулем -- поэтому чтоб это учитывать приходиться включать каждый раз одни и те же символы прототипов - что жрет время на синтаксическом и семантическом анализе Единственно как это можно починить - переосмыслить проект и забыть навязанные стереотипы -семантически класс является модулем Поэтому класс можно использовать как комплексный модуль со статическими методами и тд. Т.е. как неймспейс но с семантикой Получается некоторый c# и довольно удобно - реализация естественно сразу пишеться без разделения символов И потом это тупа мержить в одну единицу - скомпилируется это быстро, нет лишних символов и тд, и оптимизация будет более четкой
@Orange_999
@Orange_999 17 күн бұрын
Спасибо что объяснил ​@@higiro9333
@pudjeblechole
@pudjeblechole Жыл бұрын
Можете подсказать объяснить, почему нельзя написать определение (реализацию) функции в хедере?
@artefek7300
@artefek7300 6 ай бұрын
Можно, но скорее всего он был создан чтобы только оглашать.
@ELVIRA_JDANOVA
@ELVIRA_JDANOVA 10 ай бұрын
ЗДРАВСТВУЙТЕ УРОК 138 НЕ МОГУ НАЙТИ 137 СЛЕДОМ ИДЕТ 139 ПОСЛЕ БИБЛИОТЕК STL !
@TonyStark-b4w
@TonyStark-b4w 7 ай бұрын
он идет после 9 урока STL
@KurpatovInstagram
@KurpatovInstagram 6 жыл бұрын
Спасибо!
@mikkin329
@mikkin329 Жыл бұрын
Спасибо большое!
@DD0S2
@DD0S2 3 жыл бұрын
спасибо
ты C++ РАЗРАБОТЧИК?) ага
12:04
Winderton
Рет қаралды 245 М.
كم بصير عمركم عام ٢٠٢٥😍 #shorts #hasanandnour
00:27
hasan and nour shorts
Рет қаралды 9 МЛН
小路飞还不知道他把路飞给擦没有了 #路飞#海贼王
00:32
路飞与唐舞桐
Рет қаралды 88 МЛН
Изучение C++ в одном видео уроке за час!
1:14:33
Гоша Дударь
Рет қаралды 828 М.
1. Язык Си ДЛЯ НОВИЧКОВ. RPG игра с нуля
1:01:47
Айтишник 👩‍💻
Рет қаралды 39 М.