Preprocesor: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m drobne redakcyjne: usunąłem odnośniki z tytułów sekcji, poprawki i uściślenia w definicji
m →‎Preprocesor języków C i C++: Zmiana z kodu C++ na C/C++
Linia 19:
* i inne.
 
Dyrektywy preprocesora C/C++ wykorzystuje się często do zabezpieczenia plików nagłówkowych przed wielokrotnym dołączaniem do tego samego projektu. Jeżeli treść pliku nagłówkowego <code>nazwa.hpph</code> obejmie się instrukcjami:
 
<pre>
#ifndef _NAZWA_HPP__NAZWA_H_ //* (1) */
#define _NAZWA_HPP__NAZWA_H_ //* (2) */
 
// ... treść właściwa ...(to co chcesz definiować np. struktury)
 
#endif //* (3) */
</pre>
 
to przy pierwszej próbie dołączenia pliku, kompilator najpierw sprawdzi, czy zdefiniowano stałą _NAZWA_HPP__NAZWA_H_ (może ona mieć dowolną nazwę, ten sposób jest jednak dobrym zwyczajem promowanym przez programistów) (1) - jeżeli nie, zostanie ona zdefiniowana (2) i do programu zostanie dołączona treść między (2) i (3), oznaczający koniec części dodawanej tylko przy spełnieniu warunku (1).
 
Niektóre kompilatory obsługują także następującą konstrukcję:
<pre>#pragma once</pre>
Zapobiega ona ponownemu załączeniu treści całego pliku, w którym została użyta. Metoda ta jednak nie ma oparcia w [[ISOoficjalnym C++]]standardzie. Podobnie, jak wszystkie użycia dyrektywy <code>#pragma</code>, jej ewentualna obsługa jest rozszerzeniem wprowadzonym przez dany kompilator i nie jest przenośna pomiędzy różnymi narzędziami.
 
== Preprocesor języka Clipper ==