#42. Прототипы функций | Язык C для начинающих

Поділитися
Вставка
  • Опубліковано 12 січ 2025

КОМЕНТАРІ • 25

  • @ДмитрийСимакин-ь2л

    Как всегда на самом высшем уровне, благодарю Вас!

  • @AlexRootx
    @AlexRootx Рік тому +2

    На высоте, как обычно, лайк за работу!!!

  • @Ordinary_man2049
    @Ordinary_man2049 9 місяців тому +1

    Сергей, спасибо за Ваши уроки! Мне кажется, стоило сказать, что декларирование функций в начале позволяет нам объявлять функции после функции main. Это может быть удобно, когда надо реализовать несколько функций, ради которых не хочется создавать отдельный файл, но при этом не хочется, чтобы эти функции отсвечивали перед main.

  • @userqh67vey6
    @userqh67vey6 Рік тому +2

    gcc умеет подключать .c файлы в инклудах. Visual Studio наоборот ругается на такое, но умеет сама находить исходники в правильной папке по имени h файла.
    Другое дело, когда проект кроссплатформенный - там с помощью make файла прописываются build-ы из разных библиотеками. Или можно использовать при тестировании - поставщики данных подменять заглушками.

  • @andredru4278
    @andredru4278 Рік тому +1

    Спасибо. Огонь!

  • @РусланКарнеенко
    @РусланКарнеенко 11 місяців тому +2

    Сергей, скажите, почему в файле с условной компиляцией пишется FUNC H, если заголовочный файл называется func. h?
    И как компилятор тогда понимает, что это именно этот файл? Спасибо

    • @selfedu_rus
      @selfedu_rus  11 місяців тому +1

      вместо FUNC H можно написать любое другое имя, пишут название файла, чтобы избежать случайного дублирования имен

    • @РусланКарнеенко
      @РусланКарнеенко 11 місяців тому

      @@selfedu_rus спасибо

  • @ImyaVGoogle
    @ImyaVGoogle Рік тому +1

    Сергей, по JavaScript не планируете курс?

    • @selfedu_rus
      @selfedu_rus  Рік тому

      Уже есть на этом канале

  • @donfedor007
    @donfedor007 Рік тому +1

    Добрый день! Как не запутаться в каком файле лежит, та или иная функция. Импортов как в питоне нет. Просто при компиляции прописывается несколько файлов. Не совсем понятно

    • @selfedu_rus
      @selfedu_rus  Рік тому +1

      По названиям файлов (им следует давать осмысленные имена). Больше никак + документация по собственному проекту + комментарии в самих файлах.

    • @donfedor007
      @donfedor007 Рік тому

      @@selfedu_rus спасибо

  • @pewpewpew8613
    @pewpewpew8613 Рік тому +1

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

    • @olegkomlev
      @olegkomlev 11 місяців тому

      Совершенно верно. Просто препроцессор соединяет вместе тексты из всех файлов, поэтому необходим механизм #ifndef/#define. В некоторых современных компиляторах можно вместо этого писать #pragma once, но это более современный вариант, и он не везде поддерживается. А древний механизм #ifndef/#define - везде.
      Кроме того, среды программирования, такие как Visual Studio, отслеживают какие именно файлы с исходным текстом изменились (и даже, какие части файла изменились), чтобы не перекомпилировать всё полностью. Но, в любом случае, механизм модулей, например, в Delphi\Modula\Oberon развит лучше, там это больше, чем соединение текстов.

    • @Ordinary_man2049
      @Ordinary_man2049 9 місяців тому

      Для этого при инициализации функций и переменных можно использовать ключевое слово static

    • @pewpewpew8613
      @pewpewpew8613 9 місяців тому

      @@Ordinary_man2049 статик сделает функцию доступной только в переделах одного файла. Так что это скорее не про модульность, а что-то вроде модификатора доступа.

  • @Лилия-ы9х7ч
    @Лилия-ы9х7ч Рік тому +1

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

    • @selfedu_rus
      @selfedu_rus  Рік тому +1

      объявление функции состоит из двух частей: заголовка и тела функции (то, что в фигурных скобках, включая их); при определении прототипа записывается только заголовок, поэтому после него сразу ставится точка с запятой (требование синтаксиса), а тело не прописывается

    • @Лилия-ы9х7ч
      @Лилия-ы9х7ч Рік тому

      @@selfedu_rus Спасибо большое за ваш труд!!!

  • @Bezdarnyi_Master
    @Bezdarnyi_Master 10 місяців тому +3

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

    • @ggez-nr8oi
      @ggez-nr8oi 5 місяців тому +1

      Я не профи, но кое что расскажу когда я писал телеграмм бота на python я писал все в одном файле у меня получился код на 1500+ кода. И какая же эта была ошибка. Если мне нужно было найти функцию где я подключался к базам данных мне пришлось листать и искать функцию, ну или же просто ctrl+f и в поиске ввести имя функции, но каждый раз это делать что бы исправит что-то в функция не не. Поэтому я решил разбить код на файлы для Баз данных я сделал отдельный файл с функциями и для других вещей тоже отдельные файлы и так мне стало гораздо гораздо легче. Но в Си я тоже не понимаю зачем отдельно прописывать прототипы и реализацию, поч нельзя в отдельном заголовочном файле прописать нужные функции с их реализациями.

  • @renigat_tv9051
    @renigat_tv9051 Рік тому +2

    Давайте лаки до 100 накрутим !