Dzielenie kodu na kilka plików - po co się to robi?
Ostatnio zmodyfikowano 2013-05-24 20:53
Mix Temat założony przez niniejszego użytkownika |
Dzielenie kodu na kilka plików - po co się to robi? » 2013-05-24 18:39:38 Witam, Mam takie pytanie do czego konkretnie są nam potrzebne moduły? Tworzę w tej chwili projekt na zajęcia i początkowo niewiele czytając o modułach stworzyłem po prostu pliki nagłówkowe, w których zadeklarowałem wszystkie funkcje i od razu z miejsca je zaimplementowałem. Następnie dołączając do kolejnego pliku nagłówkowego, czy do main.cpp dyrektywę #include <nazwa.h> byłem w stanie wywoływać zadeklarowane w pliku nagłówkowym funkcje. Wszystko się kompilowało. Jednak problem pojawił się, gdy doczytałem, że moduł to nie tylko plik nagłówkowy, a komplet pliku nagłówkowego z plikiem cpp. Chciałem przerobić swój program, ale wówczas się okazało, że w "pełnych" modułach nie można używać zmiennych globalnych bo są później za każdym razem od nowa deklarowane w innym module zawierającym moduł z deklaracją zmiennej i następuje "przedeklarowanie" zmiennej. Jako, że wszystko działało postanowiłem program zostawić tak jak był. Teraz dorobiłem do niego wersję okienkową, gdzie również nie miałem żadnych problemów z tym związanych. Zacząłem się jednak zastanawiać. Skoro idąc moim tokiem rozumowania wystarczy jedynie plik nagłówkowy, to po co ludzie właściwie tworzą dodatkowe pliki. No jedyne co się nasuwa na myśl to to, że coś przeoczyłem i musi być w tym jakiś konkretny cel. Czy to, że w moim programie nie mam pełnych modułów (właściwie kilka pełnych modułów jest, dla plików nagłówkowych, w których nie potrzebowałem deklaracji zmiennych globalnych), a jedynie pliki nagłówkowe może w jakimś etapie tworzenia aplikacji okazać się problematyczne? |
|
pekfos |
» 2013-05-24 18:50:50 nie można używać zmiennych globalnych bo są później za każdym razem od nowa deklarowane w innym module zawierającym moduł z deklaracją zmiennej i następuje "przedeklarowanie" zmiennej. |
Można używać, o ile się je zadeklaruje, a nie zdefiniuje. Najwyraźniej nie rozróżniasz tych dwóch pojęć. extern int zmienna; void funkcja(); struct struktura;
int zmienna; void funkcja() { } struct struktura { };
|
|
Mix Temat założony przez niniejszego użytkownika |
» 2013-05-24 20:13:19 Dzięki, to w sumie sporo zmienia, ale właściwie nadal nie wiem po co mi dwa pliki skoro to samo mogę zrobić w jednym. Ułatwia to coś? |
|
m4tx |
» 2013-05-24 20:39:57 Skoro idąc moim tokiem rozumowania wystarczy jedynie plik nagłówkowy, to po co ludzie właściwie tworzą dodatkowe pliki. No jedyne co się nasuwa na myśl to to, że coś przeoczyłem i musi być w tym jakiś konkretny cel. |
Masz na myśli "po co tworzyć pliki .cpp, skoro .h/.hpp są wystarczające"? Jeśli tak, to: |
|
Mix Temat założony przez niniejszego użytkownika |
» 2013-05-24 20:53:26 Dziękuję za dość rozbudowaną odpowiedź. To teraz zabieram się za przerabianie programu na pełne moduły |
|
« 1 » |