Menu
CoddyTech

Исходные файлы

Часть раздела Объектно-ориентированное программирование путешествия по C на Coddy. Урок 3 из 61.

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

Это создаёт чёткую структуру из трёх частей: заголовочный файл объявляет функции, отдельный файл исходного кода определяет их, а main просто использует их. Вот как это выглядит:

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);

#endif
// math_utils.c
#include "math_utils.h"

int add(int a, int b) {
    return a + b;
}
// main.c
#include <stdio.h>
#include "math_utils.h"

int main() {
    printf("%d\n", add(5, 3));
    return 0;
}

Обратите внимание, что math_utils.c включает собственный заголовочный файл. Это гарантирует, что определение функции соответствует объявлению: если они не совпадают, компилятор обнаружит ошибку. Основному файлу достаточно включить заголовочный файл, чтобы использовать функцию; ему не нужно знать, как add работает внутри.

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

challenge icon

Задание

Легко

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

Ты создашь три файла:

  • math_ops.h: заголовочный файл с объявлениями двух функций для операций: multiply и subtract. Обе функции принимают два целых числа и возвращают целое число. Не забудь добавить защиту от повторного включения с помощью символа MATH_OPS_H.
  • math_ops.c: исходный файл с реализациями функций multiply и subtract. В этом файле следует подключить соответствующий заголовочный файл, чтобы объявления совпадали с определениями.
  • main.c: главный файл, который подключает заголовочный файл и использует обе функции для выполнения вычислений.

Функция multiply должна возвращать произведение двух целых чисел, а subtract — результат вычитания второго целого числа из первого.

На вход будут поданы два целых числа: a и b.

В главной функции выведи результаты обеих операций, каждый на отдельной строке:

Product: {result of multiply}
Difference: {result of subtract}

Например, при входных данных 8 и 3 вывод будет таким:

Product: 24
Difference: 5

Попробуйте сами

#include <stdio.h>
#include "math_ops.h"

int main() {
    int a, b;
    scanf("%d", &a);
    scanf("%d", &b);
    
    // TODO: Вызовите функцию multiply с a и b и сохраните результат
    
    // TODO: Вызовите функцию subtract с a и b и сохраните результат
    
    // TODO: Выведите результаты в формате:
    // Произведение: {результат multiply}
    // Разность: {результат subtract}
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор C