Menu
Coddy logo textTech

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

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

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

Это создаёт чёткую структуру из трёх частей: header объявляет функции, отдельный исходный файл определяет их, а 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 включает собственный header. Это гарантирует, что определение function соответствует объявлению; если они не совпадают, компилятор обнаружит ошибку. Для использования function файлу main нужно только включить header; ему не нужно знать, как внутри работает add.

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

challenge icon

Задание

Легко

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

Вы создадите три файла:

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

Функция multiply должна возвращать product двух integers, а subtract должна возвращать first integer минус second.

Вы получите два integer-ввода: a и b.

В вашей основной функции выведите results обеих операций в отдельных строках:

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