• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kilka pytań dotyczących plików nagłówkowych

Object Storage Arubacloud
0 głosów
134 wizyt
pytanie zadane 17 listopada 2018 w C i C++ przez MAXIM7 Obywatel (1,990 p.)
Cześć, mam kilka pytań dotyczących plików nagłówkowych:

1. Czy mogę zrobić tak, że wszystkie potrzebne biblioteki np. iostream, string itp. zamieszczę w piku .h, a w pliku main zapiszę tylko #include [nazwa].h przez co będę miał dostęp do tych bibliotek bez powtarzania kodu?

2. Czym różni się #pragma once od #ifndef[nazwa]#define[nazwa] .... #endif[nazwa]? Czytałem, że to i to służy do tego, aby do pliku .cpp, w którym się odnosimy do zawartości .h, nie zostały przeniesione podwójnie np. funkcje.

3. Czy przy każdej z tych trzech dyrektyw należy dopisywać nazwę ([nazwa]) pliku? I czy [nazwa] oznacza samą nazwę pliku, czy też jej rozszerzenie .h, czyli czy mam zapisywać np. x, czy x.h.

4. Gdzie powinienem wstawiać te instrukcję #ifndef[nazwa]#define[nazwa] .... #endif[nazwa]? okej, #endif[nazwa] jako ostatnia linia w pliku .h, ale co z #ifndef[nazwa]#define[nazwa]? Czy powinny to być dwie pierwsze linie pliku .h i pomiędzy ifndef, a endif powinny się zawierać wszystkie biblioteki oraz instrukcję, czy np. biblioteki powinny być przed ifndef?

1 odpowiedź

+2 głosów
odpowiedź 17 listopada 2018 przez VirtualMember Pasjonat (15,790 p.)
wybrane 17 listopada 2018 przez MAXIM7
 
Najlepsza

1. Możesz jeśli faktycznie tego potrzebujesz, niektóre biblioteki tak robią, że z całej paczki nagłówków tworzą jakiś moduł wrzucając to do jakiegoś Stuff.h

2. #pragma once nie jest częścią standardu. Może wystąpić problem jeśli chcesz aby Twój program działał na wszystkich systemach i był kompilowalny przez wszystkie kompilatory.
Ma oczywiście swoje wady i zalety, więcej informacji jest tutaj:
https://en.wikipedia.org/wiki/Pragma_once

3. Jeśli dobrze zrozumiałem pytanie to w przypadku ifndef tak, musisz przecież wskazać na plik, o który Ci chodzi. Jeśli chodzi o #pragma once to ona wskazuje, że obecny plik źródłowy ma być includowany tylko raz w pojedynczej kompilacji, więc zamieszczasz go po prostu w obecnym pliku.

4. Tutaj więcej informacji jest już w linku, który Ci podesłałem.

 

Podobne pytania

0 głosów
1 odpowiedź 1,433 wizyt
pytanie zadane 15 września 2016 w C i C++ przez timrh Mądrala (6,030 p.)
0 głosów
2 odpowiedzi 1,299 wizyt
pytanie zadane 17 lipca 2016 w C# przez Protekton123 Użytkownik (700 p.)
0 głosów
1 odpowiedź 422 wizyt

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...