Czy jeżeli podzielę projekt na różne pliki, to czy powinienem wszystkie #include i zmienne z funkcjami zdefiniować w main.h i dołączać go do każdego innego pliku .cpp?
Plik .h
dołączaj tylko tam gdzie to potrzebne. Na małpę można to zrobić tak -- spróbuj skompilować bez #include
, a jak się nie kompiluje, to dołączaj -- ale tylko to co potrzebne...
A poza tym, nie rób jednego pliku .h
do wszystkiego. Jak już podzieliłeś projekt na wiele plików .cpp
, to zrób może do każdego plik .h
z rzeczami, które są w tym pliku...?
To tak na początek -- ćwicz, a potem poczytaj o PImpl.
na początku pliku .h masz
#ifndef __plik_h__
#define __plik_h__
#endif
Co preprocessor czyta tak:
Jeśli nie ma zadeklarowanego __plik_h_
to zadeklaruj.
Jeśli jest to pomija to czyli dwa razy nie wczytasz tych samych nagłówków.
Czyli nic się nie stanie i możesz dowoli tam includować jak leci to i tak się wykonuje w czasie kompilacji co w żadnej sposób negatywnie nie wypływa na wyjściowy kod.
Nadziany Kaczor napisał(a):
Czyli nic się nie stanie i możesz dowoli tam includować jak leci to i tak się wykonuje w czasie kompilacji co w żadnej sposób negatywnie nie wypływa na wyjściowy kod.
Trochę przesada -- "inkludowanie jak leci" może wydłużyć czas kompilacji... I oczywiście zaśmieca projekt.
W .h
wsadzasz tylko interfejsy klas (czyli nagłówki metod [i pola publiczne, których raczej nie powinno być w ogóle]) oraz to, co musi być dostępne -- pola, inline itp.
Jak ten if nie przejdzie w preprocesorze to cały plik jest pomijany, czyli nic nie robi wychodzi z niego i tyle.
Nadziany Kaczor napisał(a):
Jak ten if nie przejdzie w preprocesorze to cały plik jest pomijany, czyli nic nie robi wychodzi z niego i tyle.
Oczywiście, że tak, tylko jak jest włączany (nawet jednokrotnie!) i jest za duży to i tak opóźnia budowanie... Słyszałeś o PImpl, które jest tego najlepszym przykąłdem...?
W miarę możliwości includuj pliki h tylko w plikach cpp. To taka dobra rada :)
Czasem robi się jeden wielki plik h z innymi includami, ale to raczej w sytuacji, gdy używasz jakichś bibliotek. Czasami biblioteki są rozwalone po wielu plikach, wtedy można sobie dla wygody zrobić jeden h z dołączonymi najczęściej używanymi nagłówkami z bibliotek. Dlaczego nie stdafx? Po pierwsze porządek. Po 2. Jeśli masz kilka projektów i te projekty korzystają z tych bibliotek, to masz wtedy jeden plik h, który includujesz we wszystkich projektach.