Menu
Coddy logo textTech

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

Часть раздела Object Oriented Programming путешествия по 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. Обе функции принимают два целых числа и возвращают целое число. Не забудьте включить защиту от повторного включения (guards), используя символ MATH_OPS_H.
  • math_ops.c: Ваш исходный файл, содержащий фактическую реализацию функций multiply и subtract. Этот файл должен включать собственный заголовочный файл, чтобы гарантировать соответствие объявлений определениям.
  • main.c: Ваш основной файл, который включает заголовочный файл и использует обе функции для выполнения вычислений.

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

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

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

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: Вызовите функцию умножения с a и b, сохраните результат
    
    // TODO: Вызовите функцию вычитания с a и b, сохраните результат
    
    // TODO: Выведите результаты в формате:
    // Product: {результат умножения}
    // Difference: {результат вычитания}
    
    return 0;
}
quiz iconПроверьте себя

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

Все уроки раздела Object Oriented Programming