Skocz do zawartości

Struktura plików w projekcie


Ranmus

Rekomendowane odpowiedzi

  • Filar Społeczności

Ma ktoś jakieś materiały dotyczące prawidłowego konstruowania plików źródeł c++ w projekcie? No bo kurcze nie wiem na jakiej zasadzie jest to kompilowane. Tworzę pliki cpp, pliki nagłówkowe i teraz co i jak ze sobą połączyć by się kompilowało prawidłowo w odpowiedniej kolejności. W C# żaden preprocesor do "inkludowania" nie jest potrzebny, bo najpierw kompilator zbiera wszystkie pliki i sprawdza wszędzie deklaracje typów, a potem automatycznie wszystko wiąże i rozpoczyna program od funkcji main. Natomiast w C/C++ jak wiadomo jest inaczej. Załóżmy, że mam tak:

 

/main.cpp

/coreclass.cpp

/addonclass.cpp

/modules/module1.cpp

/modules/module2.cpp

/interfaces/interface1.cpp

/interfaces/interface2.cpp

 

Pierwszy plik zawiera glowna funkcje, coreclass i addonclass zawieraja 2 podstawowe klasy, moduly podobnie, ale klasy jako dodatki, no i odpowiednie interfejsy dziedziczone przez klasy.

 

Teraz jak mam zaprojektować linkowanie, żeby odpowiednie definicje były widoczne we wszystkich plikach. Tworzycie jeden zbiorczy nagłówkowy z definicjami wszystkich typów czy moze osobne pliki naglowkowe dla kazdego zrodla cpp? No i w jakiej kolejności zostaną skompilowane pliki cpp?

 

Wszelkie sugestie dotyczące jak najlepszego planowania struktury projektu mile widziane, ponieważ dopiero co rozpoczynam poważniejszą "przygodę" z c++. Wnerwia mnie ten język, wolałbym ten program wymodzić w C#. :/

Odnośnik do komentarza
Udostępnij na innych stronach

hmm.. w zasadzie to polega na tym ,że najpierw all jest kompilowane a następnie pliki obj są linkowane..

Najlepiej mieć jeden plik nagłówkowy a w nim wszystkie includy bibliotek zewnętrznych.. a potem strażnikiem bronić podwójnego includowania.. jeśli chodzi o klasy:

 

//klasa.h

#ifndef _klasa.h_

#define _klasa.h_

#include"MainHeader.h" //tu includujemy te glowne includy

 

class CKlasa

{

void FOO();

}

#endif

 

//klasa.cpp

#include"klasa.h"

 

void CKlasa::FOO()

{

//cos tu robimy

}

 

 

I jak potem chcesz tej klasy użyć do dziedziczenia dla innej klasy czy jako składnika.. to poprostu dodajesz to tego modułu #include"klasa.h"

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...