Программирование на языке C. Урок 23. Настройка VSС для языков C и C++. Через JSON. Вариант 2

Поделиться
HTML-код
  • Опубликовано: 18 фев 2022
  • Устанавливаем последнюю версию компилятора GCC 11.2 (MinGW), настраиваем его работу совместно с Visual Studio Code. Проверяем работоспособность рабочего места на Visual Studio Code через task.json.
    Скачать GCC:
    для Linux:
    ftp.gnu.org/gnu/gcc/gcc-11.2....
    для Windows:
    cloud.mail.ru/public/rcEU/vGn...
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
    / @nrelectronics
    или через Яндекс-деньги:
    money.yandex.ru/to/4100115727...
    А также переводом по номеру карты:
    4377-7237-6190-5714

Комментарии • 37

  • @ghebodne2644
    @ghebodne2644 2 года назад +1

    О, повезло, повезло, спасибо

  • @alexsanderalexsander7060
    @alexsanderalexsander7060 2 года назад

    Здравствуйте .А может вместо "getch();" нужно вписать "_getch();" ? VisualStudio тоже ругается . Хотя , на каком-то компиляторе и "getch();" без нижнего подчёркивания работало

    • @NRelectronics
      @NRelectronics  2 года назад

      Это на откупе компилятора. В VSC на GCC 11.2 работает как в ролике. Можете поэкспериментировать и отписаться сюда 😉

  • @user-or2zx9bj5g
    @user-or2zx9bj5g 2 года назад

    Огромнейшее спасибо за данное видео. Попробовал все заработало. Причем если создаешь еще один файл в этой папке то второй task.json для него создавать не надо. Данное видео ответило более полно, чем переписка и то видео, что я Вам сбрасывал. Вот только если пишешь кириллицей в printf(), в командной строке вылазит абракадабра, скажите пожалуйста это можно как то победить? И второй вопрос после разархивирования файла gcc-11.2... как его запустить я не совсем понял, какой файл в папке активирует окно установки?

    • @NRelectronics
      @NRelectronics  2 года назад

      С абракадаброй нужно бороться путём измения кодировки файла на cp1251 или ещё на какой, честно быстрее на английском написать и не заморачиваться.
      А, я понял. Первая ссылка больше под линукс подходит. Скачайте пожалуйста с облака, со второй ссылки, там один файлик - gcc11. 2.exe - и его просто запустить двойным кликом.

    • @user-or2zx9bj5g
      @user-or2zx9bj5g 2 года назад

      @@NRelectronics Спасибо, будем совершенствовать английский.

    • @NRelectronics
      @NRelectronics  2 года назад

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

    • @user-or2zx9bj5g
      @user-or2zx9bj5g 2 года назад

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

    • @NRelectronics
      @NRelectronics  2 года назад

      Вот правильно. Чтоб молодые шли к языку всё-же.

  • @user-vb4pj2so5o
    @user-vb4pj2so5o 2 года назад +2

    А можно для STM или ESP настроить. И дебаг настроить. Есть варианты?

    • @NRelectronics
      @NRelectronics  2 года назад +1

      И для них тоже можно настроить. Дебаг в стм32 работаете, для esp у меня отладчика нет проверить...

    • @NRelectronics
      @NRelectronics  2 года назад +1

      @@iwh1te340 для stm32 лучше тогда уже Keil.

    • @NRelectronics
      @NRelectronics  2 года назад

      Тоже верно говорите конечно. Если вдруг используете семейства F0, L0, G0 - то можете кодить вплоть до 256кБ абсолютно бесплатно 😉 У меня есть видео на эту тему в плейлисте Keil'a.

    • @NRelectronics
      @NRelectronics  2 года назад

      Тогда только лицензия или ещё что-то...

    • @NRelectronics
      @NRelectronics  2 года назад

      я выбираю удобство отладчика и пользу компилятора кейла

  • @maksdav9
    @maksdav9 Год назад

    Здравствуйте, а можно надеяться на то, что в уроки ещё будут включены структуры? Хотелось бы узнать об их особенностях (объявление, инициализация, передача в метод, инициализация в другом методе), как правильно их использовать в соответствии с CERT или MISRA. А то на практике столкнулся со странным их поведением, хочется понять, почему так происходит.

    • @NRelectronics
      @NRelectronics  Год назад +1

      Здравствуйте. Возможно да, раскачаться надо)))

    • @maksdav9
      @maksdav9 Год назад

      ​@@NRelectronics, если не затруднит, можете ответить на вопрос, а то задачка "горит")) Собственно сама задачка:
      Есть структура, которая в процессе работы контроллера должна хранить настройки GSM модема. Она включает в себя некоторые свои параметры и структуру параметров порта UART. Структура модема "ModemCFG modem;" объявляется глобально в main.c файле. Инициализация структуры проходит в другом файле modem.с данными, полученными из файла конфигурации, при этом в файле modem.c объявлен указатель на структуру модема "ModemCFG *modem;", чтобы в дальнейшем обращаться к функциям модема, без передачи параметра структуры.
      При инициализации структуры, я вызываю метод init_modem(&modem); в который передаю указатель на структуру. В функции присваиваю указатель переданной структуры объявленному "ModemCFG *modem;" и затем пытаюсь что-то присвоить элементам структуры - программа крошится с ошибкой (Guru Meditation Error: Core 1 panic'ed (LoadProhibited)). Скорее всего попытка доступа в недоступную память структуры, т.е. структура ни имеет выделенной памяти.
      Какой вообще принцип реализации поставленной задачи правильнее? Может есть у вас какие похожие примеры?

    • @maksdav9
      @maksdav9 Год назад

      кстати, после объявления статической переменной указателя на структуру "static ModemCFG *modem;" ошибка пропадает и программа выполняется дальше. Почему?

  • @AndySm1973
    @AndySm1973 2 года назад +1

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

    • @NRelectronics
      @NRelectronics  2 года назад

      С одного к другому чего?
      Показываю варианты настроек и немного работу в бесплатном VSC

  • @robingood3156
    @robingood3156 2 года назад

    Да, все хорошо, но вес main.exe в 100 КБ меня очень смущает.

    • @NRelectronics
      @NRelectronics  2 года назад

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

    • @robingood3156
      @robingood3156 2 года назад

      @@NRelectronics ну просто Я когда из терминала винды компилировал с флагом -,s то получал 44кб.
      В случае с c++ я без флагов получил 19 мб на привет мир.
      Каким образом можно победить эту болячку.

    • @robingood3156
      @robingood3156 2 года назад

      У меня программа для друга на c# для работы с базой данных, с интерфейсом весила 143 КБ.

    • @robingood3156
      @robingood3156 2 года назад

      @@NRelectronics я поковырялся в настройках и смог сбить вес до 20 кб

    • @AlexRootx
      @AlexRootx 2 года назад

      Библиотеки, типа stdio увеличивают размер исполняемого файла.... Также это похоже дебаг-версия экзешника, в которую тянутся также отладочные символы

  • @greg7282
    @greg7282 2 года назад

    Если проект будет состоять из нескольких файлов, то уже не все так будет выглядеть радужно. Придется освоить и докрутить к vscode cmake + ninja (или make). Причем плагин microsoft для cpp прекрасно понимает cmakelists.txt

    • @NRelectronics
      @NRelectronics  2 года назад

      По идее да. Мейк и симейк также докручивается не сильно сложно.