Podział projektu na pliki

2016-05-12 21:05
Jacek Labudda
												Do tej pory pracowaliśmy na jednym pliku źródłowym.
Nie było powodu, aby dzielić nasz program na kilka plików.
Lecz, gdy zaczniemy pracować nad większym projektem składającym się z kilku, kilkudziesięciu albo i kilkuset tysięcy linii kodu, to gnieżdżenie wszystkiego w jednym pliku byłoby bardzo niewygodne - pogubilibyśmy się.

Załączanie plików nie jest nam obce.
W poprzednich lekcjach załączaliśmy biblioteki za pomocą dyrektywy #include takie jak; iostream, Windows.h, cstring, cstdio, itd.
W taki sam sposób dołączamy odrębne pliki.
Nasze pliki będziemy umieszczali w folderze projektu, więc zamiast <...> użyjemy "..."(cudzysłowów).
Korzystamy z dwóch rodzajów plików; *.c/*.cpp oraz *.h/*.hpp.
*.c i *.h stosowane były w języku C, zaś *.cpp i *.hpp w języku C++.
Pliki te różnią się tym, że w plikach nagłówkowych *.h/*.hpp przechowywane są deklarację zmiennych, stałych, klas, funkcji struktur, itd., natomiast w plikach źródłowych *.c/*.cpp są definiowane dane oraz implementacje funkcji.

Załączanie pliku

Jeśli nie pamiętasz jak załączyć plik do projektu to zajrzyj do lekcji: Pierwszy program . Co prawda jest tam tylko ukazane tworzenie pliku *.cpp, ale plik *.hpp tworzy się w taki sam sposób, tylko w pierwszym kroku nie wybieramy C/C++ source, a wybieramy C/C++ header. Przykład plików: main.hpp
#ifndef MAIN_HPP_INCLUDED #define MAIN_HPP_INCLUDED class Klasa{ //deklaracja klasy i jej skladnikow int zmienna; public: void przypisz(int a); int wypisz(); }; #endif // MAIN_HPP_INCLUDED
main.cpp
#include <iostream> #include "main.hpp" //zalaczanie pliku naglowkowego using namespace std; //definicja funkcji void Klasa::przypisz(int a){ zmienna = a; } int Klasa::wypisz(){ cout << "zdefiniowana wartosc: " << zmienna << endl; } int main(){ //implementacja Klasa kl; kl.przypisz(1234); kl.wypisz(); return 0; }
Wynik: zdefiniowana wartosc: 1234 Pewnie zauważyłeś użycie dyrektyw w pliku main.hpp.
#ifndef MAIN_HPP_INCLUDED #define MAIN_HPP_INCLUDED //... #endif // MAIN_HPP_INCLUDED
Używa się tego w celu uniknięcia wielokrotnego deklarowania danych. W momencie, gdy projekt będzie składał się z wielu plików, będziemy załączać pliki nagłówkowe w wielu miejscach. Może przez to wystąpić zamieszanie i jeden plik nagłówkowy zostanie załączony wielokrotnie. Zwróć uwagę, że to pliki nagłówkowe są załączane w plikach źródłowych, a nie na odwrót. Jest tak dlatego, że plik *.hpp sam nie podlega kompilacji, lecz, gdy zostanie załączony do pliku *.cpp to podczas procesu kompilacji programu zawartość jego jest kopiowana do pliku *.cpp.

Użytkownicy
Logowanie:
Zaloguj
Polub nas na facebooku
Wyszukiwanie na stronie