Pytania otagowane jako include

7
Jak mogę zapobiec piekłu nagłówka?
Rozpoczynamy nowy projekt od zera. Około ośmiu programistów, kilkanaście podsystemów, każdy z czterema lub pięcioma plikami źródłowymi. Co możemy zrobić, aby zapobiec „nagłówkowi piekła”, AKA „nagłówkom spaghetti”? Jeden nagłówek na plik źródłowy? Plus jeden na podsystem? Oddzielić typdefy, kable i wyliczenia od prototypów funkcji? Oddzielić wewnętrzny podsystem od zewnętrznych elementów …
44 c++  headers  include 

8
Czy dobrą praktyką jest poleganie na przesyłaniu nagłówków w sposób tranzytowy?
Usuwam dołączenia w projekcie C ++, nad którym pracuję, i wciąż zastanawiam się, czy powinienem jawnie dołączyć wszystkie nagłówki użyte bezpośrednio w określonym pliku, czy też powinienem zawierać tylko absolutne minimum. Oto przykład Entity.hpp: #include "RenderObject.hpp" #include "Texture.hpp" struct Entity { Texture texture; RenderObject render(); } (Załóżmy, że deklaracja przekazania …
37 c++  c  headers  include 

7
Dlaczego musimy dołączyć .h, podczas gdy wszystko działa, gdy dołączany jest tylko plik .cpp?
Dlaczego musimy dołączyć zarówno pliki, jak .hi .cpppliki, podczas gdy możemy sprawić, że będzie działać wyłącznie poprzez dołączenie .cpppliku? Na przykład: tworzenie file.hdeklaracji zawierających, następnie tworzenie file.cppdefinicji zawierających i uwzględnianie obu w main.cpp. Alternatywnie: tworzenie file.cppdeklaracji / definicji zawierających (bez prototypów), w tym main.cpp. Oba działają dla mnie. Nie widzę …
18 c++  c  headers  linking  include 

7
Zagwarantowanie, że nagłówki są wyraźnie zawarte w pliku CPP
Myślę, że ogólnie dobrą praktyką jest #includestosowanie nagłówka dla wszystkich typów używanych w pliku CPP, niezależnie od tego, co jest już zawarte w pliku HPP. Więc mogę na przykład #include <string>zarówno w HPP, jak i CPP, mimo że nadal mógłbym kompilować, jeśli pominąłem go w CPP. W ten sposób nie …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.