Как вызвать функцию из другого файла c

Обновлено: 03.07.2024

Функция — это группа операторов, которые вместе выполняют задачу. Каждая программа на C имеет по крайней мере одну функцию main(), и все самые простые программы могут определять дополнительные функции.

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

Объявление функции сообщает компилятору об имени функции, типе возвращаемого значения и параметрах. Определение функции содержит фактическое тело функции.

Стандартная библиотека C предоставляет множество встроенных функций, которые может вызывать ваша программа. Например, strcat() для объединения двух строк, memcpy() для копирования одной ячейки памяти в другую и многие другие функции.

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

Определение функции

Общая форма определения функции на языке программирования C выглядит следующим образом:

Определение функции в программировании на C состоит из заголовка функции и тела функции. Вот все части функции —

Тип возвращаемого значения — функция может возвращать значение. return_type — это тип данных значения, которое возвращает функция. Некоторые функции выполняют нужные операции, не возвращая значения. В этом случае return_type — это ключевое слово void.

Имя функции — это фактическое имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.

Параметры — параметр подобен заполнителю. Когда функция вызывается, вы передаете значение параметру. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству параметров функции. Параметры являются необязательными; то есть функция может не содержать параметров.

Тело функции. Тело функции содержит набор операторов, определяющих, что делает функция.

Пример

Ниже приведен исходный код функции max(). Эта функция принимает два параметра num1 и num2 и возвращает максимальное значение между ними —

Объявления функций

Объявление функции сообщает компилятору об имени функции и способе ее вызова. Фактическое тело функции можно определить отдельно.

Объявление функции состоит из следующих частей —

Для определенной выше функции max() объявление функции выглядит следующим образом: -

Имена параметров не важны в объявлении функции, требуется только их тип, поэтому следующее объявление также является допустимым —

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

Вызов функции

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

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

Чтобы вызвать функцию, вам просто нужно передать необходимые параметры вместе с именем функции, и если функция возвращает значение, вы можете сохранить возвращенное значение. Например —

Мы сохранили max() вместе с main() и скомпилировали исходный код. При запуске окончательного исполняемого файла это приведет к следующему результату —

Аргументы функции

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

Формальные параметры ведут себя как другие локальные переменные внутри функции и создаются при входе в функцию и уничтожаются при выходе.

При вызове функции есть два способа передачи аргументов в функцию:

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

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

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

Вы должны экспортировать подпись int addizione(int a, int b) в заголовочный файл (например, ClasseAusiliaria.h ).

8 ответов 8

Небольшой вопрос. У меня есть файл заголовка, объявляющий метод struct +, а также соответствующий файл .c для их определения. Если этот метод принимает структуру в качестве параметра, как избежать включения файла .c в другой файл .c, где определен основной метод?

Измените файл Main.c следующим образом

Создайте ClasseAusiliaria.h следующим образом

Затем я скомпилировал и запустил ваш код и получил результат

Вы должны объявить int add(int a, int b); (обратите внимание на точку с запятой) в заголовочном файле и включите этот файл в оба файла. Включение его в Main.c сообщит компилятору, как должна вызываться функция. Включение во второй файл позволит вам проверить правильность объявления (компилятор будет жаловаться, если объявление и реализация не совпадают).

Затем вы должны скомпилировать оба файла *.c в один проект. Детали зависят от компилятора.

создайте файл classAusiliaria.h и укажите в нем подписи методов.

Теперь вместо включения файла .c включите этот файл .h.

Здесь есть много замечательных вкладов, но позвольте мне добавить свой, тем не менее.

Первое, что я заметил, это то, что вы не обещали в основном файле, что собираетесь создать функцию, известную как add(). Этот подсчет был сделан следующим образом в основном файле:

перед вашей основной функцией, таким образом, ваша основная функция распознает функцию добавления и попытается найти ее исполняемый код. Таким образом, ваши файлы должны быть

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

Здесь проблема в том, что вы должны использовать "" вместо <>, поскольку вы включаете файл, который находится в том же каталоге, в файл, в котором происходит включение. Это общее для файлов .c и .h

Вы не должны включать c-файлы в другие c-файлы. Вместо этого создайте заголовочный файл, в котором объявлена ​​функция, которую вы хотите вызвать. Вот так: файл ClasseAusiliaria.h:

