Zawieranie plików nagłówkowych

Zawieranie plików nagłówkowych
Błędzący
  • Rejestracja:około 11 lat
  • Ostatnio:około 11 lat
  • Lokalizacja:Polska
  • Postów:4
0

Witam,
mam następującą sytuację: stworzyłem klasę z zestawami funkcji nazwijmy je w skrócie funkcjami. Stworzyłem kilka klas, które wykorzystują je. Następnie stworzyłem klasę główną, która zawiera klasy wcześniej stworzone. Czyli:
funkcje --> klasa A -->klasa główna
funkcje --> klasa B -->klasa główna
funkcje --> klasa C -->klasa główna

Jak uniknąć nadmiarowego zawarcia nagłówka funkcji, skoro zostanie on dostarczony z każdą klasą którą wykorzystuje klasa główna? Czy rozwiązaniem jest:

Kopiuj
#ifndef FUNKCJE_H
#define FUNKCJE_H

//deklaracja klasy funkcji
#endif

??

Ola Nordmann
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:414
0

To co podałeś powinieneś zawierać w każdym pliku nagłówkowym.


<img src="http://scontent-a-vie.xx.fbcdn.net/hphotos-ash3/1379478_311850692288742_1730250652_n.jpg" />
Geniusz zua :>
EB
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 8 lat
  • Postów:18
1

Tak, to nazywa się "header guard" sprawdza czy został już zadeklarowany taki nagłówek aby uniknąć problemu wielokrotnej deklaracji.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 10 godzin
1
Ola Nordmann napisał(a):

To co podałeś powinieneś zawierać w każdym pliku nagłówkowym.

Każdy plik nagłówkowy to powinien zawierać #pragma once, które powinno wreszcie trafić do standardu, a #ifndef/#define jako zuo powinno trafić do lamusa.

_13th_Dragon
przecież wiesz że są to pobożne życzenia, niestety.
EM
A #ifndef / #define nie spełnia swojej funkcji czy o co chodzi? Dlaczego #pragma once miałoby być lepsze? Pytam z ciekawości ;)
Azarien
define jest globalne, więc w dużym projekcie może zajść kolizja jeśli makro zawiera tylko nazwę pliku, np. FUNKCJE_H. Najlepiej byłoby dodawać GUID, a to już się robi mega brzydkie.
JU
pragma once to chyba jest specyficzne tylko dla VS, nie?
Azarien
jest specyficzne dla wszystkich. ;-)
Błędzący
  • Rejestracja:około 11 lat
  • Ostatnio:około 11 lat
  • Lokalizacja:Polska
  • Postów:4
0

Wielkie dzięki za wyjaśnienie :) W takim wypadku użyję

Kopiuj
#pragma once

:D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.