Zanim wyciągniesz swoje wredne komentarze, wiem - to pytanie nooby. Po raz pierwszy używam języka opartego na C.
Jestem studentem licencjackim uczącym się Celu C na kursie informatyki na temat programowania urządzeń mobilnych. Wiem, że w środowisku akademickim wiele faktów nie jest koniecznych, ponieważ budujesz mniejsze projekty, pracujesz w mniejszych zespołach itp.
Ale nasz profesor wymaga - a XCode obsługuje - plików nagłówkowych .h dla każdego pliku implementacyjnego .m. Wydaje mi się, że to trochę zajęta praca. Muszę się upewnić, że skopiuję każdą sygnaturę metody i zmienną instancji do drugiego pliku. Jeśli zmienię jeden plik, muszę się upewnić, że jest on zgodny z drugim plikiem. Wydaje się, że to tylko garść małych irytacji.
Ale wiem, że musi być jakiś zastosowanie w świecie rzeczywistym dla nagłówka plików. Świetna odpowiedź dotyczyłaby zarówno:
- Jaki plik nagłówkowy jest przydatny do tego, że plik implementacji nie jest odpowiedni? Jaki jest jego cel?
- Dlaczego jako programiści musimy ręcznie pisać nasze pliki nagłówkowe? Wygląda na to, że można je łatwo wygenerować automatycznie.
Z góry dziękuję!
źródło
Odpowiedzi:
W skrócie;
Plik nagłówkowy definiuje API dla modułu. Jest to wykaz umów, które mogą wywoływać osoby trzecie. Moduł można uznać za czarną skrzynkę dla stron trzecich.
Implementacja implementuje moduł. To jest wnętrze czarnej skrzynki. Jako programista modułu musisz to napisać, ale jako użytkownik modułu strony trzeciej nie powinieneś wiedzieć nic o implementacji. Nagłówek powinien zawierać wszystkie potrzebne informacje.
Niektóre części pliku nagłówkowego mogą być generowane automatycznie - deklaracje metod. Wymagałoby to dodania adnotacji do implementacji, ponieważ prawdopodobnie istnieją prywatne metody implementacji, które nie stanowią części interfejsu API i nie należą do nagłówka.
Pliki nagłówkowe zawierają czasem inne informacje; definicje typów, stałe definicje itp. Należą one do pliku nagłówkowego, a nie do implementacji.
źródło
Głównym powodem nagłówka jest możliwość umieszczenia
#include
go w innym pliku, dzięki czemu można korzystać z funkcji w jednym pliku z innego pliku. Nagłówek zawiera (tylko) wystarczająco, aby móc korzystać z funkcji, a nie z samych funkcji, więc (mamy nadzieję) kompilacja jest znacznie szybsza.Utrzymanie dwóch osobno większości wyników, ponieważ nikt nie napisał edytora, który bardzo dobrze automatyzuje proces. Nie ma zbyt wielu powodów, dla których nie mogli tego zrobić, a niektórzy nawet próbowali - ale edytorzy, którzy to zrobili, nigdy nie radzili sobie dobrze na rynku, a bardziej popularni redaktorzy tego nie przyjęli.
źródło
Dołączenie nagłówka pozwala Twojemu kodowi wywoływać funkcje lub metody, które zostały napisane gdzie indziej i które mogą, ale nie muszą być częścią twojego projektu / kompilacji oprogramowania, ale które mogą być znalezione przez „linkera” podczas tworzenia oprogramowania.
Na przykład, kiedy wywołujesz funkcję w standardowej bibliotece C, nie chcesz umieszczać wszystkich wewnętrznych funkcji tej funkcji w swoim projekcie - po prostu oczekujesz, że twój program będzie mógł ją wywołać.
Ale twój kompilator musi zostać poinformowany, że funkcja istnieje gdzieś, nawet jeśli nie widzi kodu, a nagłówek to robi. Po zakończeniu kompilatora wywoływany jest linker, który próbuje „połączyć” te fragmenty kodu, które pozostały wiszące, takie jak wywołania biblioteki.
źródło
Pliki nagłówkowe służą głównie do deklarowania i dołączania podpisów (tj. Nazwy funkcji, wartości zwracanej i argumentów) funkcji w innych plikach. Kompilator musi znać te podpisy podczas kompilowania i łączenia plików.
Przeczytaj ten artykuł, aby uzyskać więcej informacji.
źródło