В свой файл Main.c вы можете включить только что созданный заголовочный файл:

Не тот ответ, который вы ищете? Просмотрите другие вопросы с меткой c function external или задайте свой вопрос.

Связано

Связанные

Горячие вопросы о сети

Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.28.41795

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

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

Учитель предоставил нам файл temp.h и сказал, что функция large() должна быть определена в файле temp.c. Итак, теперь, когда у меня есть это, как мне получить доступ к функции из p1.c?

И будет ли переменная temp, возвращаемая в функции large(), доступна из p1.c так, как я написал?

Эта строка косвенно импортирует объявление функции, поэтому при ее компиляции она знает, что где-то должна быть функция с таким именем и сигнатурой. Это означает, что вы можете просто вызвать функцию. Используйте его в каждом файле .c, который должен использовать эту функцию (или в случае temp.c, где необходимо определить функцию).

При компиляции необходимо указать все файлы .c для компиляции, включая тот, в котором есть определение функции (функций), объявленной в temp.h. Компилятору (или, точнее, компоновщику) поручено выяснить, как собрать все это воедино.

Зарегистрированный пользователь Дата регистрации: январь 2002 г. Местоположение: Северная Вирджиния/Вашингтон, округ Колумбия, агломерация Сообщений: 3817

Первоначальное сообщение от cashmerelc

И будет ли переменная temp, возвращаемая в функции large(), доступна из p1.c так, как я написал?

Вы вообще не используете возвращаемое значение в исходном файле P1.C. Вам нужно будет присвоить возвращаемое значение из вызова функции одной из ваших переменных, чтобы использовать ее каким-то образом.

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


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

