Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Włączanie nagłówków

Ostatnio zmodyfikowano 2020-07-06 01:11
Autor Wiadomość
ViRuS
Temat założony przez niniejszego użytkownika
Włączanie nagłówków
» 2020-07-02 17:28:52
Cześć :)
Mam takie pewne spostrzeżenie odnośnie włączania plików nagłówkowych dyrektywą #include. Kiedy korzystamy z bibliotek bardzo często włączamy pliki z pomocą wspomnianej dyrektywy we wszystkich plikach .hpp, które ich potrzebują. W takim wypadku dochodzi bardzo szybko do niepotrzebnych powtórzeń. Czy uważacie, że jest to istotny problem i czy np. tworzenie łańcuchów powiązań typu: plik1.hpp zawiera biblioteka1.hpp biblioteka2.hpp to plik2.hpp powinien załączać plik1.hpp a nie ponownie biblioteka1.hpp i biblioteka2.hpp jeśli korzysta choć z jednego z tych modułów?. Co o tym sądzicie?
P-177268
pekfos
» 2020-07-02 17:38:29
Nagłówki są zwykle zabezpieczone przed tym i drugie dołączenie już niczego nie robi. Zobaczysz tam zwykle coś tego typu:
C/C++
#ifndef AAA
#define AAA

// .. treść nagłówka ..

#endif
Treść jest brana pod uwagę tylko gdy nie jest zdefiniowane makro AAA, a jak dołączysz plik drugi raz to już będzie zdefiniowane.
P-177269
ViRuS
Temat założony przez niniejszego użytkownika
» 2020-07-03 15:28:15
Rozumiem, ale co jeśli dołączymy do twojego pliku z przykładu np. plik Graphics.hpp, a potem w innym pliku też dołączymy Graphics.hpp. Czy to nie jest niepotrzebne powtórzenie? I nie lepiej włączyć go w jednym pliku a do drugiego włączyć ten pierwszy plik? Chodzi mi o to czy ma to jakiekolwiek znaczenie i w jakikolwiek sposób wpływa chociażby na rozmiar tych plików?
P-177270
pekfos
» 2020-07-03 16:20:02
Masz na myśli dołączanie do dwóch różnych plików cpp? Na pewno nie ma sensu dołączać jednego w drugim, a z dużym prawdopodobieństwem spowodowałoby to błąd. Potrzebujesz czegoś z nagłówka, to musisz go dołączyć. Dołączanie zbędnych nagłówków sprawi, że plik się będzie kompilować wolniej, ale to tyle. Ich zadaniem jest przede wszystkim wprowadzenie nazw, żeby kompilator wiedział o co chodzi, jak napiszesz np std::cout. Są przypadki że dołączenie nagłówka powoduje generowanie dodatkowego kodu, ale tu powtórzenia są usuwane na etapie linkowania programu do jednego pliku wynikowego, więc większy rozmiar to problem tylko dla plików pośrednich, więc w praktyce nie problem.
P-177272
ViRuS
Temat założony przez niniejszego użytkownika
» 2020-07-06 01:11:52
Dzięki. Myślę, że ta wypowiedź rozwiała moje dalsze wątpliwości.
P-177305
« 1 »
  Strona 1 z 1