Bajt Temat założony przez niniejszego użytkownika |
Dzielenie kodu na moduły » 2013-02-21 21:37:46 Witam Używam VC++ 2010 Express. Zawsze mój kod wyglądał tak: pisałem funkcje i wywoływałem je w main'ie. Jednak teraz chce stworzyć większy projekt: grę w Allegro. I zwracam się z pytaniem do Was: jak mam podzielić kod na poszczególne fragmenty, tak, abym w nowym pliku mógł napisać kod odpowiedzialny za sterowanie, w oddzielnym kod odpowiedzialny za wywołanie animacji itd. Wydaje mi się, że mogę to zrobić poprzez dodanie tylko nowego pliku, i później dołączenie go w #include <nazwa.h> - jednak chcę uzyskać dokładną odpowiedź. Pozdrawiam |
|
megatron |
» 2013-02-21 21:45:29 |
|
mactec |
» 2013-02-21 21:53:31 |
|
SeaMonster131 |
» 2013-02-21 21:55:52 I zamiasz znaku mniejszosci wstawiasz cudzyslow |
Wydaje mi się, że nawet gdy dasz nazwę pliku w <> to gdy kompilator nie znajdzie danego pliku w folderze MinGW, to zacznie go szukać koło plików projektu. |
|
Monika90 |
» 2013-02-21 21:58:39 Załóżmy, że chesz mieć dwa moduły, niech nazywają się main.cpp (moduł główny zawierający funkcję main) i module1.cpp. Pierwsze co musisz zrobić to dodać te dwa pliki do projektu, żeby IDE wiedziało co ma skompilować. Następnie tworzysz interfejs modułu module1, interefejs bedzie zdefiniowany w pliku nagłówkowym, powiedzmy module1.h. Ten plik dołączasz zarówno w pliku main.cpp jak i module1.cpp, za pomocą #include "module1.h" . Plik module1.h musi zawierać tzw. dozory łączenia (include guards), np.: #ifndef MODULE1_H_INCLUDED #define MODULE1_H_INCLUDED
#endif
pomiędzy tymi include guards umieszczasz deklaracje funkcji, definicje klas, itp. z tego modułu, które mają być dostępne dla innych modułów. np.: void draw( int x, int y );
a z kolei definicje funkcji, definicje funkcji składowych klas, itp. umieszczasz w pliku module1.cpp, o tak: #include "module1.h"
void draw( int x, int y ) { }
i potem w pliku main.cpp, możesz używać tego co udostępnia module1, np.: #include "module1.h"
int main() { draw( 0, 0 ); }
|
|
Bajt Temat założony przez niniejszego użytkownika |
» 2013-02-21 22:06:01 Dziękuję |
|
termistor |
» 2025-06-04 00:28:18 Dzielenie kodu na pliki jest podstawowym elementem zarządzania większymi projektami. Poniżej przedstawiam krok po kroku, jak powinno to wyglądać w praktyce. 1. Tworzenie pliku nagłówkowego (.h): Tworzysz plik np. `module1.h`, w którym deklarujesz funkcje, klasy lub zmienne, które mają być widoczne z innych modułów. Wymagane są dozory łączenia (`#ifndef`/`#define`/`#endif`), aby zapobiec podwójnemu dołączeniu. #ifndef MODULE1_H_INCLUDED #define MODULE1_H_INCLUDED
void draw(int x, int y);
#endif
2. Implementacja w pliku źródłowym (.cpp): W pliku `module1.cpp` dołączasz nagłówek i implementujesz deklaracje z nagłówka. #include "module1.h"
void draw(int x, int y) { // Implementacja funkcji }
3. Użycie w main.cpp: Dołączasz nagłówek i wywołujesz funkcje/klasy z modułu. #include "module1.h"
int main() { draw(0, 0); return 0; }
4. Konfiguracja projektu: W VC++ 2010 Express dodajesz wszystkie pliki (.cpp) do projektu. Kompilator sam je połączy. Nie musisz ręcznie edytować list kompilacji. 5. Uwaga o #include: Dla własnych plików zawsze używaj cudzysłowów (`#include "module1.h"`). Znaki `< >` są rezerwowane dla bibliotek systemowych (np. `<iostream>`). Jeśli chcesz rozdzielić np. sterowanie i animacje, powtórz powyższy schemat dla kolejnych modułów (np. `input.h`/`input.cpp`, `animation.h`/`animation.cpp`). W main.cpp dołączasz wszystkie potrzebne nagłówki. Pamiętaj: Każdy .cpp musi być w projekcie, a nagłówki muszą zawierać pełne deklaracje. Unikaj definiowania zmiennych globalnych w nagłówkach (chyba że używasz `extern`). Jeśli potrzebujesz przykładów dla Allegro, daj znać – mogę przygotować szkielet struktury. |
|
« 1 » |