передача аргумента 1 из `fgets' делает указатель целым без приведения

Пользователь собирается вводить целые числа, по одному, за каждым из которых следует возврат, поэтому я пытаюсь использовать fgets, чтобы поместить каждое целое число в один и тот же массив в соответствующих элементах, и вот что у меня есть.

Зарегистрированный пользователь Дата регистрации: январь 2002 г. Местоположение: Северная Вирджиния/Вашингтон, округ Колумбия, агломерация Сообщений: 3817

input[i] — это char (целочисленный тип), но функция fgets принимает указатель для первого аргумента, ошибка говорит о том, что вы пытаетесь для преобразования/использования целочисленного значения, хранящегося в input[i], в качестве указателя, когда это не так, и предлагает вам, возможно, вы захотите использовать приведение (которое вы не делаете в этом случае ), который подавлял бы это предупреждение/ошибку. fgets, возможно, не подходит для ввода данных, поскольку вам все равно придется преобразовывать текст, введенный пользователем, в числовое/целочисленное значение, возможно, с помощью sscanf перед сохранением в массиве input. Мне пришло в голову, что ваш массив, вероятно, должен быть массивом целых чисел, а не char, учитывая то, что происходит.

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

Внешние переменные также называются глобальными переменными. Эти переменные определены вне функции. Эти переменные доступны глобально во время выполнения функции. Значение глобальных переменных может быть изменено функциями. Ключевое слово «extern» используется для объявления и определения внешних переменных.

Как вызвать функцию из другого файла в C++?

Каков правильный порядок шагов компиляции C?

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

Как вызвать функцию из файла external.c в C?

Вместо этого создайте файл заголовка, в котором объявлена ​​функция, которую вы хотите вызвать. Вот так: файл ClasseAusiliaria.h: int addizione (int a, int b); // это сообщает компилятору, что определена функция, и компоновщик отсортирует правильный адрес для вызова.

Есть ли в C такая вещь, как внешняя функция?

Есть такая вещь, как extern "C" в C++, но это совсем другое дело. В программе на C++ функции объявляются как функции, не возвращающие значения и не принимающие аргументов. В программе C функции объявляются как функции, не возвращающие значения и принимающие неопределенный, но не переменный список аргументов.

Можно ли включить функцию в файл A.C?

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

Когда использовать ключевое слово extern в C?

при использовании из C++. [Почти] никогда не нужно использовать ключевое слово extern при объявлении функции ни в C, ни в C++. В C и C++ все функции по умолчанию имеют внешнюю связь.

Как открыть файл в функции?

Чтобы открыть файл, вам нужно использовать функцию fopen, которая возвращает указатель FILE. Открыв файл, вы можете использовать указатель FILE, чтобы позволить компилятору выполнять функции ввода и вывода в файле. ФАЙЛ * fopen (const char *filename, const char *mode);

Как мне использовать функцию одного файла C в другом?

Как отправить файл C?

Просто прикрепите файл . Если вы не можете этого сделать, отредактируйте имя файла с расширением . txt, прикрепите и отправьте.

Как вызвать функцию из другого файла c?

Как вызвать функцию C++ из c?

C++ обратно совместим, но C несовместим вперед. экспортируйте свои функции C++ как extern «C» (также известные как символы стиля C) или используйте формат файла .def для определения недекорированных символов экспорта для компоновщика C++ при создании библиотеки C++, тогда у компоновщика C не должно возникнуть проблем с ее чтением< /p>

Когда вам нужно объявить функцию в C?

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

Как мне вызвать функцию C++ из C?

Просто объявите функцию C++ extern "C" (в коде C++) и вызовите ее (из кода C или C++). Например: // Код C++: extern «C» void f(int);… Теперь C::f() можно использовать следующим образом:

  1. /* Код C: */
  2. двойной call_C_f(struct C* p, int i);
  3. void ccc(struct C* p, int i)
  4. двойной d = call_C_f(p,i);
  5. /* */
  6. >

Что такое заголовочный файл C?

C — заголовочные файлы Заголовочный файл — это файл с расширением .h, который содержит объявления функций C и определения макросов, предназначенные для совместного использования несколькими исходными файлами. Существует два типа файлов заголовков: файлы, которые пишет программист, и файлы, поставляемые с вашим компилятором.

Что такое файл .h в C?

Совместимы ли C и C++?

С++ написан на C?

Стандартная библиотека C++ написана на C++, поскольку большая часть ее реализации использует шаблоны. Обычно стандартная библиотека C написана в основном на C, а стандартная библиотека C++ — на C++.

Как вызвать функцию из другого заголовочного файла в C++?

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

Когда включать заголовочный файл в функцию?

Как создать заголовочный файл в программе на C?

Как и в случае с заголовочным файлом util.h, который мы создали, файл stdio.h уже присутствует в каталоге gcc. Вы можете использовать команду, чтобы найти все местоположения файлов заголовков, включенных в вашу программу. Таким образом, обе функции printf() и sumOfTwoNumbers() определены в удаленном файле.

Как вызвать внешнюю функцию в C++?

Просто объявите функцию C++ extern "C" (в коде C++) и вызовите ее (из кода C или C++). Например: // Код C++: extern «C» void f(int);

Можете ли вы вызвать функцию в C?

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

Что такое внешняя функция в C++?

Когда использовать extern в C/C++ Внешние переменные также называются глобальными переменными. Ключевое слово «extern» используется для объявления и определения внешних переменных. Ключевое слово [extern «C»] используется для объявления функций на C++, которые реализованы и скомпилированы на языке C. Он использует библиотеки C на языке C++.

Кто вызывает основную функцию в C?

операционная система
В ‘C’ «основная» функция вызывается операционной системой, когда пользователь запускает программу, и она обрабатывается так же, как и любая другая функция, она имеет возвращаемый тип. Хотя вы можете вызвать функцию main() внутри себя, и это называется рекурсией.

Как вызвать внешнюю функцию C/C++?

Имя внешней функции C/C++ для вызова. Разделенный запятыми список входных аргументов в том порядке, в котором требует cfun_name. Вы не можете использовать coder.ceval для функций, которые вы объявляете внешними с помощью coder.extrinsic. Когда компилятор LCC создает библиотеку, он добавляет начальное подчеркивание к именам библиотечных функций.

Как вызвать функцию из внешнего файла c в C?

Включение во второй файл позволит вам проверить правильность объявления (компилятор будет жаловаться, если объявление и реализация не совпадают). Затем вы должны скомпилировать оба файла *.c в один проект. Детали зависят от компилятора.

Как вызвать внешнюю функцию в MATLAB?

Вызов внешней функции C. Вызовите функцию C foo(u) из функции MATLAB, из которой вы собираетесь сгенерировать код C. Создайте заголовочный файл C foo.h для функции foo, которая принимает два входных параметра типа double и возвращает значение типа double. двойной foo(двойной вход1, двойной вход2); Напишите C-функцию foo.c.

Что такое «внешняя» функция в C?

Например: примененное к объявлению функции ключевое слово extern фактически ничего не делает: объявление extern int incr (int) точно такое же, как int incr (int) . Это связано с тем, что ко всем объявлениям функций применяется неявный extern!

Как вызвать одну функцию из другой функции в C?

Функция main всегда действует как функция-драйвер и вызывает другие функции. Мы также можем записать вызов функции в качестве параметра функции. В приведенном ниже коде сначала оценивается add(num1, num2), пусть результатом этого будет r1. Вычисляется add(r1, num3).

Как вызвать функцию из другого файла в CPP?

Можем ли мы включить файл C в другой файл C?

Да, любой ‘. c’ может быть включен в другую программу. Как один включает ‘. h’, например ‘stdio.

Что означает неопределенная ссылка в C++?

Ошибка «Неопределенная ссылка» возникает, когда у нас есть ссылка на имя объекта (класс, функция, переменная и т. д.) в нашей программе, и компоновщик не может найти его определение, когда пытается найти его во всех связанных объектах. файлы и библиотеки.

Можно ли определить функцию в файле A.C?

Вы не вызываете файл .c напрямую. Если у вас есть функции, определенные во внешнем файле, вы создаете файл заголовка, содержащий прототип функции. Этот заголовочный файл включается в любой файл, использующий функцию (и в файл .c, определяющий функцию).

Как вызвать функцию из другого файла Python?

Поскольку у нас есть файл Python, нам нужно вызвать в нем функцию, определенную в любом другом файле Python. Предположим, есть файл test.py, который содержит определение функции displayText(). print("Гики 4 гика!")

Как вызвать функцию из другого файла в GCC?

Если это не так (если n def), то сначала определяется «ADD_H» (в этом контексте ADD_H не нужно определять как что-либо, это просто логическое значение, которое либо определено, либо нет), и затем определяет остальное содержимое заголовка.

Как вы вызываете функцию в блоках кода?

  1. В Codeblocks выберите «Файл» -> «Создать» -> «Проект».
  2. Выберите консольное приложение. Далее.
  3. Выберите язык C. Далее.
  4. Выберите путь к названию проекта и т. д. Далее.
  5. Компилятор должен быть GCC, не трогайте никакие настройки. Готово.
  6. В окне проекта добавьте в проект соответствующие файлы. Вы уже получили основной.
  7. Создать и запустить.
  8. Вывод: Результат = 8.

Что такое консольное приложение в Code::Blocks?

В языке программирования C консольное приложение — это приложение, работающее в текстовом режиме в окне терминала. Несмотря на то, что интегрированная среда разработки способна на большее, это лучший способ научить базовым понятиям программирования, не перегружая вас большой, сложной графической программой.

Как создать код в Code::Blocks?

Чтобы запустить текущий проект, выберите «Сборка» → «Выполнить» в меню. Вы видите, что появляется окно терминала, в котором перечислены выходные данные программы, а также лишний текст. Нажмите клавишу Enter, чтобы закрыть окно командной строки. А теперь коротко: вы можете собрать и запустить проект с помощью одной команды: выберите «Сборка» → «Сборка и запуск».

Что такое статическая функция в C?

Статическая функция в C — это функция, область действия которой ограничена ее объектным файлом. Это означает, что статическая функция видна только в своем объектном файле. Функцию можно объявить статической, поместив ключевое слово static перед именем функции.

Нужно ли создавать объект для вызова метода?

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

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

Как вызвать метод одного класса Cs в другом классе CS?

<р>1. если ваш класс находится в dll, укажите ссылку на dll в файле решения. 2. используйте «используя ;» в заголовок вашего класса. 3. вызовите метод, используя псевдоним или с classname.methodName, если метод статический. Никакого класса нет в dll. Он был загружен с ftp-сервера, и решение было построено. Пожалуйста, зарегистрируйтесь или войдите, чтобы проголосовать.

Вызов функции в другом файле не работает

картинка дфанслера

Я использую init.c для инициализации всех различных аппаратных элементов (USART, таймеров, прерываний, GPIO и т. д.). В идеале я создаю файл для каждого элемента оборудования (USART0-3.c, Timers.c, Int.c) и вызываю функции инициализации из каждого из файлов оборудования (USART_Initialize(), Timers_Initialize(), Init_Initalize()).

Некоторые функции инициализации компилируются при вызове из init.c — USART_init() работает с файлом USART0-3.c, а tc_init() не работает с файлом Timer.c.

Вызовы прерывания для другого оборудования не работают из файлов оборудования и должны быть помещены в init.c, чтобы они работали.

Сообщается об ошибке: "неопределенная ссылка на 'tc_init'", а для прерывания - "неопределенная ссылка на 'usart0_int_handler'".

Мы будем признательны за любое понимание этой проблемы!

Возможно, вы найдете это полезным, я так и сделал.

Изображение дфанслера

Привет, Джим. Спасибо за совет. Прочитал статью, только там речь идет о makefile, который, насколько я понимаю, gcc-Atmel Studio 7 не использует по умолчанию. Похоже, что все файлы должны быть добавлены как существующие файлы - как и мои - все равно не повезло с неопределенными ошибками.


куртвм

картинка curtvm

Основная идея, о которой следует помнить, заключается в том, что вы компилируете один исходный файл (обычно это файл .c, но компилятор не заботится об именах). Обычно вы компилируете более 1 исходного файла, но компилятор заинтересован только в 1 (за раз) и не беспокоится об остальных 99 (это 99 отдельных "компилируемых").

Поскольку компилятор понятия не имеет о других 99 исходных файлах, ему нужен какой-то способ использовать функции/переменные из других файлов, поэтому вы говорите ему, что someFunc будет существовать, и это выглядит как 'void someFunc(void) '. Компилятор поверит вам и будет счастлив (он знает название и как им пользоваться).

Компоновщик должен собрать все это воедино, поэтому, если вы солгали компилятору и 'someFunc' отсутствует, как вы сказали, компоновщик будет жаловаться (неопределенная ссылка. ).

Итак, в конечном итоге ваша задача состоит в том, чтобы просто скомпилировать один исходный файл, и в идеале исходный файл содержит только необходимую информацию. То же самое для каждого исходного файла. Если вы сможете удержать эту идею в памяти, то сможете понять, как упорядочивать файлы/заголовки.

// timers.h - для тех, кто хочет использовать функции/переменные из timers.c, включите этот файл

void Timers_Initialize(); //это единственное, что мы

extern bool isTimersInit; //позволить другим узнать о том, что находится в файле timers.c

// timers.c

//поэтому, если мы изменим заголовок (больше не требуется логическое значение), здесь все будет в порядке

bool isTimersInit; //var, о котором мы рассказали другим

static bool inProgress; //локальная переменная, о которой знаем только мы

// init.h - для тех, кто хочет использовать функции/переменные из init.c, включите этот файл

нулевая инициализация(); //это все, что им нужно знать

// init.c

нулевая инициализация()

// main.c

инициировать();

Обратите внимание, что каждому исходному файлу предоставляется только то, что необходимо для компиляции. Timers.c в основном не нуждается ни в чем внешнем, init.c должен знать о переменной и функции в timers.c, а main.c просто должен знать об init в init.c. Каждый файл компилируется индивидуально, и когда каждый файл компилируется без ошибок, компоновщик может «добавить» их все вместе. Если вы забыли добавить init.c в список компиляции, вы получите ошибку «неопределенная ссылка на init», поскольку вы солгали компилятору в main.c (функции инициализации нет, так как вы не компилировали init.c) .

// main.c

нулевая инициализация();

инициировать();

// timers.c

void Timers_Initialize();

extern bool isTimersInit;

bool isTimersInit;

static bool inProgress;

// init.c

нулевая инициализация();

void Timers_Initialize();

extern bool isTimersInit;

нулевая инициализация()

Теперь вы можете видеть, что каждый исходный файл не зависит от других исходных файлов для компиляции. Например, если бы у нас не было заголовка init.h, вы могли бы видеть, что простого объявления 'void init()' было бы достаточно, чтобы использовать init в init.c (при условии, что init не был статическим/локальным символом, препятствующим другим с помощью).

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

Читайте также: