Menu
Coddy logo textTech

Pliki źródłowe

Część sekcji Programowanie obiektowe ścieżki C w Coddy. Lekcja 3 z 61.

Do tej pory umieszczaliśmy deklaracje funkcji w plikach nagłówkowych, ale właściwy kod funkcji (definicja) znajdował się w pliku głównym. Kolejnym krokiem w programowaniu modułowym jest przeniesienie tych definicji do osobnych plików źródłowych (plików .c).

Tworzy to przejrzystą, trzyczęściową strukturę: plik nagłówkowy deklaruje funkcje, osobny plik źródłowy je definiuje, a funkcja main po prostu z nich korzysta. Wygląda to tak:

// 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;
}

Zwróć uwagę, że math_utils.c dołącza własny plik nagłówkowy. Dzięki temu definicja funkcji jest zgodna z deklaracją; jeśli nie będą zgodne, kompilator wykryje błąd. Główny plik musi jedynie dołączyć plik nagłówkowy, aby użyć funkcji; nie musi wiedzieć, jak wewnętrznie działa add.

Ten podział ukrywa szczegóły implementacji i pozwala modyfikować logikę funkcji bez ingerowania w pliki, które korzystają z tych funkcji.

challenge icon

Wyzwanie

Łatwy

Zbudujmy prostą bibliotekę matematyczną, porządkując kod w odpowiedniej strukturze trzech plików: pliku nagłówkowego z deklaracjami, pliku źródłowego z definicjami oraz pliku głównego, który z nich korzysta.

Utworzysz trzy pliki:

  • math_ops.h: Plik nagłówkowy zawierający deklaracje dwóch funkcji: multiply i subtract. Obie funkcje przyjmują dwie liczby całkowite i zwracają liczbę całkowitą. Pamiętaj o dodaniu strażników nagłówka z użyciem symbolu MATH_OPS_H.
  • math_ops.c: Plik źródłowy zawierający definicje funkcji multiply i subtract. Ten plik powinien dołączać własny plik nagłówkowy, aby deklaracje zgadzały się z definicjami.
  • main.c: Plik główny, który dołącza plik nagłówkowy i używa obu funkcji do wykonywania obliczeń.

Funkcja multiply powinna zwracać iloczyn dwóch liczb całkowitych, a subtract powinna zwracać różnicę pierwszej liczby całkowitej i drugiej.

Otrzymasz dwie liczby całkowite: a i b.

W funkcji głównej wypisz wyniki obu operacji w osobnych wierszach:

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

Na przykład dla danych wejściowych 8 i 3 wynik będzie następujący:

Product: 24
Difference: 5

Spróbuj swoich sił

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

int main() {
    int a, b;
    scanf("%d", &a);
    scanf("%d", &b);
    
    // TODO: Wywołaj funkcję multiply z a i b, zapisz wynik
    
    // TODO: Wywołaj funkcję subtract z a i b, zapisz wynik
    
    // TODO: Wypisz wyniki w formacie:
    // Iloczyn: {wynik funkcji multiply}
    // Różnica: {wynik funkcji subtract}
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C online